当前位置: 首页 > 科技观察

面对Log4j漏洞,开发者如何保护程序安全?_1

时间:2023-03-19 10:25:34 科技观察

【51CTO.com速译】12月9日,Apache基金会发布紧急更新,针对Java各种应用的开源日志框架Log4j中名为Log4Shell的严重零日漏洞。发现的漏洞编号为CVE-2021-44228,允许攻击者在任何使用Log4j库写入日志信息的系统上执行任意代码。它立即被评为10级,这是CVSS量表中的最高严重性。正如CloudflareCTOJohnGraham-Cumming所说:“这可能是自Heartbleed和ShellShock以来互联网上最严重的漏洞之一。”加固第一道防线漏洞公布后,开发人员和维护人员立即着手修补尽可能多的Java应用程序。由16名无偿志愿者组成的Apache软件基金会日志记录服务团队也首次强化了Log4j本身。北京时间11月24日,Apache日志服务项目管理委员会(PMC)收到一封爆炸性邮件。阿里云安全团队报告了Log4j2软件中的零日安全漏洞。“这将是一个主要问题,”软件工程师和PMC成员GaryGregory说。该团队立即开始修补该问题,但在12月9日漏洞公开后,他们的时间表迅速加快。Gary和其他维护人员放弃了他们正在做的事情,加班加点地修复了该错误。在发布2.15更新之前,他们很快就认为这个更新“不够好”,随后,他们于12月13日格林威治标准时间晚上10:28发布了2.16版本。“我知道他们都有家庭和必须做的事情。但他们把所有事情都搁置一旁,用周末时间修复这个错误,”前Log4j开发人员ChristianGrobmeier告诉彭博社。到周末的这个时候,PMC的活跃成员已经转而通过私人Slack渠道进行交流,他们在那里继续致力于解决这个问题,并共同为使用旧版Java的用户提供更新。他们很快发布了2.12.2版本,为Java7用户解决了这个问题。Java6修复被证明更加棘手,但这是他们积压的下一个。“总的来说,我认为尽管这个漏洞造成了可怕的后果,但事情的进展正如有经验的开发人员所期望的那样,”加里说。“我们收到了通知,迅速打了补丁,并在该版本上进行了迭代。构建修补程序和紧急指南周末行动迅速的另一个小组是AmazonCorretto团队。Corretto是OpenJavaDevelopmentKit(OpenJDK)的一个发行版,它将Corretto团队处于Log4Shell问题的第一线。在首席软件工程师VolkerSimonis的带领下,Corretto团队快速构建并开源了一个修补程序,供任何无法立即更新的组织使用。如GitHub页面所述:这是一个工具将Java代理注入到正在运行的JVM进程中。代理将尝试修补所有加载的org.apache.logging.log4j.core.lookup.JndiLookup实例的lookup()方法,无条件返回字符串“PatchedJndiLookup::lookup()”。本次热补丁旨在解决Log4j中的CVE-2021-44228远程代码执行漏洞,无需重启Java进程。据了解,动态和静态代理在JDK8和JDK11上Linux正在运行,而在JDK17上只有静态代理在工作。”AWSCISOSteveSchmidt在一篇博文中写道:“非常感谢AmazonCorretto团队花费了数日、数夜和周末来编写、强化和运行此代码。”AWS还发布了详尽的服务特定安全列表受影响产品的更新。在其他地方,由首席Java工程组经理MartijnVerburg领导的MicrosoftJava团队成员帮助评估了补丁并为客户发布了补丁。在可以应用完整的安全更新之前,提供更多保护您自己的一般性建议,包括几个推荐的解决方法。谷歌云对其CloudArmor安全产品进行了更新,该产品于12月11日发布了一个紧急网站。应用程序防火墙(WAF)规则可帮助检测和阻止对CVE-2021-44228的企图利用。“帮助我们的客户解决Log4j问题CloudArmor产品经理EmilKiner和谷歌的网络专家经理DaveReisfeld写道:一篇博文。你能做什么?当这些内部开发人员争先恐后地为客户保护他们的软件时,许多最终用户和企业开发人员也在争先恐后地评估他们的漏洞并保护他们自己的Java应用程序。要做的第一件事是检测您的应用程序中是否存在Log4j。还需要注意的是,并非所有应用程序都容易受到此漏洞的影响。使用高于6u212、7u202、8u192或11.0.2的Java版本的任何人都应该是安全的,因为在这些版本中添加了对JNDI(Java命名和目录接口)远程类加载的保护。此外,Log4j版本高于2.10的用户应通过将系统属性formatMsgNoLookups设置为true、设置JVM参数-Dlog4j2.formatMsgNoLookups=true或从类路径中删除JndiLookup类来缓解这种情况。由于Log4j漏洞不仅会影响Java应用程序,还会影响使用该库的任何服务,因此Log4Shell的攻击面可能非常大。正如LucianConstantin为CSO所写:“社区仍在努力评估攻击面,但由于复杂的依赖生态系统,攻击面可能会很大。一些受影响的组件非常受欢迎,被数百万企业应用程序使用和服务”。就其本身而言,Apache日志服务团队将“继续评估可能存在潜在安全风险的Log4j功能,并将进行必要的修改以删除这些功能。Apache日志服务团队的成员RalphGoers告诉InfoWorld,“虽然我们将尽最大努力保持向后兼容性,但这可能意味着我们必须禁用他们可能正在使用的功能。即使有无数开发人员在周末不知疲倦地修补Log4j的错误,也会有许多人反应迟钝。因此,Log4Shell的影响可能是长期和广泛的。正如安全分析师托尼罗宾逊在推特上所说的那样。“虽然那些好的公司很快通过打补丁解决了问题,但还有很多地方不会打补丁,或者一段时间内不会打补丁。”来源为51CTO.com】