半壁互联网江山都中招!开源软件被曝“十年最重大漏洞”,维护人竟只有3名志愿者

安全 应用安全
就在前两天,全球知名开源日志组件Apache开源项目Log4j远程代码执行漏洞细节被公开。

[[440494]]

大数据文摘出品

都说开源工具好,bug一来才是真烦恼。

就在前两天,全球知名开源日志组件Apache开源项目Log4j远程代码执行漏洞细节被公开。

编号CVE-2021-44228的漏洞由阿里云安全研究团队发现、于11月底通报Apache基金会的远端程式码执行漏洞。它是Log4j的JNDI API未能验证远端攻击者由恶意LDAP或其他端点发送修改过参数的log讯息,而自LDAP伺服器下载恶意程式码至受害系统执行,最严重可接管整台系统。

尽管美国NIST漏洞资料库并未给定CVE-2021-44228的CVSS 3.1风险值,许多安全厂商皆给出了最严重等级的10分。

Tenable称其为10年最重大漏洞,Cloudflare执行长Matthew Price则说这是Heartbleed、ShellShock以来最严重的漏洞。

该资料库的用户范围涵盖全球,比如苹果iCloud、推特、微软游戏Minecraft及Valve游戏平台Steam等,此外,ElasticSearch、Elastic Logstash、Redis及美国国安局的Ghidra、以及CloudFlare、腾讯、百度等大型网站服务也都使用这项元件。

因此本次受影响范围之大足以想见。

但在本次史诗级漏洞被曝光的背后,还存在一个令人心酸的事实,那就是日常维护Apache Log4j2项目的只有3人。

[[440495]]

企业都用的开源日志工具Log4j

在了解整场事件之前,我们先来看看Log4j。

Log4j是一款开源Java日志记录工具,主要用来监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作;跟踪代码运行时轨迹,作为日后审计的依据;担当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息。

在强调可重用组件开发的今天,Apache提供的强有力的日志操作包Log4j可以轻松控制log信息是否显示、log信息的输出端类型、输出方式、输出格式,更加细致地控制日志的生成过程,而其通过配置文件可以灵活地进行配置而不需要大量的更改代码。

也就是说,很多互联网企业都可以选择使用Log4j。

2014年,Log4j2发布。作为对Log4j的重大升级,Log4j2完全重写了log4j的日志实现,不仅提供了Logback中可用的许多改进,同时修复了Logback架构中的一些固有问题。

Log4j2也支持SLF4J,可以自动重新加载日志配置,并支持高级过滤选项。此外它还允许基于lambda表达式对日志语句进行延迟评估,为低延迟系统提供异步记录器,并提供无垃圾模式以避免由垃圾收集器操作引起的任何延迟。通过其他语言接口,企业也可以在C、C++、.Net、PL/SQL程序中使用Log4j。

此次漏洞的出现,正是由用于Log4j2提供的lookup功能造成的,该功能允许开发者通过一些协议去读取相应环境中的配置。但在实现的过程中,并未对输入进行严格的判断,从而造成漏洞的发生。

“微步在线研究响应中心”也复现了该漏洞:

换句话说,如果在打印日志时发现日志内容中包含关键词${,那么这个里面包含的内容会当做变量来进行替换,导致攻击者可以任意执行命令。

由于线上web业务的任何数据都可能写入Log4j,甚至一些pre-auth的地方,比如注册、登录,实际攻击入口取决于业务具体情况。百度搜索、苹果iCloud搜索、360搜索等都出现了不同程度的问题。

只有3位志愿者在维护

在漏洞被发现后,由于应用广泛,想必不少程序员加班都快加疯了,也有人开始埋怨为什么维护人员都没有发现这么危险的漏洞。

[[440496]]

这还真不能怪人家。

Apache软件基金会Logging Services的PMC成员Volkan Yazıcı在推特上解释到,此次漏洞是“为向后兼容保留的旧功能”而引发的。

“Log4j维护者一直在为缓解措施而失眠;修复错误、文档和CVE,还要回应他人的询问。即便如此,他们还要遭受许多严厉的批评乃至抨击——哪怕这份工作没有任何酬劳,哪怕这个为了向后兼容而保留的功能我们其实也不喜欢。”

网络安全记者Catalin Cimpanu也表示,Apache Log4j2的维护工作主要由3名志愿者,在业余时间完成。

不少网友,包括Cryptogopher+Go团队安全负责人Filippo Valsorda都忍不住发推呼吁大家“别白嫖”了:

目前,保守估计,能够维护一个大型开源项目的开发人员的市场价格至少是30万美元/年,在GitHub和Patreon上看到的最多1000美元/月。

但也有网友表示,尽管如此,这次的漏洞是因为他们添加了一个错误的、不安全的特性,使得库不适合大多数合理用途,这个bug不是因为缺钱而引起的。

针对此次漏洞,“微步在线研究响应中心”给出了一些应急方案:

  • 修改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-rc1

12月10日, 阿里云安全团队再次发出预警,发现Apache Log4j 2.15.0-rc1版本存在漏洞绕过,建议及时更新至Apache Log4j 2.15.0-rc2版本。

正如网友所言,开源工具面临的困境在于,项目顺利进行时,一切都很好,一旦出现问题,每个人都会抱怨,而且通常抱怨最多的人贡献最少,这就导致那些拥有一些世界上最常用项目的才华横溢的开发人员,几乎没有得到认可。

[[440497]]

相关报道:

  • https://uk.pcmag.com/security/137653/critical-apache-log4j2-exploit-demonstrated-in-minecraft
  • https://www.ithome.com.tw/news/148332

【本文是51CTO专栏机构大数据文摘的原创译文,微信公众号“大数据文摘( id: BigDataDigest)”】

戳这里,看该作者更多好文   

 

责任编辑:赵宁宁 来源: 51CTO专栏
相关推荐

2014-04-26 13:49:21

网警网络安全首都网络安全日

2018-12-28 18:14:52

数据安全互联网

2013-10-16 15:36:36

互联网产品大会

2021-07-12 08:53:21

互联网 行业数据

2010-08-03 10:35:48

2020-09-23 16:55:29

互联网IT技术

2018-06-28 23:20:51

2018-06-27 07:18:27

2017-06-16 11:00:13

垃圾分类数据垃圾

2011-09-08 16:18:55

互联网

2019-12-17 15:08:34

移动互联网电子产品APP

2020-01-08 21:36:01

移动互联网4G互联网江湖

2018-07-25 15:09:40

2012-03-23 13:21:47

2017-09-06 17:55:17

用户体验UE社交媒体

2010-03-19 11:07:22

百兆宽带美国

2011-06-16 08:54:51

2012-11-28 11:05:29

co-worker

2018-01-16 19:45:37

LinuxTOR网络匿名上网

2018-04-20 10:58:54

点赞
收藏

51CTO技术栈公众号