CVE-2016-3720 https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-3720的解释很模糊,但阅读代码后我发现了以下问题。即使在修复了这些问题后,OWasp依赖检查工具仍然报告jar文件易受攻击。我认为在应用了修复后它有一个误报。
CVE-2016-3720揭露了JacksonLibrary中的XML实体注入攻击。https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Processing XML实体注入攻击可在解析XML文件时创建无限循环。
这将最终耗尽应用程序服务器中的所有内存,或者它可能会将引用注入到外部站点(这是报告的问题)。
不幸的是旧版本Jackson的源代码在Github上不可用,项目源代码版本只能追溯到jackson-databind-2.0.0-RC 1级别。
如果您使用的是较旧版本的Spring,那么您可能无法升级到最新版本的Jackson2. x,所以现在您面临着一个安全困境。如何在不升级Spring的情况下修复该漏洞。
5条答案
按热度按时间von4xj4u1#
这是你需要做的:
使用一个基于web的反编译器(www.javadecompilers.com),您可以获得jar文件jackson-all-1.9.11.jar的所有源代码。(这可以在任何版本的Jackson上工作)
在1.9版本中,停止实体注入的解决方案是向这两个文件中添加以下行。
这里是将其添加到反编译代码的位置,然后重新编译文件,并更新jar文件。
在2.x版本中,您需要对该文件进行稍微不同的修改。
希望这对你有帮助。
a6b3iqyw2#
即使在修复了这些问题之后,OWasp依赖性检查工具仍然报告jar文件易受攻击。我认为在应用了修复程序之后,它有一个误报。
请注意,OWASP DC不会扫描代码。它使用证据(如JAR的名称)将其与NVD中的数据相关联,因此,如果JAR的名称指示存在漏洞的版本,它将标识该JAR为存在漏洞的。当您创建了一个Assert已解决漏洞的JAR时,可以使用包含以下内容的抑制文件:
请注意,如果您已经在使用抑制档案,则只需将新的
<suppress>
记录加入至既有档案。ryhaxcpt3#
Jackson1的源代码可以在https://github.com/FasterXML/jackson-1上找到。我创建了一个pull请求:https://github.com/FasterXML/jackson-1/pull/1
nwo49xxi4#
关于第二部分的一个注意事项:不需要修改源代码,可以传递显式示例化的
XmlFactory
(通过XmlMapper
)。构造函数从2.4开始就可用。这避免了必须管理修改后的jar。q5lcpyga5#
我们可以用它来解决易受攻击问题。