事件概述
Zscaler ThreatLabz 披露一起针对开发者工具链的供应链投毒活动:一个名为 terraform-provider-awsbeta_v1.0.0 的 Go 语言实现恶意 Terraform provider 在加载时即执行嵌入代码,随后经多级投递链在 macOS、Linux 与 Windows 三个平台上部署恶意程序。该活动被归因于朝鲜关联威胁组织 TraderTraitor(亦称 UNC4899、Jade Sleet)。
技术细节
感染链:从 provider 到伪装字体
恶意 provider 加载后释放一个名为 safari_updater 的 Bash 加载器,由后者根据所在平台选择载荷。为规避内容检测,实际载荷藏在一组被伪装成字体文件的 .woff 文件中,落地后再解密出嵌入载荷,最终加载 FLATROOF 后门与 ROOFDECK 载荷。
命令与控制通道使用带对称加密的 HTTP 与 WebSocket,并通过 Pastebin 与 Nostr 的元数据做死信解析(Dead Drop Resolver)动态发现真实 C2 地址,同时配置回退通道便于在被封堵时切换。这种把 C2 地址藏在公开平台元数据里的做法,近两年在多个恶意软件家族中反复出现。
在 macOS 上,恶意程序会移除文件的 com.apple.quarantine 扩展属性以绕过 Gatekeeper 的下载来源警告与签名校验,并施加临时签名;在 Windows 上则对 Chromium 浏览器进程实施进程镂空(Process Hollowing)以恢复加密密钥。收集到的数据会被暂存压缩为 collected_data.zip 再外传。
窃取目标
窃密范围集中在两类高价值数据:浏览器信息与 Web 会话 Cookie、macOS Keychain 或 Windows 凭据管理器中的凭证,以及加密货币钱包相关数据。FLATROOF 后门还通过修改 Unix shell 配置文件实现持久化,属于典型的开发者环境定向窃取。
影响评估
这类攻击的风险点不在单个漏洞,而在信任模型:Terraform provider 由开发者在 terraform init 时按声明拉取并加载,等同于把第三方二进制直接引入工作站与 CI/CD 环境。攻击者只要让使用者引用到恶意 provider 源,即可在「加载」这一动作中完成代码执行,不需要诱导任何交互。
受影响面天然偏大:开发者工作站与 CI Runner 通常持有云账号凭据、包仓库发布令牌与 AI 服务 API Key,一旦失陷,供应链下游可被进一步波及。由于最终载荷以内存执行加死信解析 C2 的方式运行,基于静态文件哈希的检测覆盖有限,行为侧的可观测线索更关键。
修复建议
- 限制使用未经验证的第三方 Terraform provider,内部建立私有 registry 并对 provider 校验和做强制校验(
.terraform.lock.hcl应纳入版本控制并审查变更); - 监测开发者工具与 CI/CD 进程启动的异常子进程,尤其是由 Terraform 进程派生的 shell 脚本;
- 监测临时目录中的异常文件活动与归档行为,例如 macOS 临时目录下生成的压缩包;
- 限制对外连接,在代理与出口侧记录并拦截对未验证域名(含 Pastebin、Nostr 网关)的访问;
- 发现可疑活动后立即隔离开发者工作站与 CI/CD 环境,围绕浏览器凭证与加密货币钱包做取证,并轮换全部可能暴露的密钥。