必威国际有限公司Jenkins安全建议2017-07-10

本建议最初建议将Poll SCM插件升级到1.4版本。这是不正确的。版本1.3.1包含修复。

这个建议公布了Jenkins插件中的漏洞:必威国际有限公司

描述

参数化触发器插件检查项目/构建权限失败

安全- 201 / cve - 2017 - 1000084

Jenkins中的构必威国际有限公司建与一个身份验证相关联,该身份验证控制构建与Jenkins中的其他元素交互的权限。默认情况下,构建作为SYSTEM运行,并且不受约束,除非插件实现特定的附加权限检查。

插件等授权项目的插件允许更改与构建相关联的身份验证。

参数化触发器插件没有检查它正在运行的构建身份验证,并允许触发Jenkins中的任何其他项目。必威国际有限公司

该插件现在已经被调整为在触发下游构建之前检查Item/Build权限。

CSRF漏洞和不充分的权限检查允许捕获Subversion插件中的凭据

安全- 303 / cve - 2017 - 1000085

Subversion Plugin连接到用户指定的Subversion存储库,作为表单验证的一部分(例如检索标签列表)。

此功能不正确地检查权限,允许任何用户与项目/构建权限(但不是项目/配置)连接到任何web服务器或Subversion服务器,并发送凭据与一个已知的ID,从而可能捕获他们。

此外,该功能不需要使用POST请求,因此可以在不通过跨站点请求伪造攻击直接访问Jenkins的情况下执行上述操作。必威国际有限公司

这个功能现在可以正确地检查权限,并且只能通过POST使用。

在定期备份插件中缺少权限检查允许每个用户更改设置

安全- 335 / cve - 2017 - 1000086

定期备份插件不执行任何权限检查,允许任何具有总体/读访问权限的用户更改其设置,触发备份,恢复备份,并通过日志旋转删除所有以前的备份。

此外,插件不需要通过POST发送对其API的请求,从而使自己受到跨站请求伪造攻击。

插件配置现在可以正确地检查权限,并且只能通过POST使用。

具有总体/读访问权限的非特权用户可以在GitHub分支源插件中枚举凭据id

安全- 342 / cve - 2017 - 1000087

GitHub Branch Source提供了一个适用的凭证id列表,允许用户配置一个作业来选择他们想要使用的那个。

此功能不检查权限,允许任何具有Overall/Read权限的用户获得有效凭据id列表。这些可以作为攻击的一部分,使用另一个漏洞捕获凭据。

在这个插件中,枚举凭证id现在需要拥有扩展读权限(当该权限被启用时;否则配置权限)到在其上下文中访问凭据的作业。如果不存在作业上下文,则需要总体/管理员权限。

安全- 352 / cve - 2017 - 1000088

Sidebar Link插件允许用户配置作业、视图和代理,以便将这些对象的条目添加到侧边栏。

没有输入验证,这意味着用户可以使用javascript:这是一个持久的XSS漏洞。

现在,只有一组被批准的方案是默认允许的:httphttpsftpftpmailto新闻irc,小田鼠nntp饲料远程登录mmsrtspsvn电话传真xmpp,以及相对链接。配置了被禁止方案的侧边栏条目会被重定向到Jenkins中的错误页面,解释它是被禁止的。必威国际有限公司

要从这个模式列表中添加或删除,请提供Java系统属性hudson.plugins.sidebar_link.LinkProtection.whitelistedSchemes允许使用完整的以逗号分隔的模式列表。

管道:构建步骤插件无法检查项目/构建权限

安全- 433 / cve - 2017 - 1000089

Jenkins中的构必威国际有限公司建与一个身份验证相关联,该身份验证控制构建与Jenkins中的其他元素交互的权限。默认情况下,构建作为SYSTEM运行,并且不受约束,除非插件实现特定的附加权限检查。

插件等授权项目的插件允许更改与构建相关联的身份验证。

管道:构建步骤插件没有检查它正在运行的构建身份验证,并允许触发Jenkins中的任何其他项目。必威国际有限公司

该插件现在已经被调整为在触发下游构建之前检查Item/Build权限。

基于角色授权策略插件配置中的CSRF漏洞

安全- 516 / cve - 2017 - 1000090

基于角色的授权策略插件不需要通过POST发送请求到它的API,因此开放自己的跨站请求伪造攻击。这使得攻击者可以向任何用户添加管理员角色,或者删除授权配置,从而阻止对Jenkins的合法访问。必威国际有限公司

这个功能现在只能通过POST使用。

CSRF漏洞和不充分的权限检查允许捕获GitHub分支源插件的凭据

安全- 527 / cve - 2017 - 1000091

GitHub Branch Source Plugin连接到用户指定的GitHub API URL(例如GitHub Enterprise),作为表单验证和完成(例如验证扫描凭证是正确的)的一部分。

该功能不正确地检查权限,允许任何具有Overall/Read访问Jenkins权限的用户连接到任何web服务器并发送已知ID的凭据,从而可能捕获他们。必威国际有限公司

此外,该功能不需要使用POST请求,因此可以在不通过跨站点请求伪造直接访问Jenkins的情况下执行上述操作。必威国际有限公司

这个功能现在可以正确地检查权限,并且只能通过POST使用。

Git插件中的CSRF漏洞允许捕获凭证

安全- 528 / cve - 2017 - 1000092

Git Plugin连接到用户指定的Git存储库,作为表单验证的一部分。

攻击者没有直接访问詹金斯但可以猜测用户名/密码凭据ID可以诱骗开发人员与任必威国际有限公司务配置权限与恶意的詹金斯的URL链接后这将导致詹金斯Git客户端发送一个attacker-controlled服务器的用户名和密码。

这个功能现在只能通过POST使用。

Poll SCM Plugin中的CSRF漏洞允许未经授权的轮询

安全- 529 / cve - 2017 - 1000093

轮询SCM插件不需要通过POST发送请求到它的API,因此开放自己的跨站请求伪造攻击。这允许攻击者对已知名称的项目发起轮询。

虽然Jenk必威国际有限公司ins通常不认为轮询是一种值得保护的操作,因为它类似于缓存失效,但插件专门添加了使用该功能的权限,而这个问题破坏了该权限。

这个功能现在只能通过POST使用。

具有总体/读访问权限的非特权用户可以在Docker Commons Plugin中枚举凭据id

安全- 533 / cve - 2017 - 1000094

Docker Commons Plugin提供了一个可应用的凭证id列表,允许用户配置作业来选择一个他们想用Docker Registry进行身份验证的凭证id。

此功能不检查权限,允许任何具有Overall/Read权限的用户获得有效凭据id列表。这些可以作为攻击的一部分,使用另一个漏洞捕获凭据。

在这个插件中,枚举凭证id现在需要拥有扩展读权限(当该权限被启用时;否则配置权限)到在其上下文中访问凭据的作业。如果不存在作业上下文,则需要总体/管理员权限。

脚本安全插件中的默认批准签名列表中的不安全方法

安全- 538 / cve - 2017 - 1000095

默认的已批准签名列表包括以下条目:

DefaultGroovyMethods。putAt(Object, String, Object)getAt(对象、字符串)

这些允许通过使用例如。currentBuild(“rawBuild”)而不是currentBuild.rawBuild

此外,以下条目允许访问由于脚本安全性而无法访问的私有数据:

groovy.json.JsonOutput.toJson(关闭)groovy.json.JsonOutput.toJson(对象)

这些签名现已从核准签名名单中删除,并添加到危险签名名单中。

集成了脚本安全性并使用这些方法的脚本(如Pipeline作业)现在将会失败。这些方法的使用将出现在进程内脚本审批页面上,它会警告管理员批准这些方法是不安全的。

由于管道:Groovy插件中不完整的沙箱保护导致的任意代码执行

安全- 551 / cve - 2017 - 1000096

管道须遵守脚本安全:要么整个管道需要被批准,要么它在沙箱中运行,只允许调用已批准的方法等。

管道脚本中的构造函数、实例变量初始化器和实例初始化器不受沙箱保护,因此可以执行任意代码。

例如,具有在Jenkins中配置管道权限的普通Jenkins用户,或包含jenk必威国际有限公司insfile的可信提交库的可信提交者都可以利用这一点。

这些语言元素现在受到沙箱保护。

此更改可能导致依赖于不完整沙箱保护的现有脚本开始失败,并需要额外的脚本批准。

对此的修复引入了一个回归,导致在管道脚本中定义的类的构造函数和实例初始化器不再能够设置最后字段。静态初始化器不再能够设置静态最终字段。解决方法是将字段设置为非final。

SSH Plugin将凭据存储在纯文本配置文件中

必威国际有限公司詹金斯- 21436 / cve - 2017 - 1000245

SSH Plugin存储允许作业通过SSH协议访问远程服务器的凭据。用户密码和SSH密钥的密码以明文形式保存在配置文件中。

SSH插件现在集成与凭证插件现有的凭证被迁移。

严重程度

影响版本

  • Docker Commons Plugin - up and including version 1.7

  • Git Plugin最新版本为3.3.1和2.4.0-beta-1

  • GitHub分支源插件2.0.7和2.2.0-beta-1版本

  • 参数化触发器插件,包括2.34版本

  • 定期备份插件,最大支持1.4版本

  • 管道:构建步骤插件到并包括2.5版

  • 管道:Groovy插件到并包含2.36版本

  • 轮询SCM插件直到并包括版本1.3

  • 基于角色的授权策略插件,最大支持版本2.5.0

  • 脚本安全插件最高及包括1.29版本

  • 侧边栏链接插件到并包括1.8版

  • SSH插件到并包括2.4版本

  • Subversion插件到并包括2.8版本

修复

  • Docker Commons Plugin应该更新到1.8版本

  • Git Plugin应该更新到3.3.2或3.4.0-beta-2版本

  • GitHub分支源插件应该更新到2.0.8或2.2.0-beta-2版本

  • 参数化触发器插件应该更新到2.35版本

  • 定期备份插件应该更新到1.5版

  • 管道:构建步骤插件应该更新到2.5.1版本

  • 管道:Groovy插件应该更新到2.36.1版本

  • 轮询SCM插件应该更新到1.3.1版本

  • 基于角色的授权策略插件应该更新到2.5.1版本

  • 脚本安全插件应该更新到版本1.29.1

  • 侧边栏链接插件应该更新到1.9版

  • SSH Plugin应该更新到2.5版本

  • Subversion插件应该更新到2.9版本

这些版本包括对上述漏洞的修复。所有以前的版本都会受到这些漏洞的影响,除非另有说明。

信贷

詹金斯计必威国际有限公司划想要感谢记者们发现并报告这些漏洞:

  • 丹尼尔·贝克(Daniel Beck), CloudBees公司安全- 529

  • Jesse Glick, CloudBees, Inc。SECURITY-303, SECURITY-342, SECURITY-527, SECURITY-528

  • 卡尔·舒尔茨(Karl Shultz), CloudBees公司安全- 533

  • 内森Rennie-Waldock安全- 335

  • Simon St约翰·格林安全- 551

  • 史蒂文·克里斯托(Steven Christou), CloudBees公司安全- 201

  • Suhas Sunil Gaikwad @IamSuhasGaikwad安全- 352