全国协议5人面授小班,企业级独立开发考核,转业者的IT软件工程师基地 登录/注册 | 如何报名

免费领取试听课程

并获得专业顾问一对一进行选课辅导

课程名称不能为空
姓名不能为空
手机号码不能为空

领取成功

Java与Log4j2漏洞

行业新闻 汉码未来 | java Log4j2 漏洞

2021-12-16 09:19:59

科技圈被log4j2漏洞掀起巨大波澜,各大安全公司纷纷发文说明该漏洞的危害性,并提出各种临时解决方案。也有其他的大牛写手发表文章,教我们如何找到容易受到攻击的地方,并采取相应的防御措施。也有很多的帖子跟著,讨论如何采用一些不必要的防御技巧。

Java与Log4j2漏洞

Java开发者应该做些什么安全性工作。

为JDK和库打补丁是目前最有效的技术,可以避免大多数大型黑客攻击。

为库文件打补丁(必需)

当现代代码仓库出现漏洞时,最有效的技术就是打补丁来消除漏洞。在没有对库文件进行补丁的情况下,应用程序很容易被黑客攻击,攻击者可以完全访问系统和它的数据。

不管怎样,打补丁通常都会起作用。

loggraframework可能来自于任何依存关系,并可能由其他库(即传递依赖关系)而不是开发者(即直接依赖关系)。通过使用像ContrastCommunityEdition这样的依赖性分析工具,我们可以检测依赖关系以及其他定制漏洞。

另外,也有一些开放源码工具来分析依赖性,例如Maven依赖树(dependency:tree)和Gradle依赖树。像NetBeans这样的IDE还提供了依赖性图表的可视化工具。

必须将log4j2漏洞升级到2.15.0或更高版本。

为JRE打补丁,将其升级为Java安全基准(建议,定期执行)

每种Java主版本都维护一个安全基准。因为每季JDK都将提供新的安全性改进的补丁,这一安全基准也将继续前进。Java基础级别以下存在已知的安全问题,应该进行升级。

它是标准的安全最佳实践,它与log4j2漏洞没有直接联系,并且不能修复这个漏洞。

单独的团队可以使用FoojayDiscoAPI对安全基准进行自动监控,并及时更新系统。开发者可以把这次更新和GitHub操作结合起来,确保每次构建代码时,都会使用最新的安全更新。当出现安全事故时,JRE会立即进行更新,在此期间重新构建和重新部署代码。这种类型的GitHub操作包含在下面的测试矩阵中。

Java安全基准升级是:每年一月、四月、七月、十月、十七日、星期二。Oracle的重要补丁更新计划中,OpenJDK漏洞组也采用相同的计划。另外,Oracle也将在发生严重问题时提供非计划的安全更新。但是log4j2漏洞并没有这样做。

定制的安全漏洞的定期检测(推荐的测试采用)

自动安全工具可以捕捉到安全漏洞,而不需要安全专家。这种安全工具被集成到Java应用程序中,使得安全性监控和记录安全信息成为可能。一些工具可以根据依赖关系的数目来决定是否有漏洞,并且这个方法可以使用一个集成的分析程序,根据依赖信息,报告这些依赖库的组合,并在组合之后判断是否安全。

举例来说,集成分析器不仅能检查log4j2的存在或有没有版本,还能判断攻击者是否能够控制远程日志输入。

另外,像ContrastCommunityEdition这样的免费分析器也能立即捕捉到log4j2,并捕捉到很多其他安全漏洞,比如:

JBDC或应用程序的Hibernate、JBDC或其他任何地方都有SQL注入问题?

对于发送到Runtime.exec的输入,远程用户能够控制是否有一个命令注入漏洞?

在什么地方,应用程序使用了什么加密算法,以及它是否符合相应的标准?

当开发者组合多个库时,会不小心引入一个安全漏洞,比如OGNL输入解析?

还有其它应用程序特有的安全漏洞。

利用JDKFlightRecorder监视安全事件。

JDKFlightRecorder是包括在现代OpenJDK发行版中的性能分析工具,它不仅能够产生一些安全信息,而且开销很小。JDKFlightRecorder可以用于单独的团队记录很多IO操作,比如JRE访问了哪些文件,或者哪些类将被反序列化。

利用JDKFlightRecorder监控Java应用程序事件,并且将事件传送到安全信息与事件管理(SecurityInformationandEventManagement),在SIEM)系统中,Java团队能够监控异常行为,并且通过Java反序列化过滤器检查个别类是否安全,这可以防止漏洞。

那些安全措施不是很有效。

针对log4j2漏洞,WebApplicationFirewall(WAF)等基于网络的防御性和工具可能会在短期产生一些效果,但通常效果并不显著,而且工作量很大。

网路防卫没有什么作用。有一条网络新闻在网上流传,一张由PS制作的汽车图片,上面有一条喷枪。这一梗塞的地方就在于,开发者知道,牌照号码将经过电脑视觉分析后记录到日志中。组成注入的数据不会出现在网络层。类似地,大多数应用程序使用不同的数据部分,解码数据和记录各种信息。没有一个网络工具能够匹配足够的模式来检测安全问题。

用观测和跟踪来阻止攻击者IP的方法并非特别有效。尽管一些团队可能会保留一份攻击者名单,但是AWSIP之所以被称为“弹性IP”,是因为这些IP有周期性的变化,所以即使你拦截了一个IP,过一阵子就有可能再次解锁,或者很快就会被另一个IP所攻击。

系统属性和动态补丁效果一般。

存在一些补丁和系统属性来控制log4j2的行为和阻止攻击。有时,一些库不能及时更新,或者团队要更新依赖,但是需要一定的时间,不管是哪种情况,都要考虑一些补丁和系统属性。

此外,还提供了连接到运行中的JVM并为其打上补丁的动态补丁。每个JVM启动时都必须应用该补丁。尽管这两种方法都有些用处,但是更新库要简单得多。

Java处理日志的方式。

Java开发者通常可以从多种日志系统和记录的方式中选择。随着社区多年的发展,很多日志框架也可以一起工作:

SystemLogger(发布于2017年,推荐)是JDK9中介绍的日志系统。这种方法改善了JDKLogger的API,并提供与SLF4j相似的记录方法,以便将JDK的日志重定向到应用程序团队选择的日志系统。

JDKLogger(2004发布)是在Java1.4中引入的日志系统。这是因为在JDK中大量使用日志系统,所以它非常受欢迎,但这个API有一点差劲。尽管该日志系统也很好,但是不如其他框架。

Log4j和Log4j2都是社区推荐的日志系统,它们都改进了API,这样开发团队就可以更轻松地控制记录内容,以及在不同层次上记录日志数据。

Logback和SLF4j也是流行的日志系统。SLF4J是一种简单的日志记录方式,它可以帮助团队处理很多日志,库的维护者可以将日志输出到SLF4J,然后由应用程序开发人员配置用来统一输出的底层日志系统。另外,SLF4J建立了很好的API,从而将依赖性降到最低。

JBossLogger是JBoss生态圈中另一个流行的日志系统。本系统运行良好,运行速度较快。他现在也支持Quarkus这样的流行框架。

ApacheCommons-Logging(2002年成立)在JDK日志系统之前,


以上就是汉码未来给大家分享的文章,希望对小伙伴们有所帮助,想要了解更多Java与Log4j2漏洞相关内容的小伙伴可以登录汉码未来官网咨询,主打5人小班,全程面授,主打Java开发,web前端开发等课程,有专业的授课老师为你答疑解惑。

    

分享到:



【免责声明】由于政策等各方面情况的不断调整与变化,本网站所提供的信息仅供参考,请以权威部门公布的正式信息为准。本网站在文章内容来源出处标注为其他平台的稿件均为转载稿,免费转载出于非商业性学习目的,版权归原作者所有。如您对内容、版权等问题存在异议请与本站联系,我们会及时进行处理解决。 删除,请联系客服。
相关推荐
为什么选择汉码未来