Jenkins服务器漏洞致敏感信息泄露

 

Jenkins是一个开源的自动化服务器软件。近日,Jenkins发布安全公告称Jetty web服务器中存在安全漏洞,攻击者利用该漏洞可以引发内存破坏和机密信息泄露。该漏洞CVE编号为CVE-2019-17638,CVSS 评分为9.4,影响Eclipse Jetty 9.4.27.v20200227 到 9.4.29.v20200521版本。Eclipse Jetty是一个提供Java HTTP服务器和软件框架中使用的web容器的全特征工具。

Jenkins绑定了Winstone-Jetty,使用java -jar jenkins.war启动时作为HTTP和servlet 服务器。奇热这也是使用任意安装或包时Jenkins的运行原理。

漏洞允许非认证的攻击者获取HTTP 响应header,其中可能包括其他用户的敏感数据。该漏洞影响Jetty 和Jenkins Core,是Jetty 9.4.27版本中引入的,其中加入了严重处理HTTP 响应header和预防缓冲区溢出的机制。

为解决这一问题,Jetty抛出一个异常来生成HTTP 431错误,导致发布的HTTP响应header到缓存池2次,引发内存破坏和信息泄露。

由于2次释放,2个线程可以同时从一个池子获取相同的缓存,允许一个请求访问其他线程写的响应,其中可能包含session id、认证凭证和其他敏感信息。

当thread1使用ByteBuffer来写入response1数据,thread2会用response2数据填入ByteBuffer中。然后,thread1会继续写入含有response2数据的缓存中。这会导致发布request1和收到响应的client1可以看到含有属于client2的敏感数据的response2。

在特殊情况下,内存破坏会导致客户端可以在会话间移动,也就可以实现跨账户的访问。因为来源于用户响应的认证cookie会发送给另外一个用户,导致用户A跳转到用户B的会话。

目前漏洞已经修复了。Jetty在上个月发布的Jetty 9.4.30.v20200611 版本中修复了该漏洞,Jenkins 2.243 和Jenkins LTS 2.235.5 中也修复了漏洞。

研究人员建议Jenkins 用户更新软件到最新版本来缓解缓存破坏漏洞。

更多技术细节参见https://bugs.eclipse.org/bugs/show_bug.cgi?id=564984

https://github.com/eclipse/jetty.project/issues/4936

你可能感兴趣的:(Jenkins服务器漏洞致敏感信息泄露)