Jenkins修复多个安全漏洞安全通告

发布时间 2018-07-25
漏洞编号和级别
CVE-2018-1999001  厂商自评:高  CVSS分值:官方未评定
CVE-2018-1999002  厂商自评:高  CVSS分值:官方未评定
CVE-2018-1999003  厂商自评:中  CVSS分值:官方未评定
CVE-2018-1999004  厂商自评:中  CVSS分值:官方未评定
CVE-2018-1999005  厂商自评:中  CVSS分值:官方未评定
CVE-2018-1999006  厂商自评:中  CVSS分值:官方未评定

CVE-2018-1999007  厂商自评:中  CVSS分值:官方未评定


影响版本

Jenkins weekly 2.132 以及更早的版本

Jenkins LTS 2.121.1 以及更早的版本


漏洞概述
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

Jenkins 官方在 7 月 18 号发布了安全资讯,对两个高危和5个中级漏洞进行通告: https://jenkins.io/security/advisory/2018-07-18/。


CVE-2018-1999001配置文件路径改动导致管理员权限开放漏洞
远程且未经授权的攻击者可以通过构造恶意登录凭证,从Jenkins 主目录下移除 config.xml 配置文件到其他目录,从而导致 Jenkins 服务下次重启时退回 legacy 模式,对匿名用户也会开放管理员权限,如下图所示:

 


此漏洞利用的条件是需要等待 Jenkins 服务的重启。


为了缓解此问题,我们强烈建议没有此修复程序的Jenkins实例的管理员可以由不受信任的用户访问,在关闭Jenkins之前不久保存全局配置。这样做会将当前配置从内存写入config.xml文件,该文件仅在启动时或重新加载配置时读取。

如果在利用此问题后Jenkins已经关闭,则可以在Jenkins主目录中的users/$002e$002e/config.xml中找到config.xml文件。


CVE-2018-1999002任意文件读取漏洞

Jenkins 使用的 Stapler Web 框架存在任意文件读取漏洞。攻击者在远程且未经授权的情况下,可以通过构造恶意的 HTTP 请求发往 Jenkins Web 服务端,从请求响应中直接获取攻击者指定读取的文件内容。


从官方提交的安全测试补丁中,可以看出,此漏洞是在 HTTP 请求头 Accept-Language 中进行恶意数据构造,并主要针对 Windows 系统(在 Linux 系统上利用则需要满足特定条件):

 


测试发现此漏洞的利用需要开启匿名用户访问权限(测试版本为 Jenkins LTS 2.121.1)。

Stapler中的输入验证已得到改进,以防止这种情况发生。


CVE-2018-1999003未经授权的用户可以取消排队的构建
处理排队构建取消的URL未执行权限检查,允许具有“总体/读取”权限的用户取消排队构建。

处理排队构建的取消的URL现在确保用户具有项目/取消权限。


CVE-2018-1999004未经授权的用户可以启动和中止代理启动
在Jenkins主服务器上启动代理启动的URL未执行权限检查,允许具有“总体/读取”权限的用户启动代理启动。
这样做取消了指定代理程序的所有正在进行的启动,因此这允许攻击者阻止代理无限期启动。

现在,代理启动的URL可确保用户具有“代理/连接”权限。


CVE-2018-1999005存储的XSS漏洞
在像/ view / ... / builds这样的URL上显示的构建时间线小部件没有正确地转义项目的显示名称。这导致了能够控制项目显示名称的用户可利用的跨站点脚本漏洞。

Jenkins现在转义时间线小部件上显示的作业显示名称。


CVE-2018-1999006未经授权的用户可以确定何时从其JPI包中提取插件
指示何时将插件JPI文件最后提取到Jenkins主目录中的插件/子目录中的文件可由具有总体/读取权限的用户通过HTTP访问。这允许未经授权的用户确定给定插件的可能安装日期。

受影响的文件不再通过HTTP提供。


CVE-2018-1999007 Stapler调试模式下的XSS漏洞
Stapler是Jenkins用于路由HTTP请求的Web框架。启用其调试模式后,HTTP 404错误页面将显示诊断信息。这些错误页面没有逃避它们显示的部分URL,在极少数情况下会导致跨站点脚本漏洞。
现在可以正确转义这些错误页面上显示的部分URL。

作为解决方法,不应在Stapler调试模式下对不受信任的用户可访问的实例启用Stapler调试模式。


修复建议:
用户应及时升级进行防护:
Jenkins weekly 升级到 2.133 版本

Jenkins LTS 升级到 2.121.2 版本


参考链接:
https://jenkins.io/security/advisory/2018-07-18/
https://github.com/jenkinsci/jenkins/commit/d71ac6ffe98ee62e0353af7a948a4ae1a69b67e9