事件描述
一、安全预警
2019年1月8日,Jenkins官方发布了一则Script Security and Pipeline 插件远程代码执行漏洞的安全公告,漏洞CVE编号为:CVE-2019-1003000,官方定级为高危。2019年2月15日,网上公布了该漏洞的利用方式,该漏洞允许具有“Overall/Read”权限的用户或能够控制SCM中的Jenkinsfile或者sandboxed Pipeline共享库内容的用户绕过沙盒保护并在Jenkins主服务器上执行任意代码。
深信服安全团队第一时间响应并发布预警信息,并将持续跟踪事态进展。
深信服安全团队风险评级:高危
二、事件概要
三、事件分析
3.1 Jenkins产品介绍
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins的目的是持续、自动地构建/测试软件项目以及监控软件开放流程,快速问题定位及处理,提示开放效率。
Script Security and Pipeline 插件是Jenkins的一个安全插件,可以集成到Jenkins各种功能插件中。它主要支持两个相关系统:脚本批准和Groovy沙盒。
3.2漏洞分析
该漏洞存在于Declarative Plugin 1.3.4.1之前的版本, Groovy Plugin 2.61.1之前的版本以及 Script Security Plugin 1.50之前的版本。该漏洞通过将AST转换注释(如@Grab)应用于源代码元素,可以在脚本编译阶段避免脚本安全沙箱保护。所以会造成具有“Overall/Read”权限的用户或能够控制SCM中的Jenkinsfile或者sandboxed Pipeline共享库内容的用户可以绕过沙盒保护并在Jenkins主服务器上执行任意代码。
3.3漏洞复现
我们通过一个攻击案例直观地了解一下漏洞的影响.
首先我们搭建一个装有2.152-alpine的jenkins运行环境
登录后建立一个job,尝试攻击
攻击步骤
1. 连接jenkins
2. 制作payload,
3. 将payload的载荷修改到job中
4.将job构建到消息队列中
5.等待job建立成功一系列操作
这是jenkins日志显示执行成功
四、影响范围
目前受影响的Jenkins插件版本:
Declarative Plugin < 1.3.4.1
Groovy Plugin < 2.61.1
Script Security Plugin < 1.5.0
五、参考链接
https://jenkins.io/security/advisory/2019-01-08/
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-1003000
解决方案
产品解决方案
深信服下一代防火墙可轻松防御此漏洞,建议部署深信服下一代防火墙的用户开启安全防护规则,可轻松抵御此高危风险。
修复建议
Jenkins官方已经针对该漏洞发布了修复CVE-2019-1003000的安全更新:
Declarative Plugin 更新至 1.3.4.1版本
https://plugins.jenkins.io/pipeline-model-definition
Groovy Plugin 更新至2.61.1版本
https://plugins.jenkins.io/workflow-cps
Script Security Plugin 更新至1.50版本
https://plugins.jenkins.io/script-security