ApacheLog4j是Java开发人员流行的开源日志库,最近遇到了一个与安全相关的大规模漏洞。由于它的普及,许多组织都受到了这一漏洞的影响。有关最新消息,请参阅网站关于特定的问题和补丁。这里是另一篇详细解释核心问题的文章。
Log4j版本2.x中发现的安全问题列表:
CVE-2017-5645ApacheLog4j套接字接收器反序列化漏洞(严重性-中度)
CVE-2020-9488:Apache Log4j SMTP Appder中存在主机不匹配的证书验证不当(严重性-低)
CVE-2021-44228:ApacheLog4j2 JNDI功能不保护不受攻击者控制的LDAP和其他与JNDI相关的端点(严重程度-关键)。
CVE-2021-45046:ApacheLog4j2线程上下文查找模式易受某些非默认配置中远程代码执行的影响(严重程度-关键)
CVE-2021-45105:ApacheLog4j2在查找计算中并不总是防止无限递归(严重程度关键)。
CVE-2021-44832:当攻击者控制配置(严重性-中度)时,ApacheLog4j2通过JDBC Appder易受RCE攻击。
保护Java应用程序的4种方法:
1.检测代码库中是否有Log4j2.x
ApacheLog4j可以直接出现在项目中,也可以是依赖项的依赖项。因此,最好使用构建工具(如Maven或Gradle)快速扫描同一棵树,如下所示:
Maven:
mvn dependency:tree -Dincludes=org.apache.logging.log4j
梯度:
.\gradlew dependencies --configuration=testRuntimeClasspath | find "log4j"
或者,您也可以使用如下所示的开放源码工具Log4j扫描仪但这做了一次蛮力检查。需要注意的是,并不是所有的log4j.jars都是易受攻击的,特别是如果您使用的是更新版本的库(请参见#3)
2.加强安全测试和监测
因为安全是一个持续的过程,攻击者总是在寻找任何类型的漏洞。因此,不仅要遵循安全编码最佳实践,而且还要定期测试攻击,以确保应用程序和体系结构是安全的。当安全测试失败时,拥有一个像警报一样简单的监视系统也是至关重要的。
用于检测Log4j错误的工具:
亨特Log4Shell漏洞测试工具:
- 您只需复制并粘贴生成的JNDI语法(代码块)。
${jndi[:]ldap[:]//....
应用程序输入框、前端站点表单字段、登录(如用户名输入),或者如果您是更技术性的,甚至是用户代理或X转发-for或其他可自定义的HTTP报头。
logger.error("${jndi:ldap://log4shell.huntress.com:1389/<your-unique-identifier-from-log4shell.huntress.com>}");
检查结果页查看是否接收到任何连接,并在测试任何服务时验证检测到的IP地址和时间戳。
如果您看到一个条目,就会建立一个连接,并且您所测试的应用程序很容易受到攻击。
通过运行以下命令测试应用程序是否已经受到攻击:
用以下操作Python工具.
3.更新Log4j 2.x库
如果您正在使用ApacheLog4j库,请确保更新到最新版本,因为上面列出的安全漏洞已经修补好了。这是目前最好的衡量标准。
升级到Log4j2.3.2(Java 6)、2.12.4(Java 7)或2.17.1或最新版本(Java 8及更高版本)。
4.设置Web应用程序防火墙(WAF)
Web应用程序防火墙通过将请求数据与一组预编译规则进行比较,扫描每个传入请求,以查找错误的迹象,如远程代码执行。Java有开源的WAF,如果您在云中托管应用程序,请检查云供应商提供的WAF,并确保它是最新的。
按照上面的步骤,您可以安心地睡觉,知道您的应用程序目前是安全的。
小伙伴们如果觉得我写的不错,点赞+收藏!
完整资料已经给大家打包完毕,需要的小伙伴关注博主+私信“学习”即可获得