受污染的 Ruby Gems 和 Go Modules 利用 CI Pipelines 进行凭证窃取

发布: (2026年5月1日 GMT+8 17:43)
3 分钟阅读

Source: The Hacker News

概览

观察到一次新的软件供应链攻击活动,使用休眠包(sleeper packages)投递恶意负载,实现凭证窃取、GitHub Actions 篡改以及 SSH 持久化。该活动归因于 GitHub 账户 BufferZoneCorp,其发布了包含恶意 Ruby gem 和 Go 模块的仓库。截至撰写本文时,Ruby gem 已从 RubyGems 下架,Go 模块已被阻断。

缓冲区图片

受影响的包

Ruby Gems

  • knot-activesupport-logger
  • knot-devise-jwt-helper
  • knot-rack-session-store
  • knot-rails-assets-pipeline
  • knot-rspec-formatter-json
  • knot-date-utils-rb (休眠 gem)
  • knot-simple-formatter (休眠 gem)

Go Modules

  • github.com/BufferZoneCorp/go-metrics-sdk
  • github.com/BufferZoneCorp/go-weather-sdk
  • github.com/BufferZoneCorp/go-retryablehttp
  • github.com/BufferZoneCorp/go-stdlib-ext
  • github.com/BufferZoneCorp/grpc-client
  • github.com/BufferZoneCorp/net-helper
  • github.com/BufferZoneCorp/config-loader
  • github.com/BufferZoneCorp/log-core (休眠模块)
  • github.com/BufferZoneCorp/go-envconfig (休眠模块)

这些包伪装成知名模块,如 activesupport-loggerdevise-jwtgo-retryablehttpgrpc-clientconfig-loader,以规避检测。

示意图

攻击细节

Socket 安全研究员 Kirill Boychenko 解释说,这些 Ruby gem 在安装过程中会自动窃取凭证,收集以下信息:

  • 环境变量
  • SSH 密钥
  • AWS 密钥
  • .npmrc.netrc 文件
  • GitHub CLI 配置
  • RubyGems 凭证

窃取的数据会被发送到攻击者控制的 webhook 端点。

Go 模块则提供更广泛的功能,包括:

  • 篡改 GitHub Actions 工作流
  • 植入伪造的 Go 包装器
  • 窃取开发者数据
  • ~/.ssh/authorized_keys 添加硬编码的 SSH 公钥,实现持久化远程访问

这些模块通过 init() 执行,检测 GITHUB_ENVGITHUB_PATH,设置 HTTP_PROXY/HTTPS_PROXY,在缓存目录写入伪造的 Go 可执行文件,并将该目录提前加入工作流的 PATH。包装器在拦截后续 go 调用的同时,仍委托给合法二进制,以免破坏任务。

缓解措施

如果你已经安装了上述任意包,请执行以下步骤:

  1. 删除 系统中的恶意 gem 与模块。
  2. 检查 环境中是否有未授权访问敏感文件或对 ~/.ssh/authorized_keys 的修改。
  3. 轮换 可能已泄露的凭证(AWS 密钥、SSH 密钥、API 令牌等)。
  4. 审计 网络日志,留意是否有向未知 webhook 端点的出站 HTTPS 流量。
  5. 更新 CI/CD 流水线和依赖锁文件,仅引用可信来源。

参考资料

  • Kirill Boychenko 在 Socket.dev 上的分析:
  • 其他报道:
0 浏览
Back to Blog

相关文章

阅读更多 »