漏洞|Log4j 2 杀不死 Java!

Java 作为顶级编程语言之一 , 已经在企业级软件开发领域活跃 25 年了 。 有人不断宣传 Java 已死 , 同时也有人坚称 Java 活得好好的 。 最近 , 又有报道称 log4j 2 漏洞 将再次“杀死” Java 。我们曾开玩笑说 , Java 博物馆就好像是一个墓园 , 记录了每一次“死亡”的经过 。
作者:Erik Costlow
译者:弯月
链接:https://foojay.io/today/log4j-isnt-killing-java/
上周 , 技术圈被 log4j 2 漏洞掀起巨浪 , 各大安全公司纷纷发文介绍该漏洞的危害 , 并给出了各种临时解决方案 。 还有一些博主也发表文章教我们如何找到易受攻击的地方 , 并采取相应的防御措施 。 还有大量帖子跟着起哄 , 讨论如何采用一些不必要的防御技术 。
目前 ,log4j 2官方团队已发布 2.16.0 新版本 , 加固漏洞防御机制 。log4j 2是一款基于 Java 研发的开源日志系统 , 因此 , 当史诗级漏洞被爆出后 , 便有人宣称 log4j 2 漏洞将再次“杀死” Java , 已经被“死亡”过无数次的 Java , 就像是开了一个墓园 , 记录每次“死亡”经过 。
本文将简单介绍一下 Java 生态系统 , 说明什么是日志记录框架、在何处使用以及使用的原因 , 此外 , 还将介绍各个团队应当如何观察和控制 JVM 的行为 。
Java 开发人员应该做哪些安全工作
【漏洞|Log4j 2 杀不死 Java!】快速给 JDK 和库打补丁是当前最有效的技术 , 可避免绝大多数大规模的黑客攻击 。
给库文件打补丁(必需)
当代码库中存在漏洞时 , 最有效的技术就是打补丁以去除漏洞 。 如果不给库文件打补丁 , 那么应用程序很有可能被黑客入侵 , 攻击者将获得系统及其数据的完整访问权限 。
无论在何种情况下 , 通常打补丁都很有效 。
日志框架可能来自任何依赖项 , 可能由另一个库引入(即传递依赖项) , 而非由开发人员添加(即直接依赖项) 。 我们可以使用依赖项分析工具 , 例如 Contrast Community Edition , 来检测依赖项和其他自定义的漏洞 。
此外 , 还有一些分析依赖关系的开源工具 , 比如 Maven 依赖树(dependency:tree)和 Gradle 依赖树 。 NetBeans 等 IDE 也提供了依赖关系图可视化工具 。
对于 log4j2 漏洞 , 你必须升级到 2.15.0 或更高版本 。
给 JRE 打补丁 , 升级到 Java 的安全基线(推荐 , 定期执行)
每个Java 主要版本都会维护一个安全基线 。 由于每个季度 JDK 都会提供带有新安全改进的补丁 , 因此这个安全基线也会不断向前移动 。 低于安全基线的 Java 包含已知的安全问题 , 应该升级 。
这是标准的安全最佳实践 , 与 log4j 2 漏洞没有直接关系 , 也不会修复该漏洞 。
各个团队可以使用 Foojay Disco API 自动监控安全基线 , 并及时地升级系统 。 开发人员可以将这个更新与 GitHub 操作相结合 , 确保在每次构建代码时 , 都使用最新的安全更新 。 如果发生安全事件 , 则立即升级 JRE , 同时重新构建并重新部署代码 。 下面这个测试矩阵中就包含了这类的 GitHub 操作(https://github.com/foojayio/discoTestingMatrix) 。

推荐阅读