事实上, 早在20世纪60年代和70年代,人们就开始讨论这些问题, 当军事和航空航天软件和应用需要的时候 彻底检查了漏洞 外国对手可能会利用的地方. 而应用程序安全性测试从那时起已经走过了很长的一段路,并且安全性在软件开发生命周期中已经变得更加紧密, 潜在的担忧仍然存在.
以解决这些问题, 开发团队需要对他们的软件进行一系列严格的安全测试,以确定常见攻击的易感性,然后在应用程序向更广泛的用户基础发布之前实现修复或缓解控制,以防止此类攻击.
静态应用程序安全性测试
开发人员使用的第一种测试形式是通过使用静态应用程序安全测试(SAST)工具来审查源代码. 这些工具评估应用程序的源代码或可执行文件(已编译的二进制文件)形式,以识别可能由于糟糕的编码实践或开发过程中的疏忽而出现的安全缺陷.
1978年发行的Lint是 最早的SAST工具之一. 在第二年作为实用程序添加到Unix操作系统之后, 几十年来,Lint一直是领先的解决方案之一. 目前, 数百种不同的商业和开源解决方案可以用于各种各样的语言和用例. 开放Web应用程序安全项目(OWASP)基金会已经编译了一个 列表 其中的一些解决方案.SAST工具被认为是一种开箱式安全测试, 这意味着测试的重点是软件的设计和结构,而不是软件的功能. 因为这个原因, 开箱测试通常由对软件非常熟悉的个人进行, 比如软件开发人员.
SAST工具是有益的,因为它们可以集成到开发过程的早期阶段, 它们不需要一个功能齐全的应用程序, 它们可以与许多编程语言一起工作(尽管特定于语言的工具可能会产生更高质量的结果). 另外, SAST工具通常可以嵌入到集成开发环境中,以促进持续测试和接近实时的反馈,这些反馈可用于教育开发人员关于安全编码实践的知识. SAST工具还可以有效地识别漏洞, 比如输入验证, 整数溢出或数字错误, 竞态条件, 不正确的指针和引用, 以及其他可以在开发生命周期早期解决的问题.
然而,SAST也有其不足之处. 第一个, SAST工具倾向于识别大量的假阳性和不存在显著风险的琐碎问题. 经常, 大量的误报和错误分类的风险是由于SAST工具缺乏上下文知识和广泛的假设,而这些是支持各种开发语言所必需的.
不幸的是, 这种高误报率和大量不重要的和报告的漏洞会使开发人员变得不敏感,或者增加额外的负担,因为人员不足和不堪重负的开发团队要清除误报. 另外, 许多SAST工具没有检查开源组件的功能, 例如引用的开源库, 的漏洞.
软件成分分析
幸运的是, 可以使用软件组成分析(SCA)工具来帮助识别开源组件中的漏洞. 根据 2021开源安全与风险分析报告 (OSSRA),开源组件在代码库中变得越来越普遍. 一个常见的误解是,开源组件不包含任何漏洞, 事实上,开源组件允许更多的透明度,以便信息安全社区的成员可以审查这些组件的漏洞.
当然, 漏洞仍然存在, 尽管越来越多的人关注这款软件. 例如, OSSRA指出,2020年审计的代码库中有98%包含一些开源组件,其中84%至少有一个公共开源漏洞, 平均每个代码库有158个漏洞.
而这些漏洞往往被归类为中等风险, 各组织仍应认识到这些问题,并实施适当的缓解技术. SCA工具可以在确定和解决问题方面提供真正的价值. 这些工具可以扫描应用程序代码库,以便识别开源组件和任何相关的已知漏洞, 他们可以提出可以应用的修复方案. (OWASP 清单 开源和商业SCA工具.)
动态应用程序安全性测试
而SCA和SAST工具仅基于源代码就能有效地识别可能存在的漏洞, 它们通常无法识别关键的漏洞,而这些漏洞只有在应用程序运行时才能识别. 进入动态应用程序安全测试(DAST)工具.
DAST工具执行封闭的安全测试, 这意味着这些工具不能访问源代码,必须通过应用程序的前端执行由外向内的检查,以确定漏洞是否存在. 这种形式的测试对于识别诸如跨站点脚本等漏洞特别有用, 跨站点请求伪造, 结构化查询语言注入攻击, 不安全的德甲联赛竞猜器配置, 和验证问题.
这些工具可以检测出恶意用户在攻击应用程序时可能使用的漏洞. 另外, 因为测试的性质, 与SAST工具相比,DAST结果往往具有更低的假阳性率, 而这些脆弱性在本质上可能具有更高的风险. DAST工具遵循与应用程序渗透测试类似的方法,通过枚举应用程序页面和功能, 探测枚举区域的漏洞, 试图利用已识别的漏洞来排除误报, 然后根据利用尝试的成功程度对报告中的漏洞进行分类.
然而,DAST工具确实有一些局限性. 它们通常使用一系列预定义的漏洞进行操作,以检查这些漏洞, 而且——为了避免任何操作中断——他们通常不尝试实际执行有效载荷. 因为这个原因, 应该使用实际执行有效负载的DAST工具来扫描托管在临近生产环境或镜像非生产环境中的应用程序, 例如开发或测试环境, 为了在不影响生产数据的情况下模拟生产级控制. (OWASP 清单 开源和商业化的DAST工具.)
适合您的组织的正确的应用程序安全性测试方法
当涉及到应用程序安全性测试和更一般的信息安全时, 没有什么灵丹妙药可以解决每一个风险或识别每一个弱点. 理想情况下,开发人员将有一个 security-by-design 以开发-安全性-操作为重点的环境中的心态. 但即便如此,脆弱性依然存在.
因此, 结合使用各种测试和预防工具可以帮助开发人员从整体上解决安全性问题. 开发人员应该使用DAST工具来补充SAST和SCA工具,以避免编码错误, 动态运行时问题, 并且可以在开发生命周期中有效地识别和修复配置漏洞.
当将这些自动化测试工具与由可信的合作伙伴进行的实际渗透测试相结合时, 组织可以更好地进行尽职调查,保护应用程序和, 随后, 用户的信息.