当前的 log4j / CVE-2021-44228 安全问题是不是影响了 r 个包?

Posted

技术标签:

【中文标题】当前的 log4j / CVE-2021-44228 安全问题是不是影响了 r 个包?【英文标题】:Are there r packages affected by the current log4j / CVE-2021-44228 security issue?当前的 log4j / CVE-2021-44228 安全问题是否影响了 r 个包? 【发布时间】:2022-01-18 18:28:18 【问题描述】:

RStudio has confirmed 不受当前 log4j / CVE-2021-44228 安全问题的影响。但是,我还不清楚是否可能存在任何具有 log4j 依赖关系的 r 包。我最感兴趣的是tidyverse 包和其他广泛使用的包,例如xlsx 包。

Here's关于如何检测已安装的r包是否有Java依赖的讨论。

【问题讨论】:

【参考方案1】:

可能不会

先验唯一会受到影响的包是那些直接或间接依赖于 Java 组件的包,因为 log4j 漏洞本身只影响使用 log4j Java 包的 Java 代码。 p>

Bob Rudis 扫描了托管在 CRAN 和 posted the results on the R-pkg-devel mailing list 上的软件包中的潜在漏洞:

我已经扫描了所有的 CRAN —— https://github.com/mergebase/log4j-detector —(并寻找 log4j v2 jar 直接),一切都很好 […]

任何 R 环境受此漏洞影响的几率 一开始就超级苗条(几乎没有),而且——如果工具是 准确——它是 0。

【讨论】:

【参考方案2】:

您还可以在任何安装位置使用以下脚本进行验证:

find . -name '*.jar' | grep -i 'log4j-' | xargs grep 'JndiLookup'

确定受影响的罐子后,您可以使用以下脚本进行更正:

find . -name 'log4j-core-2.[0-9].*jar' | while read dir;do zip -q -d $dir org/apache/logging/log4j/core/lookup/JndiLookup.class; echo $dir ; done

【讨论】:

这将错过在单个 JAR 中捆绑依赖项的项目(因为 log4j 将成为名称中没有 log4j 的 JAR 的一部分)。尽管如此,这仍然是扫描依赖项的一个很好的自动解决方案。需要注意的是,如果目录名称中有空格或其他有趣(但合法)的字符,第二个命令将中断。 Better to use -print0 with find in these situations,然后相应地调整read命令(IFS= read -r -d ''.) 谢谢康拉德,是的,你是对的。这仅适用于以 log4j 开头的 jar,即使 log4j jar 嵌入在 war 文件中也不起作用。

以上是关于当前的 log4j / CVE-2021-44228 安全问题是不是影响了 r 个包?的主要内容,如果未能解决你的问题,请参考以下文章

log4j/log4j2/logback混用问题

JAVA的log4j如何实现程序重新启动会自动生成新的日志文件,文件名可以是当前日期

如何在kafka server.log文件名中包含当前日期和小时?

log4j

LOG4J2-MDC-全链路跟踪等功能研究

LOG4J2-MDC-全链路跟踪等功能研究