You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RHEL8环境Dockerfile执行升级脚本时curl | bash的替代方案有哪些

Dockerfile(RHEL 8环境)下替代curl | bash升级指定软件包的安全方案

curl | bash模式存在极高安全风险,2021年发生的Codecov Bash Uploader被植入后门事件中,攻击者就是通过篡改公开的bash脚本,窃取了大量CI环境的敏感信息。针对RHEL 8系统,可采用以下更安全的替代方案:

  • 配置官方可信YUM源安装
    优先选择软件官方提供的RHEL/CentOS 8 yum源,导入官方GPG公钥后直接指定版本安装,是最稳定安全的方案,支持后续版本管理和校验。
# 导入软件官方GPG公钥
RUN rpm --import https://<官方公钥地址> && \
    # 新增官方yum源配置
    yum-config-manager --add-repo https://<官方yum源地址> && \
    # 安装指定版本软件包,自动校验包签名
    yum install -y <package-name>-<version-number> && \
    yum clean all
  • 下载RPM包校验后本地安装
    如果软件没有提供yum源,可提前获取官方RPM包的哈希校验值,下载后先校验再安装,避免包被篡改。
RUN curl -sL https://<官方rpm包地址> -o /tmp/<package>.rpm && \
    # 校验RPM包哈希,和官方公布的sha256值对比
    echo "<官方公布的sha256值> /tmp/<package>.rpm" | sha256sum --check --status && \
    yum localinstall -y /tmp/<package>.rpm && \
    rm -f /tmp/<package>.rpm && \
    yum clean all
  • 本地预校验脚本/包后纳入构建上下文
    如果必须使用安装脚本,可提前将脚本下载到本地,校验内容无风险后放到Docker构建目录,直接复制到镜像内执行,完全避免拉取远程不可信内容。
# 提前将本地校验过的安装脚本复制到镜像内
COPY ./install-<package>.sh /tmp/
RUN chmod +x /tmp/install-<package>.sh && \
    bash /tmp/install-<package>.sh && \
    rm -f /tmp/install-<package>.sh && \
    # 后续执行卸载旧包、安装新包逻辑
    yum remove -y <old-package> && \
    yum install -y <package>-<version> && \
    yum clean all
  • 远程脚本强制哈希校验后执行
    如果必须拉取远程脚本,不要直接管道给bash执行,先下载脚本校验哈希和官方公布值一致后再运行。
RUN curl -sL <script-url> -o /tmp/install.sh && \
    # 校验脚本哈希,验证通过再执行
    echo "<官方公布的脚本sha256值> /tmp/install.sh" | sha256sum --check --status && \
    bash /tmp/install.sh && \
    rm -f /tmp/install.sh && \
    yum remove -y <package> && \
    yum install -y <package> && \
    yum clean all
安全注意事项
  • 所有RPM包、脚本都必须校验官方公布的GPG签名或哈希值,禁止执行无校验的远程内容
  • 安装完成后及时清理yum缓存、临时安装文件,减少镜像体积同时避免遗留敏感信息
  • 不要用root权限执行不必要的安装步骤,最小化权限降低攻击面

内容的提问来源于stack exchange,提问作者I.conic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 18:15:05