当前的 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 个包?的主要内容,如果未能解决你的问题,请参考以下文章
JAVA的log4j如何实现程序重新启动会自动生成新的日志文件,文件名可以是当前日期