首页 > 解决方案 > ESAPI 的目的是什么?

问题描述

我们使用 Veracode 静态代码分析来查找和修复代码漏洞。一个反复出现的主题是,他们引用ESAPI作为修复它们的推荐解决方案,例如 CW117(如何修复 Veracode CWE 117(不正确的日志输出中和)

但是,我真的不明白拥有一个单独的库的意义,该库除了作为其他库之上的某种安全层之外什么都不做。如果库(例如日志记录 API)存在漏洞,我为什么要首先使用它?我只会为那个特定的开源社区做出贡献并修复那里的漏洞。或者使用另一个可以解决相同问题但已经是我依赖项的一部分的库。然而,像 Veracode 这样的工具建议使用它,并且在替代解决方案中没有太大的灵活性。

标签: veracodeesapi

解决方案


我是另一个 ESAPI 项目的联合负责人。我将尝试添加一些内容来增加@Lajos Arpad 和@avgvstvs 提到的信息。

如果有的话,你的抱怨应该是 Veracode 和 Fortify 以及其他推荐 ESAPI 的 SAST 工具。它需要那些 SAST 工具供应商的工作来让他们的工具从某些漏洞中删除他们的污点标志,因为他们认识到这些库可以正确修复。工具供应商需要持续进行大量投资才能做到这一点。

也就是说,对于特定的CWE-117,通常称为“日志注入”,通常被认为是“低”风险漏洞,因此没有很多其他现成的 FOSS 日志库愿意解决它。一个可以为您用来防止日志注入的任何日志库编写自定义附加程序。正如马特所提到的,人们甚至可以或多或少地从 ESAPI 的 GitHub 存储库中窃取该代码。(ESAPI 是根据 3-clause BSD 许可证获得许可的,这是一个非常自由的许可证,所以如果你不想贡献它,你甚至不必贡献它。)但据我所知,没有其他人会打扰实现这一点,正如马特解释的那样,主要是因为它实际上更多的是应用程序问题,而不是库问题。因此,对于 CWE-117 的修复,SAST 工具可能除了 ESAPI 之外没有很多其他 Java 库选项。但是对于像 XSS 漏洞这样的东西,他们至少也应该承认 OWASP Java Encoder 项目。但是如果(比如说)Veracode 不这样做,


推荐阅读