您的Log4shell补救食谱使用JFrog平台

更新1/14/2022:添加关于JFrog工具的信息修补Artifactory存储库中的Docker映像。
上周,阿里云安全团队的一名研究人员在推特上发布了一个零日远程代码执行漏洞,针对的是这个极受欢迎的漏洞log4jJava日志框架(具体来说,是2。x分支称为Log4j2)。该漏洞最初是由阿里巴巴云安全团队于11月24日发现并报告给Apache的。斜方分配cve - 2021 - 44228这个漏洞后来被安全研究人员称为Log4Shell。
从那时起,据报道,该漏洞在野外被大量利用,因为它是微不足道的利用(武器化的poc是公开的)。它也非常受欢迎,在媒体和社交网络上得到了广泛报道。
有关该漏洞的进一步深入技术信息,请参阅博客文章:Log4Shell 0-Day漏洞.
在这篇技术博客文章中,我们将介绍您可以采取的检测、阻止和补救选项,以保护您的组织使用JFrog平台:
发现通过这些方法之一对log4j包的所有使用
- 使用Artifactory搜索找到log4j库的所有存储库和名称空间
- 使用Artifactory build-info(软件物料清单- SBOM)
- 使用x射线手表提醒使用易受攻击的log4j包
- 使用x射线祖先查找受影响的资源2022世界杯阿根廷预选赛赛程
- 使用Xray API查找受此CVE影响的包
- 使用Xray报告跟踪所有log4j包
- 在现有手表中使用违规搜索
- 使用JFrog安全OSS扫描工具的源代码和二进制文件
块log4j包的使用
修复Artifactory存储库中的漏洞
如何发现易受攻击的log4j包的所有使用情况
使用Artifactory搜索找到log4j库的所有存储库和名称空间
你可以在Artifactory中搜索包、工件和构建以发现在存储库中使用这些项的位置。使用Artifactory中的搜索栏查找缓存在Artifactory远程存储库中的log4j包,以及它们在本地存储库和构建中的位置。
使用Artifactory build-info(软件物料清单- SBOM)
JFrog artifactory CLI和CI插件可以用来存储build-info,与Artifactory中的构建相关联的元数据。
当您遵循JFrog最佳实践并在Artifactory实例中存储构建信息时,您就可以查询Artifactory以列出所有构建使用log4j-core库作为依赖项,使用校验和搜索(每个log4j包都有不同的校验和):

使用Xray手表提醒易受攻击的log4j包的使用情况
您可以使用以下命令检测易受攻击的log4j库的所有使用情况JFrog x光.这可以通过创建x射线策略和手表提醒您包和构建中的特定漏洞。这将提醒所有log4j包:
- 确保所有Maven和Gradle存储库都标记为“x射线索引”。
- 创建一个定义CVSS评分为10的违规的x射线策略。

- 创建一个监视,关联策略,提醒易受攻击包的下载

- 使用特定的过滤器将其应用到“所有存储库”,以只包括log4j-core工件名称。

使用x射线祖先查找受影响的资源2022世界杯阿根廷预选赛赛程
一旦您确定了一个恶意工件(在下面的示例中是log4j-core-2.14.1.jar)你可以使用的祖先选项卡识别组织中所有受影响的工件。
使用Xray API查找受此CVE影响的包
下面的REST API命令可用于搜索CVE,以识别受影响的工件。
curl -uadmin:Password1 -XPOST http://ARTIFACTORY_URL/xray/api/v1/component/searchByCves -H "Content-Type: application/json" -T search-cve.json
json文件应该包括:
{"cves": ["CVE-2021-44228"]}
输出应该与下面类似,并且您应该能够看到每个包的路径。
[{“cve_details”:“cve - 2021 - 44228”,“组件”:[{“名称”:“org.apache.logging.log4j: log4j-core”,“package_type”:“专家”、“版本”:“2.13.3”,“链接”:“http://ARTIFACTORY_URL/ui/packages/gav: % 2 f % 2 forg.apache.logging.log4j: log4j-core / 2.13.3吗?activeTab = xrayData "}]}]
使用Xray报告跟踪所有log4j包
您可以生成漏洞报告,以识别受影响的工件和相应的补救版本。
去安全性和遵从性>报表

用您想要发现的范围创建一个新报告。

选择相关资源后,添加CVE-2021-44228作为标准:2022世界杯阿根廷预选赛赛程

这些标准将有助于生成各种格式的报告,例如以下示例:
在现有手表中使用违规搜索
- 转到一个已经存在的手表。

- 指定CVE的过滤器

使用JFrog安全OSS扫描工具对源代码和二进制文件进行扫描
JFrog安全组开发了一个OSS工具,可以扫描二进制文件和源代码,以跟踪存储库或二进制文件是否使用易受攻击的log4j调用或类。该OSS工具是用Python和Java开发的,可在以下链接访问:https://github.com/jfrog/log4j-tools
使用OSS工具如何阻止使用易受攻击的log4j包
使用x射线策略阻止漏洞包的下载
使用x射线立即检测和/或预防所有易受攻击的log4j库的使用。这可以通过警告或阻止log4j包的策略来实现:
- 确保所有Maven和Gradle存储库都标记为“x射线索引”。
- 创建一个x射线策略,以CVSS评分10为标准阻止下载。

- 考虑应用“阻止下载”,以防您想阻止易受攻击包的下载。
- 创建一个监视,关联策略,提醒或阻止易受攻击包的下载。

- 应用于所有存储库使用特定的过滤器。

在远程存储库上配置排除模式
您可以配置一个排除规则来根据库的规则进行选择* jar文件,以防止它被包含。(见://www.si-fil.com/knowledge-base/how-to-use-include-exclude-patterns/)
这是一个相当简单和直接的过程,选择模式:* / log4j - - 2. x.jar核心
这将导致开发人员无法访问基本jar以进行依赖项解析,这是防止使用受影响代码的好方法。由于受影响的构建版本是2.0到2.14.1,Artifactory管理员可以快速添加14条排除规则,以最大限度地提高安全性,同时最大限度地减少开发人员被阻止的内容数量。
如何解决这个问题
对于开发人员来说,最好的、最长期的修复方法是更新他们的源代码,以使用相关的固定版本的log4j,并生成一个新的构建。
但是,也可以通过JFrog平台创建临时构建来缓解log4j问题,而无需等待源代码更新:
使用JFrog Artifactory本地存储库优先级解决方案
当使用虚拟存储库时(作为最佳实践),Artifactory总是首先从本地存储库解析,然后是远程存储库,只有在这时才会尝试从远程资源请求工件。
这可以用于为具有相同版本的补丁包提供服务,该补丁包不允许JNDI功能。修改后的版本具有相同的代码和易受攻击的包版本,但JNDI类从包中删除,允许构建仍然可以在不进行任何更改或更新的情况下解析“易受攻击的包”,但它不会包含易受攻击的代码:
- 创建Maven类型的本地存储库,并使用优先级解析配置它。

- 将修改后的包上传到与易受攻击包相同的版本(见下文)
- 将其链接到所有虚拟存储库
要创建一个易受攻击的log4j的修改版本,删除JndiLookup类路径中的类:
“zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class”
请注意:在这个解决方案中,每个log4j版本实际上都有两个相同的版本——已消毒且易受攻击,但每个版本都有不同的校验和。这是不推荐的做法,也是应该避免的情况。
JFrog研发开发了一个工具,可以自动修补易受攻击的Docker镜像。该工具将连接到一个Artifactory存储库,下载Docker映像,修补它们,并将它们上传到Artifactory,同时覆盖易受攻击的容器映像。使用此方法,您将能够使用与易受攻击容器相同的语义版本,这将降低修复成本,因为不需要更改配置。
获取Docker映像工具







