Jenkins升级2.479.3 --> 2.504.3

发布于:2025-07-16 ⋅ 阅读:(20) ⋅ 点赞:(0)

针对 Jenkins 应用中报告的 Eclipse Jetty 安全漏洞(CVE-2025-1948),修复需分步骤完成。以下是完整解决方案:


第一步:确认漏洞真实性

  1. 验证 CVE 编号
    例如:
    • 类似真实漏洞:CVE-2021-34429(Jetty 缓冲区溢出漏洞)、CVE-2022-2047(Jetty DoS 漏洞)等。
    • 操作建议
      使用漏洞扫描工具(如 Trivy、Dependency-Check)或 Jenkins 安全公告重新确认漏洞编号。

第二步:定位 Jetty 版本

  1. 查看 Jenkins 内置 Jetty 版本
    Jenkins 默认嵌入 Jetty 作为 Web 容器。通过以下方式查看版本:

    # 进入 Jenkins 安装目录的 libs 子目录
    cd $JENKINS_HOME/war/WEB-INF/lib
    
    # 查找 jetty-server 相关 JAR 文件
    ls jetty-server-*.jar
    
    # 示例输出:jetty-server-9.4.48.v20220622.jar
  2. 确认漏洞影响范围
    根据漏洞编号查找受影响的 Jetty 版本范围。例如,若漏洞影响 Jetty < 9.4.50,需升级到 9.4.50+。


第三步:修复方案

方案 1:升级 Jenkins(推荐)

Jenkins 新版本会更新依赖的 Jetty 版本。升级步骤

# 备份 Jenkins 数据
sudo cp -r /var/lib/jenkins /var/lib/jenkins_backup

# 使用官方包管理器升级(以 Ubuntu 为例)
sudo apt update && sudo apt upgrade jenkins -y

# 或手动下载最新 WAR 包替换

wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war
sudo systemctl stop jenkins
sudo cp jenkins.war /usr/share/jenkins/
sudo systemctl start jenkins
方案 2:手动更新 Jetty 版本

若 Jenkins 未及时升级,可手动替换 Jetty 库文件:

  1. 从 Maven 仓库 下载修复漏洞的 Jetty 版本(如 9.4.50+)。
  2. 替换 Jenkins 的 Jetty 相关 JAR:
    # 进入 Jenkins 的 lib 目录
    cd /usr/share/jenkins/war/WEB-INF/lib
    # 删除旧版本 jetty-server、jetty-util 等组件
    rm jetty-server-9.4.48.v20220622.jar
    # 复制新版本 JAR 文件
    cp ~/Downloads/jetty-server-9.4.50.v20221201.jar ./
  3. 重启 Jenkins 服务:
    sudo systemctl restart jenkins

第四步:验证修复

  1. 检查 Jetty 版本
    访问 http://jenkins-server:port/manager(需启用管理功能)或查看启动日志:

    journalctl -u jenkins --since "5 minutes ago" | grep Jetty
    # 期望输出:Jenkins war exploded in XXXms (Jetty 9.4.50)
  2. 运行漏洞扫描
    使用工具重新扫描,确认漏洞已修复:

    # 使用 Dependency-Check 扫描
    dependency-check --project Jenkins --scan /usr/share/jenkins/war/WEB-INF/lib

第五步:附加防护措施

  1. 限制网络访问
    在防火墙中仅允许必要 IP 访问 Jenkins 端口,降低漏洞被利用的可能性:

    sudo ufw allow from 192.168.1.0/24 to any port 8080
  2. 启用 Jenkins 安全配置

    • 强制使用 HTTPS(在 Jenkins -> Manage Jenkins -> Security 中配置)。
    • 禁用废弃的协议(如 JNLP1)。
    • 定期清理插件(未使用的插件可能引入依赖漏洞)。

总结

步骤 操作 命令/示例
1 确认 CVE 编号真实性 grep CVE /var/log/jenkins/security.log
2 升级 Jenkins 到最新稳定版 sudo apt upgrade jenkins
3 手动替换 Jetty JAR(可选) cp jetty-server-9.4.50.jar /path/to/jenkins/lib/
4 验证版本并扫描漏洞 dependency-check --scan [PATH]

注意:若漏洞为误报或测试型编号,建议联系漏洞扫描工具提供商确认误报规则,避免后续干扰。


网站公告

今日签到

点亮在社区的每一天
去签到