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


Java 安全基线的升级时间为:每年 1 月、4 月、7 月和 10 月 , 17 日前后的周二 。 详细信息包含在Oracle 重要补丁更新计划(https://www.oracle.com/security-alerts/)中 , OpenJDK 漏洞组(https://foojay.io/pedia/security-vulnerability-management/)也采用了同一个计划 。 此外 , 如果出现重大问题 , Oracle 还会提供计划外的安全更新 。 但 log4j 2 漏洞不属于这种情况 。
以下配置演示了如何使用 Java 11 的安全基线:

jobs:java11:runs-on: ${{ matrix.os }} strategy:matrix:os: [ubuntu-latest, macos-latest, windows-latest] update: [x] package: [jdk, jre] fail-fast: false max-parallel: 4 name: ${{ matrix.package }} 11.0.${{ matrix.update }}, ${{ matrix.os }} steps:-uses: actions/checkout@v1 -name: Set up JDK 11 Zulu uses: foojayio/setup-java@disco with:java-package: ${{ matrix.package }} java-version: 11.0.${{ matrix.update }} distro: zulu -name: java -version run: java -version 定期检测自定义安全漏洞(推荐测试采用)
自动化安全工具可以捕获安全漏洞 , 不需要安全专业知识 。 将这类安全工具集成到 Java 应用程序 , 就可以实现安全监测 , 并记录安全信息 。 有些工具会根据依赖项的数量来决定是否存在漏洞,而这种方法则会根据依赖信息 , 由集成的分析器来报告这些依赖库的组合情况 , 并判断组合后是否安全 。
例如 , 集成分析器不只是简单地检查 log4j2 存在与否及其版本 , 而且还可以确定攻击者是否可以控制远程日志输入 。
此外 , Contrast Community Edition 之类的免费分析器还能够即时捕获 log4j 2 , 并捕获许多其他的安全漏洞 , 例如:
  • 应用程序的 Hibernate、JBDC 或任何其他地方是否包含 SQL 注入问题?
  • 远程用户能否控制发送到 Runtime.exec 的任何输入 , 即是否存在命令注入漏洞?
  • 应用程序使用了哪些加密算法 , 在何处使用 , 是否符合适当的标准?
  • 开发人员在结合使用多个库时 , 是否意外引入了某个安全漏洞 , 例如 OGNL 输入解析?
  • 以及其他应用程序特有的安全漏洞 。
使用 JDK Flight Recorder 监控安全事件 JDK Flight Recorder 是现代 OpenJDK 发行版中包含的性能分析工具 , 它不仅可以生成一些安全信息 , 而且开销非常低 。 各个团队可以使用 JDK Flight Recorder 来记录许多 IO 操作 , 例如 JRE 访问了哪些文件 , 或者哪些类会被反序列化 。
通过使用 JDK Flight Recorder 监视 Java 应用程序事件 , 并通过数据流将事件传输到安全信息和事件管理(Security Information and Event Management , 即SIEM)系统中 , Java 团队就可以监视异常行为 , 并通过可防止漏洞的 Java 反序列化过滤器来检查各个类是否安全 。

推荐阅读