编译:奇安信代码卫士团队

本周一,热门开源自动化服务器软件 Jenkins 发布安全公告称,Jetty web 服务器中存在一个严重漏洞,可导致内存损坏并导致机密信息被盗。

该漏洞的编号为 CVE-2019-17638,CVSS 评分为9.4,影响Eclipse Jetty9.4.27.v20200227至9.4.29.v20200521 版本。Elipse Jetty 是一款全功能工具,为软件框架提供 Java HTTP 服务器和 web 容器。

该安全公告指出,“当开始使用 java-jar Jenkins.war时,Jenkins 捆绑围绕 Jetty 的封装 Winstone-Jetty,当作 HTTP 和 servlet服务器。这是使用任何安装程序或软件包时运行 Jenkins 的方式,而不是使用诸如 Tomcat 之类的 servlet 容器运行时的方式。”

安全公告指出,“该漏洞可导致未认证攻击者获取可能包含其它用户敏感数据的 HTTP响应标头。”该漏洞影响 Jetty 和 Jenkins Core,似乎在 Jetty 版本9.4.27 中引入。该版本中增加了处理大型 HTTP 响应标头并阻止缓冲区溢出的机制。

Jetty 的项目主管 Greg Wilkins 表示,“这个问题存在于缓冲区溢出中,我们发布了标头缓冲区但字段不是null。”为此,Jetty 抛出一个异常生成 HTTP 431 错误,导致HTTP响应标头两次被发布到缓冲区池,从而造成内存损坏和信息泄露。

为此,由于双重发布,两个线程能够在同一时间从池中获得相同的缓冲区,并可能导致请求访问由另外一个线程编写的响应,其中可能包括会话标识符、认证凭据和其它敏感信息。

换言之,“虽然thread1将使用 ByteBuffer 编写 response1数据,thread2 以response2 数据填充 ByteBuffer。Thread1 继续编写包含 response2 数据的缓冲区。这就导致发布 request1 和希望响应的 client1 看到可能包含属于 client2 敏感数据的 response2。”

在其中一种情况下,内存损坏使得客户端有可能在会话中间移动,因此具有跨账户访问权限,由于一个用户的响应认证 cookie 被发送给另外一个用户,因此导致用户A插入用户B的会话中。

漏洞影响披露后,该漏洞已于上个月发布的 Jetty9.4.30.v20200611 版本中修复。通过一个命令行接口 Winstone 绑定 Jetty的Jenkins 已在昨天发布的 Jenkins 2.243和 Jenkins LTS2.235.5 中修复这个缺陷。

建议 Jenkins 用户将软件更新至最新版本以缓解该缓冲区损坏缺陷。

Jenkins 安全公告请见:

https://www.jenkins.io/security/advisory/2020-08-17/#descriptions

原文链接

https://thehackernews.com/2020/08/jenkins-server-vulnerability.html

声明:本文来自代码卫士,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。