我已经阅读了很多关于这个问题有多严重的资料,并了解了在我们公司正在生产的代码中找到它的可用选项,以及更新使用易受攻击版本的服务器。
我找不到的是,如果一个特定的服务器没有安装Java,也就是说,如果我以root身份登录并运行java -version
,并获得java: command not found
,这个服务器是否完全安全,不会出现这个问题,所以我可以继续前进?
我最初的直觉是:没有Java-没有问题。2但是,GitHub发布了一个更新,说明他们的企业服务器:
关键:Log4j库中存在一个远程执行代码漏洞,标识为CVE-2021 - 44228,该漏洞会影响3.3.1之前的所有GitHub Enterprise Server版本。Log4j库用于GitHub Enterprise Server示例上运行的开放源代码服务。此漏洞已在GitHub Enterprise Server 3.0.22、3.1.14、3.2.6和3.3.1。有关更多信息,请参阅GitHub博客上的这篇文章。
但是他们的企业服务器上没有安装Java。
我猜这个有问题的服务一定是在一个Docker容器中运行的Java,所以我想我需要考虑机器上的Java或者在容器中运行的Java。
是否还有其他我没有考虑到的隐藏方式可以运行这个log4j进程?
2条答案
按热度按时间bvn4nwqk1#
log4j2是一个必须被运行的java进程使用的库,它是易受攻击的。但是你是对的,检查
java
命令是否安装到命令行是不够的。以下是两个选项(不完整),说明如果命令行上没有
java
命令,您的系统如何仍然容易受到攻击。50few1ms2#
我还没有一个完整的答案,但非常肯定的是不你是不安全的,即使Java没有安装,Docker没有安装,Java没有运行在进程列表中,Java没有在你的yum/apt安装的应用程序列表中。
我没有考虑过的一个明显的例子是Java作为JRE添加到应用程序中。
我们拥有的Coverity平台服务器未安装Java,但Java正在运行,例如
ps -ax | grep java
确定JRE中是否包含Log4j的易受攻击版本要困难得多。
此外,仅仅检查进程列表也是不够的,在这种情况下,进程列表包含
java
,但是Java可能仅在由另一进程触发时才运行,例如cron
、nginx
等。