本次属于典型GitHub Release供应链攻击,bCI/自动化更新脚本无哈希校验的环境风险最高。
事件概述
海外云厂商OVHcloud在GitHub上发布的命令行工具 ovhcloud-cli 曝出供应链安全事故。攻击者劫持一名项目贡献者的GitHub账号,直接替换5个历史版本Release内的二进制压缩包,投放专门窃取本地密钥与敏感凭证的恶意程序。
攻击窗口期为UTC时间10月19日12:47–14:21,恶意文件在GitHub公网暴露时长最高94分钟。只有在该时间段内、通过无哈希校验方式下载或升级对应版本的用户,才有可能拿到被篡改的恶意程序。
OVHcloud事后紧急清理全部被替换的归档文件,发布不可修改的固定版本 v0.16.0,并开启GitHub不可变Release(Immutable Releases)防护机制。厂商确认:项目源代码、代码标签、后端CI/CD构建流水线本身没有被入侵。恶意文件只是基于一个后续提交单独编译的Go程序,被攻击者直接上传覆盖旧Release附件。
受影响版本与平台范围
✅ 被污染版本:v0.11.0 ~ v0.15.0(共5版)
✅ 确认安全版本:v0.10.0
上述5个版本发布时间跨度从4月14日至9月16日。在攻击窗口之前安装、且期间没有执行更新的客户端,仍是原版干净程序。
被篡改的包类型:macOS x86_64/arm64、Linux x86_64/arm64、Windows x86_64,同时配套篡改 `checksums.txt` 校验文件,让校验哈希和恶意二进制匹配。
未触碰的构建产物:Linux i386、Windows i386、Windows arm64、WebAssembly包。
哪些场景会中招?
🔴 高风险路径(攻击窗口内操作)
1. 使用项目官方 `install.sh` 一键脚本安装/升级(脚本不校验文件哈希)
2. 手动在GitHub Release页面下载上述5个版本的压缩包
3. CI流水线直接拉取Release下载地址,代码里没有固化文件哈希值
4. v0.12.0~v0.14.0版本自带的内置升级功能(macOS/Linux,脚本或手动安装模式下升级无哈希校验)
🟢 不受影响的场景
1. Homebrew安装:Tap仓库固化SHA256,哈希不匹配直接阻断安装
2. go install 方式、本地源码编译
3. Docker镜像 ovhcom/ovhcloud-cli(镜像在攻击前已长期未重建)
4. 窗口期前完成安装、且没有执行升级操作
如何识别恶意二进制(无需运行程序)
可执行 `go version -m 程序名` 静态读取编译信息,满足下面特征即为恶意构建:
1. 模块版本伪版本号:`v0.15.1-0.20261013083505-5ead8ef9b43d+dirty`
2. 提交哈希:`5ead8ef`(正版v0.15.0标签绑定提交为760fd72)
3. 编译参数存在 `-ldflags="-s -w"`,官方正式发行包不会出现该标记
不要单纯以 `+dirty` 判断恶意文件,官方干净版本v0.16.0同样标记 `+dirty`,该特征不具备判定能力。
公开仅放出一组恶意包哈希对照(Linux arm64 v0.15.0)
- 恶意压缩包SHA256:`3833daffcaaaab27e4e0e0833240ffcb1df8df648f4ec0bc4a75c176e28933cb`
- 原版压缩包SHA256:`5c2beb56e6d83a4b426565a1557791ef759316abcc4effb38dd627c90aeb80e0`
强烈提醒:不要直接运行可疑二进制文件来判断是否投毒。
处置建议(优先级:轮换密钥 > 清理程序 > 重装正版)
OVHcloud官方给出高危处置指引:只要确认运行过恶意程序,或者无法确认是否中招,需要轮换该机器上所有可被读取的密钥、凭据,不局限于OVHcloud自身API凭证(工具默认存放在 `~/.ovh.conf`,也会读取环境变量密钥)。安全研究团队补充建议:密钥轮换操作尽量在另一台干净主机执行。
操作步骤参考:
1. 立刻轮换所有敏感密钥、API Token、凭证;
2. 删除本地恶意ovhcloud-cli二进制;
3. 安装不可变正式版本 v0.16.0,该版本附带Release签名证明;
4. 可使用 `gh release verify-asset` 校验安装包完整性;
5. 检查CI/自动化脚本,增加固定哈希校验,杜绝直接拉取Release包不验哈希的写法。
注意:重装程序无法撤销已经被窃取的密钥,密钥轮换是首要动作。
厂商目前暂未披露恶意程序读取的文件清单、数据回传目标以及总下载量,后续会发布完整事后复盘报告。
攻击根因复盘
GitHub默认允许拥有仓库写权限的账号,直接删除、替换Release附件,下载链接保持不变;只有开启「不可变Release」功能后才能锁定包文件。事发前OVHcloud没有开启该能力,攻击者拿到贡献者账号权限后,绕开厂商CI流程直接覆盖旧版本资产。
安全研究团队OpenSourceMalware溯源发现,涉事贡献者账号历史仓库曾出现GlassWorm恶意加载器,该家族特点是利用不可见Unicode字符隐藏恶意代码,此前还发生过盗用Token批量投毒Python仓库事件。
研究人员推测本次攻击者与GlassWorm团伙存在关联,但目前缺少恶意样本,暂无法直接把本次窃取程序和GlassWorm恶意样本绑定。本次事件由一条配置了固定哈希校验的CI任务报错发现,用户公开提交Issue告警,推动厂商应急处置。
资讯来源:The Hacker News、OpenSourceMalware、OVHcloud官方公告
球分享
球点赞
球在看