关于 OWASP-2013 前 10 名 A9 的任何意见或建议

信息安全 遵守 审计 owasp
2021-08-30 20:23:33

在本次 OWASP 十大应用程序安全漏洞列表 ( https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project ) 的迭代中,引入了一个新类别“A9 使用具有已知漏洞的组件”。这似乎需要调查任何应用程序中的所有库和导入代码以确保合规性。

我有一些客户,由于他们的 PCI-DSS 审计要求,他们使用 OWASP 前 10 名来确保他们自己的软件平台的安全性,以确保他们为处理信用卡支付而编写的代码库部分的安全性。有了这套新的要求,他们似乎必须找到/列出所有导入的库(一个实例中来自 CPAN 的 Perl 模块,另一个实例中是 Java 库)并逐行检查它们 - 可能有一百万行别人的代码!

这不实用,或者可能非常有用!OWASP 是否可以认真地建议那些编写自己的应用程序、导入公共库的组织必须审查所有第三方库代码?

有没有其他人遇到过这个问题,你认为我该如何处理?

3个回答

在对应用程序的安全性进行正式审查时,应检查所有库是否存在安全缺陷。然而,这不是 OWASP-2013 A9 的重点。OWASP-2013 A9 的核心是制定政策以确保应用程序不会因疏忽而受到损害。OWASP 声明如下:

  1. 确定您正在使用的所有组件和版本,包括所有依赖项。(例如,版本插件)。
  2. 监控公共数据库、项目邮件列表和安全邮件列表中这些组件的安全性,并使其保持最新状态。
  3. 建立管理组件使用的安全策略,例如要求某些软件开发实践、通过安全测试和可接受的许可证。
  4. 在适当的情况下,考虑在组件周围添加安全包装器,以禁用未使用的功能和/或保护组件的薄弱或易受攻击的方面。

2号是最重要的。如果您依赖于库或平台,则需要定期更新这些组件。在内部应该有一个周期来审查所有组件和版本,并确保它们得到完全更新。每月审查这些组件的周期将是理想的。

简而言之,数字 4 需要对不受信任的库的输入进行严格验证。如果一个库没有针对安全缺陷进行全面测试,则必须验证传递给该库的数据。对所有输入执行此操作是一种非常好的安全做法。这方面的一个例子是对所有输入使用OWASP ESAPI 验证例程因此,如果它是一个电子邮件地址,它应该匹配电子邮件地址的正则表达式。

从审核员的角度来看,如果库被普遍使用并经过审查,我不希望您检查使用过的库的每一行代码。如果您将“在互联网上找到的随机代码”用于交易系统,那么我希望您已经对代码进行了审查。

现在对于更多使用和审查的库,我将简单地查看库的版本,看看是否有任何已知的漏洞。您应该至少使用每个安全更新定期更新您的库。

如果该问题没有可用的安全更新,我会要求您制定一个行动计划来:

  • 监控是否发生了漏洞利用(有时安全更新可能针对未使用的组件)
  • 降低风险(禁用组件或更改 WAV/IPS)

Rook 为您的问题提供了一个很好的答案 - 虽然使用公共数据库和其他方式监控组件肯定比查看所有组件的代码更容易,但它仍然是一项重大任务。为什么?因为应用程序现在主要由组件组成 - 研究表明,现在平均应用程序包含 80% 或更多的开源组件。而且,它不仅与您拉入应用程序的组件有关,还包括所有其他相关组件。鉴于数量、种类和发布节奏(许多项目每年更新 4 次),某种形式的自动化是必要的。

现有的应用程序安全技术(如 DAST 和 SAST)是针对不同的问题而设计的——它们专注于将组件粘合在一起的自定义代码。需要一种不同的方法来跟上步伐——一种控制整个生命周期的方法,而不是在开发周期后期交付的时间点扫描。

有 2 份白皮书提供了有关 OWASP A9 和新 PCI 3.0 组件要求的更多背景信息。此外,还提供有关此主题的网络研讨会,其中包括来自金融服务公司 Crosskey 的信息。

http://www.sonatype.com/resources

谢谢,Mark Troester Sonatype @mtroester