我读了很多关于这个问题有多糟糕的文章,并且理解了我们公司生产和更新使用易受攻击版本的服务器的代码中有哪些选项可以找到它。
我无法找到的是,如果某个特定的服务器没有安装Java,也就是说,如果我以root用户身份登录并运行java -version并获取java: command not found,该服务器是否完全安全,因此我可以继续前进?
我最初的直觉是:没有Java -没有问题。然而,GitHub发布了对其企业服务器的更新,声明:
关键:库中的一个远程代码执行漏洞,标识为CVE-2021-44228,在3.3.1之前影响到GitHub企业服务器的所有版本。Log4j库用于运行在GitHub企业服务器实例上的开放源代码服务中.GitHub企业服务器3.0.22、3.1.14、3.2.6和3.3.1版本中修复了此漏洞。有关更多信息,请参见GitHub博客上的这篇文章。
但是Java并没有安装在他们的企业服务器上。
我猜这个冒犯性的服务一定是Java运行在一个码头容器中。因此,我认为我需要考虑机器上的Java或容器中运行的Java。
我是否考虑过其他隐藏的方式来运行这个log4j进程?
发布于 2021-12-14 20:46:07
log4j2是一个库,它必须由运行中的java进程使用,才能使人感到粗俗。但是您是对的,检查java命令是否安装到命令行是不够的。
这里有两个选项(不打算完成),您的系统如何在没有命令行可用的java命令的情况下仍然容易受到攻击。
可以将
发布于 2021-12-15 11:23:28
我还没有一个完整的答案,但非常明确的是,没有--即使没有安装,也没有安装Docker,也没有在进程列表中运行Java,而且Java也不在yum/apt安装的应用程序列表中。
我没有考虑过的一个明显情况是Java作为JRE添加到应用程序中。
我们拥有的Coverity服务器不安装Java,但是Java正在运行,例如ps -ax | grep java
/home/coverity/cov_platform-2021.9.0/jre/bin/java -Djava.awt.headless=true -Djdk.tls......确定JRE中是否包含了易受攻击的Log4j版本要困难得多。
此外,仅仅检查流程列表也是不够的。在这种情况下,包含java的进程列表只有在由另一个进程(如cron、nginx等)触发时才能运行。
https://stackoverflow.com/questions/70353435
复制相似问题