log4j漏洞如何利用(Log4j事件突显开源窘境)
cURL 创造者 Daniel Stenberg 近日收到了一封来自《财富》美国 500 强企业的电子邮件,被要求回答很多关于 cURL 是否受到 Log4Shell 漏洞影响以及如何处理的问题。该公司(或其客户)可能正在使用 cURL,于是提出了包括 cURL 是否依赖 log4j 等问题。
随后他将这封邮件截图社交媒体上,他在推文中调侃的写道:
如果你是一家价值数十亿美元的公司,并且你关注 log4j,为什么你不直接给那些你从未支付过任何费用的 OSS 作者发一封电子邮件,并要求在 24 小时内回复来免费提供大量信息?
12 月 9 日,Apache log4j 日志库中发现一个漏洞。这个库被广泛用于 java/J2EE 应用开发项目和基于 Java/J2EE 的现成软件解决方案的供应商。
Log4j 包括一个搜索机制,可用于通过格式字符串中的特殊语法进行查询。例如,它可以用来查询各种参数,如通过${java:version}查询Java环境的版本,等等。然后,通过在字符串中指定jndi键,搜索机制使用JNDI API。
默认情况下,所有的查询都是使用 java:comp/env/* 前缀进行的;但是,作者已经实现了通过在键中使用冒号的方式来使用自定义前缀的选项。这就是漏洞所在:如果 jndi:ldap:// 被用作密钥,请求就会转到指定的LDAP服务器。其他通信协议,如LDAPS、DNS和RMI,也可以被使用。
因此,由攻击者控制的远程服务器可以将一个对象发回给有漏洞的服务器,有可能导致系统中的任意代码被执行或机密数据被泄露。攻击者需要做的就是通过机制发送一个特殊的字符串,将这个字符串写入日志文件,因此由Log4j库处理。这可以通过简单的HTTP请求来实现,例如,通过网络表格、数据字段等发送的请求,或使用服务器端日志的任何其他类型的互动。
该漏洞被 Tenable 描述为“过去十年中影响范围最广、影响程度最严重的漏洞”。
cURL(client URL 请求库的简称)是一个命令行接口,用于检索可通过计算机网络访问的资源的内容。该资源是用一个 URL 指定的,而且必须是软件支持的类型。该软件允许创建或修改资源(与wget不同),因此它可以作为一个REST客户端使用。
cURL 程序实现了用户界面,它是基于libcurl软件库,用C语言开发。这使得那些希望在其程序中拥有网络访问功能的开发者可以使用它。许多语言(C 、Java、.NET、Perl、PHP、Ruby...)都创建了接口。
该库支持 DICT、文件、FTP、FTPS、Gopher、HTTP、HTTPS、IMAP、IMAPS、LDAP、LDAPS、POP3、POP3S、RTSP、SCP、SFTP、SMB、SMBS、SMTP、SMTPS、Telnet 和 TFTP。
在一篇博文中,cURL 开发者 Daniel Stenberg 收到了一家市值进入财富 500 强的公司的来信。他写道
2022 年 1 月 21 日星期五,我收到这封电子邮件。我在Twitter上说了这件事,然后它就上了热搜。
这封邮件来自一家价值数十亿美元的财富 500 强公司,该公司或者他们的客户正在使用我的代码构建产品。
我想他们这样做是出于合规性的考虑,并“忘记”了他们的开源组件并不是由“合作伙伴”自动提供的,他们只需向其索取这些信息即可。
我非常简短地回复了这封电子邮件,并说一旦我们签署了支持合同,我将很乐意回复细节。
我认为这也许是开源金字塔的一个很好的例子,处于最上层的用户完全没有考虑到下层的维护方式。建造房子而不关心地基。
在他的推文和博文中,他删除了该公司的名称,并给出了理由:“我很可能有权告诉你他们是谁,但我宁愿不说。(特别是如果我能够与他们达成有利可图的商业交易。)我认为我们可以在许多公司中找到这种程度的权利”。
他继续说:
这一封邮件中所表现出的无知和无能程度令人震惊。
虽然他们甚至没有具体说他们使用的是什么产品,但我所参与的或有版权的代码都没有使用 log4j,任何初学者或更好的工程师都可以轻易地验证这一点。
在电子邮件的图片版本中,我修改了姓名栏,以更好地匿名发件人,在下面的文本中,我用 NNNN 替换了它们。(是的,他们现在在 log4j 上发送请求,显然是非常晚了,这是非常奇怪的)。
在电子邮件中,该公司要求 Daniel Stenberg 回答如下问题
1. 如果你的任何应用程序使用 Java 日志库,那么运行的 Log4j 是什么版本?
2. 你的公司是否发生过任何经证实的安全事件?
3. 如果是这样,哪些应用程序、产品、服务和相关版本受到影响?
4. 是否有任何 NNNN 产品和服务受到影响?
5. NNNN 的非公开信息或个人信息是否受到了影响?
6. 如果是,请立即提供受影响的 NNNN 信息的细节。
7. 完成更正的时间框架是什么(MM/DD/YYY)?列出步骤 NNNN,包括每个步骤的日期。
8. NNNN 需要采取什么行动来完成这一更正?
从这件事情可以看出,目前确实存在大型企业根本不关心底层项目,甚至不了解底层项目如何运转的情况,这些企业在自己不怎么在意的底层项目基础上构建自己的商业项目,并以此赚取了非常可观的利润。
不光如此,Log4j 安全漏洞事件已发酵近两个月时间,邮件中列出的不少问题都是公开可查询到的信息,企业安全部门只需随手在搜索引擎里一搜就能获得答案。
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com