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

网路半数已中招!开源软件被曝“十年来最严重漏洞”,维护志愿者仅3人

时间:2023-03-19 15:38:55 科技观察

大数据文摘的产品都说开源工具好,但是bug真的很麻烦。就在前两天,全球知名开源日志组件Apache开源项目Log4j的远程代码执行漏洞详情被公开。编号为CVE-2021-44228的漏洞由阿里云安全研究团队发现,并于11月底作为远程代码执行漏洞报告给Apache基金会。这是因为Log4j的JNDIAPI无法验证远程攻击者从恶意LDAP或其他端点发送修改参数的日志消息,并从LDAP服务器下载恶意代码到受害者系统执行。在最坏的情况下,它可以接管整个系统。虽然美国NIST漏洞数据库没有给CVE-2021-44228一个CVSS3.1风险值,但是很多安全厂商给出了10分的最严重等级。Tenable称其为10年来最严重的漏洞,Cloudflare首席执行官MatthewPrice表示这是自Heartbleed和ShellShock以来最严重的漏洞。该数据库的用户覆盖全球,如苹果iCloud、Twitter、微软游戏Minecraft和Valve游戏平台Steam等。另外还有美国国家安全局的ElasticSearch、ElasticLogstash、Redis和Ghidra,以及大型的CloudFlare、腾讯和百度服务等网站也使用此元素。所以,这一次的影响范围之大,可想而知。但在这个史诗般的漏洞曝光的背后,却有一个悲哀的事实,即日常维护ApacheLog4j2项目的人只有3人。企业使用的开源日志工具Log4j在了解整个事件之前,我们先来看看Log4j。Log4j是一个开源的Java日志记录工具,主要用于监控代码中变量的变化,并定期记录到文件中,供其他应用程序统计分析;跟踪代码运行时轨迹,作为未来审计的基础;作为一个集成调试器在开发环境中的作用是将代码的调试信息打印到文件或控制台。在强调可复用组件开发的今天,Apache提供的强大的日志操作包Log4j可以方便地控制日志信息是否显示,日志信息的输出类型、输出方式、输出格式,更精细地控制日志生成过程。它可以通过配置文件灵活地配置,而不需要大量的代码更改。也就是说,很多互联网公司都可以选择使用Log4j。2014年,Log4j2发布。Log4j2作为Log4j的一次重大升级,完全重写了log4j的日志实现,不仅提供了很多Logback可用的改进,还修复了Logback架构中一些固有的问题。Log4j2还支持SLF4J,可以自动重新加载日志配置,支持高级过滤选项。此外,它允许基于lambda表达式延迟评估日志语句,为低延迟系统提供异步记录器,并提供无垃圾模式以避免垃圾收集器操作造成的任何延迟。通过其他语言接口,企业也可以在C、C++、.Net、PL/SQL程序中使用Log4j。该漏洞的出现是由于Log4j2提供的查找功能,允许开发者通过一些协议读取对应环境中的配置导致的。但在执行过程中,对输入判断不严,导致漏洞的出现。“微博在线研究响应中心”也复现了该漏洞:也就是说,如果日志内容在打印日志时包含关键字${,则其中包含的内容会被替换为变量,导致攻击者可以执行命令任意地。由于在线web业务的任何数据都可能写入Log4j,甚至一些pre-auth的地方,比如注册、登录等,实际的攻击入口要看业务的具体情况。百度搜索、苹果iCloud搜索、360搜索等都存在不同程度的问题。漏洞发现后只有3名志愿者在维护。由于它的广泛应用,想必很多程序员都疯狂加班,也有人开始抱怨为什么维护人员没有发现这么危险的漏洞。这真的不能怪别人。Apache软件基金会日志服务的PMC成员VolkanYaz?c?在Twitter上解释说,该漏洞是由“为向后兼容而保留的旧功能”引起的。“Log4j维护人员一直在为缓解措施而失眠;修复错误、文档和CVE,并回应其他人的询问。即便如此,他们还是遭受了很多严厉的批评甚至抨击——即使这份工作没有任何报酬,即使我们实际上不喜欢这个为向后兼容而保留的功能。”网络安全记者CatalinCimpanu也表示,ApacheLog4j2的维护工作主要由三名志愿者利用业余时间完成。包括Cryptogopher+Go团队安全总监FilippoValsorda在内的不少网友都忍不住发推呼吁大家“不要白嫖”:目前保守估计市场价格在GitHub和Patreon上看到,一个能够维护一个大型开源项目的开发者至少是300,000美元/年,最高可达1000美元/月。但也有网友表示,尽管如此,这次的漏洞是因为他们添加了一个错误的不安全的特性,导致该库不适合大多数合理的用途,而这个漏洞并不是缺钱造成的。针对这个漏洞,“微博在线研究响应中心”给出了一些应急预案:修改jvm参数:Dlog4j2.formatMsgNoLookups=true修改配置:log4j2.formatMsgNoLookups=True设置系统环境变量FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS为true检查所有使用的Log4j的组件系统官方修复链接如下:https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc112月10日,阿里云安全团队再次发出预警,发现阿帕奇Log4j2.15。0-rc1版本存在漏洞绕过,建议及时更新至ApacheLog4j2.15.0-rc2版本。正如网友所说,开源工具面临的困境是,当项目顺利运行时,一切都很好。当出现问题时,每个人都会抱怨,通常抱怨最多的人贡献最少。有才华的项目开发人员鲜为人??知。相关报道:https://uk.pcmag.com/security/137653/critical-apache-log4j2-exploit-demonstrated-in-minecrafthttps://www.ithome.com.tw/news/148332【本文是一篇专栏组织大数据文摘原译微信公众号《大数据文摘(id:BigDataDigest)》】点此查看本作者更多好文