这是一个关于Jenkins的主要变化的帖子,从Jenkins 2.102和Je必威国际有限公司nkins LTS 2.107.1开始。这是一个带有严重的插件回归风险的变化。如果你是詹金斯的管理员,请必威国际有限公司阅读这篇博文升级指南之前升级。

我想提供一些关于中- 200更改,它被包含在新的Jenkins LTS 2.107中。必威国际有限公司x基线。

背景

多年来,詹金斯一直特别必威国际有限公司黑名单某些类和包根据已知或怀疑的漏洞。这种方法被证明是不可持续的,因为存在通过来自第三方组件的未知类进行反序列化攻击的风险安全- 429 / cve - 2017 - 1000353在2.46.2中,决定用限制性更强的白名单取代黑名单。2017年10月杰西•格里克提出了Jenkins增必威国际有限公司强提案,最终被采纳为中- 200

这个更改意味着插件序列化非白名单的java内部类和第三方类有回归的风险,这就是为什么遵循这个版本的升级指南如此重要。

当前状态

JEP-200首次集成在Jenkins 2.102中(2018年必威国际有限公司1月发布),从那时起它已经进行了大量测试。看到这篇为最初的公告。

在过去的两个月里,我们收到了超过75年问题来自Jenkins每周发布的必威国际有限公司用户。所有这些问题都被分类了,我们已经发布了大部分修复。超过50个插件总的来说已经修复了,为了支持兼容性测试,还更新了更多的插件。所发现的退化很大一部分是由真正的缺陷造成的,这些缺陷导致了插件的性能和稳定性问题。非常感谢所有的Jenkins贡献者和插件维护者,必威国际有限公司是他们帮助我们及时地完成了这项工作!

在过去的6周里,Jenkins每周发必威国际有限公司布的版本都获得了积极的社区评价,在3月1日,JEP-200的使用率达到了12%。所有主要的插件也已经在每周发布的版本中进行了直接测试或验证。因此,我们相信更改已经准备好在LTS中发布了。

另一方面,我们继续收到JEP-200回归报告。它们主要是由小众插件引起的,这些插件在每周发布的版本中没有被广泛使用,不幸的是,并不是所有的修复程序都已经发布了Wiki页面最新的信息)。我们预计在LTS发布和更广泛的采用后会有更多的回归报告。

为了简化升级到新的LTS基线,我一起准备了一些有用的资料利亚姆•纽曼杰西•格里克.下面你可以找到嵌入的幻灯片和视频,或者向下滚动查看文本形式的关键信息。

视频:

詹金斯管必威国际有限公司理员

升级到使用JEP-200的核心需要一个特殊的更新过程,下面将对此进行描述。

升级詹金斯必威国际有限公司

  1. JEP-200不是2.107.1中唯一的主要变化,请阅读全面升级指南小心翼翼地

  2. 如果您有一种方法可以在将升级应用到生产环境之前对其进行测试,那么就进行测试

  3. 备份实例,这样就有了回滚的简单方法

  4. 更新所有受影响的插件。看到这个Wiki页面获取受影响插件、修复状态和解决方案的列表

  5. 如果需要,为未发布的补丁申请解决方案(见下面)

  6. 更新到Jenkins核心的新版本必威国际有限公司

使用备份和暂存服务器是最好的建议任何升级,尤其是这个,考虑到相对较高的回归风险。由于这些变化的性质,一些插件可能会在升级后拒绝加载,导致Jenkins服务无法启动。必威国际有限公司

升级后

在某种程度上,这一变化对流行插件的影响的预先测试已经完成,大多数用户(甚至插件开发人员)应该不会注意到任何差异。尽管如此,还是强烈建议在升级后监控您的系统,特别是以下内容:

  • 必威国际有限公司系统日志(特别是在启动过程中)

  • 工作/构建日志

如果遇到引用的日志消息https://必威国际有限公司jenkins.io/redirect/class-filter/URL,它很可能是一个JEP-200回归。例子:

/var/lib/jenkins/plugins/some-plugin-nam必威国际有限公司e/WEB-INF/lib/some-library-1.2.jar可能是危险的,所以拒绝;参见https://je必威国际有限公司nkins.io/redirect/class-filter/

如果您看到这类消息,我们强烈建议您报告它,以便对其进行调查,并可能迅速修复。

报告中- 200的问题

从5月1日开始,JEP-200问题由插件和核心维护者进行分类。如果需要的话,可以使用JEP-200维护人员进行代码评审,但是他们不会每天在JIRA中评审案例,也不会搜索分类错误的问题。如果您有新的JEP-200回归,请遵循以下指导方针。

请报告您遇到的任何与上述模式匹配的问题必威国际有限公司詹金斯问题跟踪器,在适当的插件组件下。在报告之前请检查这个问题是否已经报告过。

  1. 添加中- 200标签

  2. 包括在日志中看到的stacktrace

  3. 如果可能,包括从头开始重现问题的完整步骤

您可以使用下面的方法找到以前报告的问题的示例这个查询

必威国际有限公司Jenkins开发人员将评估问题,并努力以核心和/或插件更新的形式提供修复。在特性发布之后,有一个特别的团队对报告进行分类。从5月1日开始,问题将由插件和核心维护者进行分类。看到中- 200维护计划更多信息。

有关详细信息和当前状态,请参见受JEP-200修复影响的插件

应用解决方案

假设您没有特别的理由认为所讨论的类具有危险的反序列化语义(这种情况很少见),那么可以在您自己的安装中解决这个问题,作为临时的权宜之计。注意JEP-200日志消息中提到的类名,并使用必威国际有限公司hudson.remoting.ClassFilter启动选项,例如:

java -Dhudson.remoting.ClassFilter = some.pkg.and.ClassName some.pkg.and。OtherClassName jar詹金必威国际有限公司斯。战争……

这个解决方案过程可能需要多次迭代,因为解决方案中列出的类可能还包括需要列入白名单的类型的字段。

插件开发人员

如果你是一个插件开发人员,请参阅最初的JEP-200公告.那篇博客文章提供了在JEP-200修改后测试和修复插件兼容性的指导方针。上面的演示还提供了一些关于需要测试的内容的信息。

关于作者
奥列格Nenashev

必威国际有限公司詹金斯核心维护者和董事会成员。Oleg在2008年开始在硬件/嵌入式项目中使用Hudson,并在2012年成为Jenkins的活跃贡献者。必威国际有限公司现在他领导着几个詹金斯必威国际有限公司团体、外展计划(谷歌代码之夏Hacktoberfest),必威国际有限公司詹金斯聚会在瑞士和俄罗斯。奥列格工作CloudBees并专注于社区的关键项目。