我必须保护一些服务器免受CVE-2021-44228 aka log4shell的攻击。这些机器运行的是Linux,到处都是大量的log4j jar文件,有些来自应用服务器,有些来自遗留软件等。我担心不可能将所有这些文件都更新到最新的log4j。
但是,如果我理解正确的话,可以通过删除受影响的类来防止log4j 1.x中的log 4shell,如下所示:
zip -q -d log4j.jar org/apache/log4j/net/JMSAppender.class
在log4j 2.x中,如下所示(参见logging.apache.org):
zip -q -d log4j-core.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
我想到了一个shell脚本来查找所有log4j jar,可能如下所示:
find / -name "log4j*.jar"
并在所有结果上调用这两个zip命令。不幸的是我不擅长shell脚本。有人会根据这个想法写一个脚本吗?
警告:
- 当然,这样做会使log4j失去所有JNDI查找和/或JMS功能。
- log4j 1.x有其他安全问题。所以最好升级到最新的logj 2.x。
1条答案
按热度按时间cyvaqqii1#
这是我自己的尝试。不是很优雅(相当重复),但输出颜色很好。而且它只在log4j版本被破坏时删除类(FIX_VERSION=“2.17.1”也可以防止CVE-2021-45105)和CVE-2021-44832。
输出如下所示:
截图备注: