文章摘要
作者与朋友发现Nix生态系统中存在严重漏洞,可通过GitHub Actions工作流注入恶意代码,几乎能攻陷整个Nix生态系统。该漏洞从发现到修复仅用一天时间。文章详细披露了漏洞原理和利用方式。
文章总结
标题:攻陷整个Nix生态系统的漏洞分析
2025年10月15日,作者ptrpa.ws披露了其在Nixpkgs中发现的两个高危GitHub Actions漏洞,这些漏洞可能导致整个Nix生态系统被攻陷。以下是核心内容:
一、漏洞背景 作者与同伴lexi在去年NixCon会议上通过闪电演讲披露了这些发现。仅用一天时间就从发现漏洞到完成修复。
二、漏洞详情
1. EditorConfig检查漏洞
- 工作流使用pull_request_target触发器
- 通过xargs传递用户控制的文件名(存在命令注入风险)
- 攻击者可构造特殊文件名(如--help)干扰检查流程
- 虽然未深入利用,但存在执行任意代码的可能性
- CODEOWNERS验证漏洞(更严重)
- 工作流会检出PR代码并验证OWNERS文件
- 攻击者可将OWNERS文件替换为符号链接,指向敏感文件
- 成功窃取GitHub Actions凭证(含读写权限)
- 凭证泄露意味着可直接向nixpkgs推送恶意代码
三、修复措施 维护者infinisil迅速采取行动: 1. 立即禁用受影响的工作流 2. 严格隔离非受信数据与特权操作 3. 重命名修复后的工作流(防止历史分支被利用)
四、安全建议 1. 避免混用非受信数据与敏感操作 2. 遵循最小权限原则 3. 仔细阅读GitHub权限文档 4. 紧急情况下可通过组织设置全局禁用Actions
五、延伸资源 - KITCTF关于不安全GitHub Actions的演讲 - GitHub官方安全指南 - Nixpkgs修复的PR记录
注:原文中的技术细节(如完整工作流代码、图片链接等)和部分非核心叙述(如作者参会经历、猫咪表情等)已酌情删减,保留了关键漏洞原理和修复过程。
评论总结
总结评论内容如下:
- 关于代码管理系统的安全性问题:
- 有评论指出OpenBSD和NetBSD仍使用CVS系统,存在"security by obscurity"问题,但正在考虑迁移到git系统。 引用:"OpenBSD and NetBSD still uses CVS...Security by obscurity" 引用:"those projects are looking to go to git"
- 关于GitHub pullrequesttarget的安全隐患:
- 多位评论者认为pullrequesttarget本质上不安全,建议GitHub移除或改进该功能。 引用:"pullrequesttarget is fundamentally insecure" 引用:"the only legitimate uses of pullrequesttarget are for things like labeling"
- 关于CI/CD工作流的安全风险:
- 评论指出在pull request中运行CI/CD管道会执行不受信任的代码,存在安全隐患。 引用:"CI/CD actions for pull/merge requests are a nightmare" 引用:"the CI/CD pipeline actually runs untrusted code"
- 关于git符号链接的安全问题:
- 有评论提到git允许提交软链接,可能导致工作流中的凭证文件被窃取。 引用:"git allows committing soft links...could affect almost any workflow"
- 关于xargs的安全使用:
- 有评论认为文章对xargs的描述断章取义,并给出了安全使用示例。 引用:"That is taken out of context quite a bit" 引用:"Just do...and this specific problem is fixed"
- 关于认证机制的改进建议:
- 有评论建议使用Unix socket或ssh-agent代替bearer token,以提高安全性。 引用:"modern workflows are still designed so that bearer tokens...are issued" 引用:"gave a privileged Unix socket or ssh-agent access instead"