漏洞|Log4j 2 杀不死 Java!( 三 )


哪些安全措施没有太大作用
对于 log4j 2 漏洞的问题 , Web Application Firewall(WAF)之类基于网络的防御和工具可能在短期内有一定的效果 , 但通常都没有太大作用 , 而且工作量非常大 。

  • 网络防御的效果不大 。 网上流传着一个梗 , 一张经过 PS 的汽车照片 , 其车牌号上包含了一条注入工具 。 这个梗的点就在于 , 开发人员都知道 , 车牌号会通过计算机视觉分析后记录到日志中 。 构成注入的数据并没有出现在网络层 。 同样 , 大多数应用程序使用数据的不同部分 , 解码数据并记录各种信息 。 任何网络工具都无法匹配足够多的模式来检测安全问题 。
  • 通过观察和追踪来阻止攻击者 IP 的方法并不是特别有效 。 虽然有些团队可能会维护一张攻击者的列表 , 但 AWS IP 之所以被称为弹性 IP , 是因为这些 IP 会定期变化 , 因此 , 即便你阻止了某个 IP , 过一段时间可能就又解锁了 , 或者很快就会受到不同 IP 的攻击 。

漏洞|Log4j 2 杀不死 Java!
文章图片

图:该图演示了网络层无法检测到的漏洞
系统属性和动态补丁的效果一般
有几个补丁和系统属性可以控制 log4j 2 的行为并阻止攻击 。 有时候 , 有些库无法及时更新 , 或者团队在努力更新依赖项 , 但需要一定的时间 , 在这两种情况下 , 就可以考虑这几个补丁和系统属性 。
相关的 Java 系统属性有两个:
  • -Dcom.sun.jndi.rmiobject.trustURLCodebase=false
  • -Dcom.sun.jndi.cosnaming.object.trustURLCodebase=false
将这两个属性设置为 false 可以阻止远程攻击 。
还有一个动态的补丁 , 它可以连接到正在运行的 JVM 并给其打补丁 。 这个补丁必须在 JVM 每次启动时应用 。 虽然这两种方法有一定的作用 , 但相较而言 , 更新库更简单 。
Java 如何处理日志
Java 开发人员一般可以从多个日志系统和记录方式中进行选择 。 多年来 , 随着社区的发展 , 许多日志框架也可以协同工作了: