Skip to content

供应链安全与防投毒

在开源生态日益繁荣的今天,软件供应链安全(Supply Chain Security)已经成为不可忽视的重中之重。恶意篡改镜像源、发布恶意包版本(投毒攻击)的事件屡见不鲜。

UniRTM 并没有仅仅依赖于后期的外部扫描工具,而是在下载与环境挂载的最底层架构中,原生构建了一套强大的防御体系。

1. 强制 Checksum 与 Lockfile 校验

当你通过 unirtm install 安装工具时,UniRTM 绝不盲目相信网络通道:

  • SHA-256 实时比对:在写入磁盘之前,系统会在内存中实时计算下载文件的 sha256 校验和。
  • Lockfile 锁定:计算出的结果会与 unirtm.lock 文件中记录的防篡改指纹进行强比对。如果发现一丝一毫的差异,安装进程会被立即熔断并抛出严重警告。这彻底阻断了中间人攻击(MITM)和被黑客恶意替换二进制包的风险。

2. GPG 签名强制验证

许多官方工具(如 Node.js、Go)会对其发布的代码包提供 GPG (GNU Privacy Guard) 签名。 UniRTM 内置了 GPG 验签机制:

  • 会自动获取发布者的公钥,并在解析安装包时对 .sig.asc 文件进行密码学级别的完整性验证。
  • 确保代码包确确实实是由官方发布,而非第三方冒名顶替。

3. GitHub 来源证明 (Provenance) 校验

对于托管在 GitHub 上的开源项目,UniRTM 深度集成了 GitHub 原生的来源证明 (Attestation) 特性:

  • 能够验证由 GitHub Actions 官方环境签发的构件出处。
  • 保证下载的工具包是在受信任的 CI/CD 管道中编译出来的,防止恶意维护者在本地打包时植入后门。

4. 严守官方数据渠道

与许多为了加速而默认使用各种不可控第三方镜像的工具不同,UniRTM 默认仅从语言和工具的官方源提取数据(例如 Node.js 官方发布页、Go 原生分发网关)。 除非用户主动在配置中覆盖代理源,否则我们绝不因为所谓的“加速”而牺牲安全性,将用户的终端环境暴露在不受信任的第三方镜像中。

5. 最短更新冷却期 (Cooling-off Period)

供应链投毒往往利用了开发者“追求 latest”的心理,在发布带有恶意代码的补丁版本后,期望大量用户在短时间内自动更新。 针对这一痛点,UniRTM 引入了最短更新冷却期机制:

  • 对于未显式锁定版本的 latest 标签解析,系统默认会延迟接纳刚发布不到 7 天的新版本。
  • 这一黄金时间窗足以让开源安全社区发现并撤回被污染的恶意包,从而避免你的环境成为投毒攻击的零日牺牲品。

你可以在全局配置或项目的 .unirtm.toml 中通过 minimum_release_age 字段来调节此时间窗(默认值为 "7d"):

toml
[settings]
# 延迟接纳 7 天内发布的新版本,以防零日投毒
minimum_release_age = "7d"

如果遇到紧急修复且你确信其安全性,可以临时将其设为 0 来强制获取绝对的最新版本。

基于 MIT 许可发布。