欢迎光临
我们一直在努力

【网络安全】Jenkins 非预期方法调用代码执行漏洞预警

推广者专属福利,新客户无门槛领取总价值高达2775元代金券,每种代金券限量500张,先到先得。

2018年12月06日,阿里云云盾应急响应中心监测到Jenkins官方发布安全公告,披露了一个高危安全漏洞。攻击者构造特定的恶意请求,可以调用到非预期范围内的方法逻辑,可能导致服务器敏感信息泄露或代码执行等危害。

影响版本

Jenkins weekly 2.153 及之前版本

Jenkins LTS 2.138.3 及之前版本

安全建议

更新 Jenkins weekly 到 2.154 版本

更新 Jenkins LTS 到 2.138.4 版本或 2.150.1 版本

或放内部服务器,不对外开放;

相关链接

https://jenkins.io/security/advisory/2018-12-05/

漏洞说明:

说明 

通过精心设计的URL执行代码 

SECURITY-595 / CVE待定

Jenkins使用Stapler Web框架进行HTTP请求处理。Stapler的基本前提是它使用对符合其命名约定的代码元素的反射访问。例如,任何公开的方法,其名称开头get,并且有一个Stringintlong,或者没有说法,可以调用的是通过这些手段可及的对象这样。由于这些命名约定与Java中的常见代码模式非常匹配,因此访问精心设计的URL可以调用从未打算以这种方式调用的方法。

在发布此通报时,我们发现最新的Jenkins版本中尚未包含此修复的以下潜在攻击:

  • 使用内置的Winstone-Jetty服务器运行Jenkins时,未经身份验证的用户可以使所有会话无效。
  • 具有“总体/读取”权限的用户可以在内存中创建新的用户对象
  • 具有总体/读取访问权限的用户可以手动启动否则定期执行的实现运行AsyncPeriodicWork

前两个Jenkins安全更新,LTS 2.121.3和2.138,以及Jenkins LTS 2.138.2和2.146包含的更改可防止此漏洞导致的其他攻击。以下是在修复开发期间发现的一系列攻击,并且已在当前版本的Jenkins中被阻止:

  • 在Jenkins 2.121.2或2.137之前,未经身份验证的用户可以绕过整体/读取和作业/读取权限检查,并访问有关当前正在运行的构建的作业中的构建的信息,例如构建日志。
  • 对于Jenkins 2.121.2或2.137,具有“总体/读取”访问权限的用户可以绕过所有作业的“作业/读取”权限检查。也可以枚举给定实例上的所有顶级作业。
  • 在Jenkins 2.121.2或2.137之前,未经身份验证的用户可以访问为Jenkins主服务器或任何代理进程定义的环境变量。
  • 在Jenkins 2.138.1或2.145之前,具有“整体/读取”和“凭据/查看”权限的用户可以枚举存储在系统范围的凭据存储中的所有凭据,并访问用户名和密码(凭据插件)。在Jenkins 2.121.2或2.138之前,只需要凭据/查看权限。
  • 在Jenkins 2.138.1或2.145之前,未经身份验证的用户可以从LDAP安全领域(LDAP插件)的配置中访问LDAP密码。
重要
Jenkins LTS 2.121.3和2.138以及Jenkins LTS 2.138.2和2.146中发布的与安全相关的改进是此修复的重要部分,我们强烈建议不要禁用它们。禁用它们可以实现上述一些攻击。以前发布的文档已更新。

鉴于潜在的巨大攻击面,我们完全可以预期,在没有应用此修复程序的Jenkins版本中,我们目前尚未发现其他攻击。这反映在我们为此问题分配的高分中,而不是通过已知问题将分数限制为影响。

Stapler Web框架已通过服务提供程序接口(SPI)进行了扩展,该接口允许从路由中排除方法和字段。现在,Jenkins中SPI的实现限制do*了Stapler可以反射调用哪些getter方法,操作方法和字段。更多详细信息可在开发人员文档中找到:

注意
此更改预计会影响某些插件中的现有功能。最可能的影响是某些URL现在返回404 Not Found。在极少数情况下,返回的响应可能不是404 Not Found,但仍然不同于应用此修复之前的响应。我们在Jenkins wiki中跟踪已知受影响的插件及其状态。

强制迁移用户记录 

SECURITY-1072 / CVE待定

SECURITY-499的修复程序引入了一种机制,该机制在加载具有不安全用户名(用户ID)的用户时重命名磁盘上的用户目录。输入验证不足允许攻击者通过在尝试登录时提交精心设计的用户名来重命名此类用户目录,即使对于具有安全用户名的用户,即使密码无效也是如此。这样做可以防止用户之后成功登录。

Jenkins不再使用目录名作为用户名的引用,因此无需迁移用户记录。相反,新文件users/users.xml用于将用户名映射到包含用户元数据的目录。

在将Jenkins更新为包含此修复程序的版本后的第一次启动时,将迁移现有的旧用户目录。有关此用户记录迁移的进一步建议,请参阅LTS升级指南

工作区浏览器允许访问工作区外的文件 

SECURITY-904 / CVE待定

工作空间的文件浏览器,存档的工件以及$JENKINS_HOME/userContent/跟踪到正在浏览的目录之外的位置的符号链接。

虽然构建通常可以访问Jenkins分配的工作空间之外的文件系统,但这不应该扩展到在该代理上执行构建之外。值得注意的是,配置可能已更改为不允许构建在给定代理上运行,但在上一次执行期间使用的工作空间仍然存在,并且可能允许在工作空间外浏览文件系统。

浏览UI或将目录内容下载为ZIP文件都不允许再访问工作区外的目录和文件。

在极少数情况下,可能需要禁用此修复程序。为此,请将Java系统属性设置hudson.model.DirectoryBrowserSupport.allowSymlinkEscapetrue。 了解有关Jenkins系统属性的更多信息

注意
虽然相同的组件允许浏览存档的工件,但此修复程序不适用于存档的工件。有效的符号链接存档为它们在代理上指向的文件和目录,而无效的符号链接无法转义Jenkins主服务器上存档工件的根目录。此前已在2018-02-27安全公告中修复为SECURITY-162 。

通过cron表达式验证可能导致拒绝服务 

SECURITY-1193 / CVE待定

当输入仅匹配某些稀有日期的cron表达式时,cron表达式的表单验证(例如“Poll SCM”,“定期构建”)可能会进入无限循环,无限期地阻止请求处理线程。

严重 

受影响的版本 

  • Jenkins 每周最多包括2.153
  • Jenkins LTS包括2.138.3

固定 

  • Jenkins每周应更新到2.154版
  • Jenkins LTS应更新为2.138.4或2.150.1版本

这些版本包括对上述漏洞的修复。除非另有说明,否则所有先前版本均被视为受这些漏洞影响。

赞(0) 打赏
未经允许不得转载:我爱IT社区-做技术人员的指路明灯 » 【网络安全】Jenkins 非预期方法调用代码执行漏洞预警

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

阿里云优惠网免费分享阿里云优惠券,阿里云推荐码,阿里云代金券领取,阿里云服务器ecs租用、阿里云服务器购买。领取本站阿里云优惠券可购买限时2折服务器,并返现20%费用。

年终钜献云服务2折进行中阿里云1888优惠券

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏