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 , 并捕获许多其他的安全漏洞 , 例如:
通过使用 JDK Flight Recorder 监视 Java 应用程序事件 , 并通过数据流将事件传输到安全信息和事件管理(Security Information and Event Management , 即SIEM)系统中 , Java 团队就可以监视异常行为 , 并通过可防止漏洞的 Java 反序列化过滤器来检查各个类是否安全 。
哪些安全措施没有太大作用
对于 log4j 2 漏洞的问题 , Web Application Firewall(WAF)之类基于网络的防御和工具可能在短期内有一定的效果 , 但通常都没有太大作用 , 而且工作量非常大 。
文章图片
图:该图演示了网络层无法检测到的漏洞
系统属性和动态补丁的效果一般
有几个补丁和系统属性可以控制 log4j 2 的行为并阻止攻击 。 有时候 , 有些库无法及时更新 , 或者团队在努力更新依赖项 , 但需要一定的时间 , 在这两种情况下 , 就可以考虑这几个补丁和系统属性 。
自动化安全工具可以捕获安全漏洞 , 不需要安全专业知识 。 将这类安全工具集成到 Java 应用程序 , 就可以实现安全监测 , 并记录安全信息 。 有些工具会根据依赖项的数量来决定是否存在漏洞,而这种方法则会根据依赖信息 , 由集成的分析器来报告这些依赖库的组合情况 , 并判断组合后是否安全 。
例如 , 集成分析器不只是简单地检查 log4j2 存在与否及其版本 , 而且还可以确定攻击者是否可以控制远程日志输入 。
此外 , Contrast Community Edition 之类的免费分析器还能够即时捕获 log4j 2 , 并捕获许多其他的安全漏洞 , 例如:
- 应用程序的 Hibernate、JBDC 或任何其他地方是否包含 SQL 注入问题?
- 远程用户能否控制发送到 Runtime.exec 的任何输入 , 即是否存在命令注入漏洞?
- 应用程序使用了哪些加密算法 , 在何处使用 , 是否符合适当的标准?
- 开发人员在结合使用多个库时 , 是否意外引入了某个安全漏洞 , 例如 OGNL 输入解析?
- 以及其他应用程序特有的安全漏洞 。
通过使用 JDK Flight Recorder 监视 Java 应用程序事件 , 并通过数据流将事件传输到安全信息和事件管理(Security Information and Event Management , 即SIEM)系统中 , Java 团队就可以监视异常行为 , 并通过可防止漏洞的 Java 反序列化过滤器来检查各个类是否安全 。
哪些安全措施没有太大作用
对于 log4j 2 漏洞的问题 , Web Application Firewall(WAF)之类基于网络的防御和工具可能在短期内有一定的效果 , 但通常都没有太大作用 , 而且工作量非常大 。
- 网络防御的效果不大 。 网上流传着一个梗 , 一张经过 PS 的汽车照片 , 其车牌号上包含了一条注入工具 。 这个梗的点就在于 , 开发人员都知道 , 车牌号会通过计算机视觉分析后记录到日志中 。 构成注入的数据并没有出现在网络层 。 同样 , 大多数应用程序使用数据的不同部分 , 解码数据并记录各种信息 。 任何网络工具都无法匹配足够多的模式来检测安全问题 。
- 通过观察和追踪来阻止攻击者 IP 的方法并不是特别有效 。 虽然有些团队可能会维护一张攻击者的列表 , 但 AWS IP 之所以被称为弹性 IP , 是因为这些 IP 会定期变化 , 因此 , 即便你阻止了某个 IP , 过一段时间可能就又解锁了 , 或者很快就会受到不同 IP 的攻击 。
文章图片
图:该图演示了网络层无法检测到的漏洞
系统属性和动态补丁的效果一般
有几个补丁和系统属性可以控制 log4j 2 的行为并阻止攻击 。 有时候 , 有些库无法及时更新 , 或者团队在努力更新依赖项 , 但需要一定的时间 , 在这两种情况下 , 就可以考虑这几个补丁和系统属性 。
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
