🏢 公司C档 · NaN分

Gheist不要代码,只要你云上的钥匙

··约1分钟阅读

📋 总体概括

正在进行的供应链攻击活动Gheist武器化GitHub令牌,从数千个开发者仓库中自动化收割云凭据与敏感数据。本文拆解其攻击链条与背后'秘密蔓延'的产业病灶,并给出令牌生命周期治理的工程化防御路线。

📄 正文

仓库里最危险的资产,从来不是代码,而是静静躺在环境变量里的那把钥匙。

近期被安全社区追踪的供应链攻击活动Gheist,把GitHub访问令牌变成了武器:从数千个开发者仓库中自动化收割云平台凭据与敏感数据。这不是什么天才级0day,而是一条粗糙但工业化的老路——攻击者没有攻破你的防线,只是捡起了你自己丢在地上的钥匙。

本文拆解这条攻击链,聊聊它背后的产业病灶,以及真正管用的防御姿势。

🔑 当令牌成了故事的主角

先还原一个每个开发团队都似曾相识的场景:晚上十一点,一条CI流水线跑不通,工程师为了赶进度,把一个AWS的访问密钥直接写进workflow的环境变量;仓库三个月后转公开,或者被一个看起来无害的第三方Action读走了构建日志。没有人注意到,直到云账单出现异常,或者数据出现在不该出现的角落。

Gheist做的事情,本质上是把上面这个'偶发事故'变成了'持续作业'。素材披露的关键信息有两点:其一,这是正在进行时(ongoing),意味着收割仍在发生,而非一次性的历史事件;其二,影响面是数千个开发者仓库的量级——攻击者依靠自动化脚本大规模扫描和利用泄露的GitHub令牌,拿到入口后再撬出仓库与CI环境中的云凭据和敏感配置。

这个量级并不令人意外。GitGuardian历年的公开监测报告显示,每年泄露到公共仓库中的有效凭据以百万计;GitHub自身secret scanning机制的披露口径也曾达到每年数千万级。真正的问题不是'有多少密钥泄露了',而是'泄露之后多久失效'——大量令牌在暴露后的数天乃至数月内依然有效,这中间的窗口期,就是Gheist们的作业时间。

安全圈有句被反复引用的话:用户会被钓鱼,机器会被投毒,而密钥是自己躺平被捡的。令牌成为身份安全链条上最软的一环,不是因为技术难度高,而是因为组织流程松。它太小、太多、太容易被复制粘贴,以至于没有任何一个团队愿意为它单独立项——直到出事。

🕸️ 信任链攻击:不用撬门,只要混进快递车

供应链攻击之所以让防御方头疼,核心在于信任是传递的。你信任你的开发者,开发者信任GitHub,GitHub信任第三方Action,Action信任构建环境里的密钥——攻击者只要在这条链的任何一环坐稳,就能以'自己人'的身份通行无阻。

回顾近几年被反复引用的几起标志性事件,规律非常清晰:

  • 2020年,SolarWinds构建系统被入侵,恶意更新随官方签名分发给上万家客户;
  • 2021年,Codecov的CI上报脚本被篡改,客户环境中的凭据被静默外传;
  • 2023年,3CX遭遇二次供应链投毒,攻击者借前一个供应商的失陷实施下一跳;
  • 2024年,xz-utils险些通过长期潜伏的维护者身份把后门送进全球主流Linux发行版。

把这五起事件和Gheist放在同一张图上看,会发现攻击面发生了根本性迁移:从'有防守的系统'转向'没人防守的衔接处'。防火墙、EDR、WAF protecting的都是系统本体,而令牌、CI配置、依赖锁定文件这些'衔接组织',长期处于安全预算的盲区。攻击者早就想明白了:与其攻打城堡,不如去偷快递公司的运单。

据多位一线应急响应从业者私下反馈,这类'密钥收割框架'在灰色市场上早已高度商品化,扫描、验证、分类、变现可以拆包出售——Gheist不是孤例,而是一条成熟流水线的又一次开机。这才是供应链攻击最值得警惕的产业信号:攻击的边际成本在持续下降,而受害面随开发者数量线性扩张。

📉 秘密蔓延:一本没人对账的账

如果说供应链攻击是外部推力,那'秘密蔓延'(Secret Sprawl)就是内部病灶。所谓秘密蔓延,指凭据、密钥、敏感配置随着开发进程不断复制、扩散、失去跟踪的状态。它的可怕之处在于:没有任何一个组织能立刻说清自己到底有多少把钥匙、分别在谁手里、能打开哪扇门。

按令牌类型拆开看,风险画像差异很大:

令牌类型典型权限默认生命周期常见泄露点治理难度
GitHub经典PAT全仓库读写默认永不过期明文写在代码、Shell历史高
细粒度PAT按仓库授权可设有效期权限范围习惯性放大中
CI/CD环境变量直连云密钥长期驻留构建日志、缓存、第三方Action高
云平台IAM密钥可达账户级权限长期有效镜像层、配置文件、本地.dotenv极高
秘密蔓延的三大痛点与对应解法
痛点 1
高权限长期令牌散落在仓库、CI与本地环境,无人盘点
→
解法
收紧作用域并强制短有效期,改用OIDC联合身份换取临时凭据
痛点 2
泄露发生后才发现,检测永远滞后于收割
→
解法
开启推送阻断与全仓库持续扫描,把检测前置到提交动作
痛点 3
一把泄露的令牌可以横向打通多云与多个业务环境
→
解法
最小权限原则,按环境与业务切分令牌作用域,限制爆炸半径

把这张表和这张图放在一起读,产业判断就出来了:秘密蔓延的本质是一本没人对的账。财务上有复式记账、有审计,而密钥在绝大多数企业里连一本流水账都没有。攻击者不需要超越防御技术,只需要跑赢防御组织的记账速度——这几乎是一场必胜的竞赛,除非你先把账建起来。

另一个值得注意的趋势是:随着云原生和AI编码助手的普及,密钥的产生速度还在加快。AI生成的CI配置、脚手架代码、示例片段,恰恰是硬编码凭据的高发区。泄露源头在增多,而治理投入没有同步增长,剪刀差在扩大。

🛡️ 防御不靠警惕,靠工程

每次供应链事件之后,安全厂商的通稿里都会出现'提高安全意识'。但做了多年渗透和应急的人都知道:靠警惕守不住任何东西。人会犯困、会赶工期、会图省事,防御必须内建到工具链里,让犯错的成本高于做对的成本。

从工程角度看,当前秘密治理的工具版图大致可以分成几个流派:

左下角的'开源自定义脚本'(自己写grep扫仓库)和'独立扫描工具'(如TruffleHog、Gitleaks这类)解决了'有没有'的问题,但停留在检测层;右上角的HashiCorp Vault类秘密管理平台和云厂商的OIDC联合身份机制,则把问题推到了釜底抽薪的位置——让长期凭据从架构里消失。

具体来说,工程化的防御清单至少包括四条:

1. 短生命周期:所有令牌强制设有效期,云访问优先走OIDC联合认证,CI运行时动态换取几分钟有效的临时凭据,而非长期静态密钥;

2. 最小权限:细粒度令牌按仓库、按环境切分作用域,读代码的令牌永远不该能碰生产数据库;

3. 前置阻断:开启GitHub的push protection和secret scanning,让带密钥的提交在推送时就被拦下,而不是等扫描器事后报警;

4. 定期轮换与审计:把密钥轮换做成流水线自动动作,把'谁在什么时候用了什么令牌'纳入日志审计——出事时,这是唯一的取证依据。

这四条的共性是:都不依赖开发者'记得'什么。防御的最高境界,是让凭据变成一种人类不需要记忆和管理的东西——凡是需要人来记、来管、来警惕的凭据,最终都会泄露,区别只是早一天还是晚一天。

结语:下一个Gheist已经在路上

Gheist只是一个活动代号,它背后是一套可复用、可商品化的收割流水线。素材披露的'数千个仓库'只是当下这一轮的收割成果,只要秘密蔓延的病灶还在,同类活动就会换个名字继续开机。

往前看两年,两个变量值得押注:一是云厂商联合身份机制的普及速度——临时凭据替代静态密钥的比例,将直接决定此类攻击的收益曲线;二是AI编码工具带来的密钥产出增量——谁先为AI生成代码配套秘密扫描与阻断,谁就少踩一个必踩的坑。

攻击者已经完成工业化,防御还停留在手工作坊,这才是Gheist事件真正该被写进董事会备忘录的理由。

本文由本站 AI 辅助聚合生成,原始来源如下:

🔎 本文基于以下资讯(素材溯源 · 信息来源)

📰 相关阅读推荐(与本文相关的其他资讯)