当前位置: 首页 > 科技观察

八款免费的开发安全测试工具

时间:2023-03-21 15:16:49 科技观察

所谓“左移开发安全”,就是在开发过程的各个阶段都考虑到安全问题,开发者对软件安全承担更多的责任。很多开发者认为考虑软件安全只会增加他们的工作量,但实际上,安全能力是研发工作中的锦上添花,比如可以帮助他们节省大量修复bug的时间。几乎不可能用单一产品修复所有应用程序安全漏洞。开发安全需要在开发的每个阶段实施不同的防御措施,层层落实。开发安全工具一般包括:SAST-静态应用安全测试DAST-动态应用安全测试IAST-交互式应用安全测试RASP-runtime应用自保护依赖安全扫描SecretsDetection(机密信息检测)漏洞越早修复越简单越可能,成本越低,但也不太可能在开发的早期阶段就发现所有的bug。安全应该贯穿于软件开发生命周期的全过程。纵轴:维修费用;横轴:软件开发生命周期SAST静态应用安全测试,又称“白盒测试”,是最常见也是最早的自动化应用安全测试,通过扫描源代码来发现代码测试中的已知漏洞。市场上有许多SAST工具。在决定使用某个工具之前,需要评估该工具的支持和维护情况,是否适合自己的技术栈。这里推荐一些免费的SAST工具。1.NodeJsScanNodeJsScan有一个命令行界面,可以方便地与DevSecOpsCI/CD管道集成,并生成JSON格式的扫描结果。每种语言都有一个配置文件,可以修改该文件以进行自定义检索。文件概览和整个代码库可以通过统计数据和饼图可视化。它还检测缓冲区溢出漏洞和针对Java的前10个OWASP漏洞。2.SonarQubeSonarQube被誉为“最好的免费自动化代码审计工具之一”。拥有数千条自动化静态代码分析规则,支持27种开发语言,可以很好地覆盖整个开发项目的开发。DASTDAST,动态应用安全测试,又称“黑盒测试”,不像SAST那样从源代码中发现漏洞,而是在应用运行时通过注入故障的方式进行安全测试。DAST可以发现常见的安全漏洞,例如SQL注入和跨站点脚本,并识别应用程序运行时的安全风险,例如身份验证和服务器配置问题,以及可能只有在已知用户登录时才能发现的安全问题。3.OWASPZAPOWASPZAP是一个非常全面的开源DAST工具。它不仅可以自动进行泄漏扫描,还可以辅助测试人员完成Web应用渗透测试。ZAP的漏洞库也很丰富。IASTIAST,交互式应用程序安全测试,有时也称为“灰盒测试”,是一种结合了SAST和DAST的检测技术,一般以代理的形式出现在测试环境中(例如,针对Java虚拟机或.NETCLRstaking技术)监控操作和攻击以发现风险点。4.ContrastSecurity——CommunityContrast也是一款号称“开发者至上”的产品,可以更深入的发现漏洞。应用程序运行时的上下文信息对其他SAST和DAST工具完全不可见,例如控制器、业务逻辑、数据层、视图、用户库、开源组件和应用程序服务器。RASPRASP,运行时应用程序自我保护,一般部署在某台服务器上,在应用程序运行时开始工作,可以实时检测目标应用程序中的攻击活动。一旦应用程序开始运行,RASP将分析应用程序的行为和上下文信息,以防止恶意输入或恶意行为的发生。通过对应用行为的持续监控,可以在无人干预的情况下及时发现并修复攻击活动。5、SqreenSqreen的RASP通过完整的请求执行上下文信息,可以发现应用上线后的漏洞利用和攻击活动,涵盖了SQL注入、XSS、SSRF等OWASP的十大安全漏洞。其优势在于能够根据请求的执行逻辑拦截攻击,误报率远低于其他解决方案。Sqreen还可以自动适配不同的应用技术栈,无需重新部署或配置。依赖安全扫描(DependencyScanning)可以检测应用开发和测试过程中依赖的安全漏洞,例如正在使用的外部(开源)依赖库是否存在风险。6.Snyk据说Snyk也是一家以开发者为主的企业,为开发者提供一些开源的解决方案。Snyk附带了许多更好的功能,例如能够检测IDE中的漏洞、扫描本地git测试存储库中的项目等等。Snyk有一个安全网关,可以防止新的漏洞通过构建过程进入开发环境,还有一个生产环境,用于测试运行环境是否存在暴露的风险点。7.GitHub的WhiteSourceBoltWhitesource和Snyk一样,有一些免费的开发者工具。WhiteSourceBoltforGitHub是一款免费应用,可以持续扫描自有和公共存储库,检测开源组件中的漏洞并提供修复建议,支持200多种编程语言,可以像美国国家安全漏洞数据库NVD一样持续追踪多个开源漏洞存储库。SecretsDetection(机密信息检测)API密钥、数据库凭证、安全证书等是一个组织的机密信息(秘密)。有了这些东西,您就可以访问许多敏感系统。因此,需要秘密检测等技术进行保护。秘密检测可以扫描源代码、日志和其他文件以发现隐藏的秘密。这是一项技术要求很高的专业服务,因为绝大部分秘密都是以随机字符串的形式存储的,而很多随机字符串并不是机密信息,所以需要分类算法对机密信息进行高精度检测。很多人可能会将秘密检测与SAST混淆,因为两者都是扫描源代码的技术。但SAST只扫描目标应用程序的当前版本,而秘密检测则检测项目的所有开发版本。像git这样的版本控制系统跟踪并存储对项目的所有更改。如果之前版本的源代码中有硬编码的机密信息,后期删除了,代码审计和SAST工具就无法发现这个问题,留在git仓库中容易被恶意利用。所以秘密检测成为一个独立的门类。8.GitGuardianGitGuardian可以通过扫描开发者仓库持续发现机密信息,涵盖300多种不同的机密类型,从密钥到数据库连接字符串、SSL证书、用户名和密码,通过复杂的模型匹配等算法技术进行检测。GitGuardian可以与GitHub帐户集成,并且可以在几分钟内完成配置。开发人员可以通过GitGuardianAPI检测目录、邮件客户端或Slack通道等服务中的机密信息。综上所述,眼花缭乱的解决方案容易让人难以取舍。一个重要的标准是思考这个工具是否能适应当前的工作流程。上述开源工具只能提供最基本的保障,实际操作过程中还需要更多功能更丰富的商业软件和解决方案。确保应用程序的安全是开发人员拥有的最有价值的技能之一,虽然将安全“左移”似乎是一项艰巨的任务,但在整个开发生命周期中整合安全测试系统无疑是一项值得的任务。投资。