141 lines
4.7 KiB
Markdown
141 lines
4.7 KiB
Markdown
|
|
# 🔐 guanghu-token 令牌审计报告
|
|||
|
|
|
|||
|
|
> **审计执行者**:铸渊(ICE-GL-ZY001)
|
|||
|
|
> **审计时间**:2026-03-24T15:42+08:00
|
|||
|
|
> **指令来源**:霜砚签发 · ZY-PAT-AUDIT-2026-0324-001
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Phase 1 · 排查结果
|
|||
|
|
|
|||
|
|
### 1.1 跨仓库令牌清单
|
|||
|
|
|
|||
|
|
共发现 **3 个**与「子仓库桥接 / 跨仓库访问」直接相关的 Secret:
|
|||
|
|
|
|||
|
|
| # | Secret 名称 | 引用次数 | 用途分类 |
|
|||
|
|
|---|-------------|----------|----------|
|
|||
|
|
| 1 | `MAIN_REPO_TOKEN` | 4 次 | 联邦桥接 + 子仓库拉取 |
|
|||
|
|
| 2 | `CROSS_REPO_TOKEN` | 2 次 | persona-studio 跨仓库同步 |
|
|||
|
|
| 3 | `DEPLOY_GITHUB_TOKEN` | 1 次 | Drive 桥接部署 + Git 提交 |
|
|||
|
|
|
|||
|
|
### 1.2 各 Secret 详细用途
|
|||
|
|
|
|||
|
|
#### ① `MAIN_REPO_TOKEN` ⭐ 最可能对应 guanghu-token
|
|||
|
|
|
|||
|
|
**引用文件:**
|
|||
|
|
|
|||
|
|
| 文件 | 用法 | 说明 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| `federation-bridge.yml` (×3) | `env: MAIN_REPO_TOKEN` → Node 脚本 | 联邦桥接:向 `qinfendebingshuo` 组织下的子仓库分发公告/同步状态 |
|
|||
|
|
| `pull-sync-awen.yml` (×1) | `env: GH_TOKEN` → `git clone URL` | 子仓库拉取:`git clone https://x-access-token:${GH_TOKEN}@github.com/WENZHUOXI/guanghu-awen.git` |
|
|||
|
|
|
|||
|
|
**判断依据**:
|
|||
|
|
- 用途完全匹配「开发者子仓库桥接」
|
|||
|
|
- `federation-bridge.yml` = 联邦桥接核心 workflow
|
|||
|
|
- `pull-sync-awen.yml` = 子仓库同步核心 workflow
|
|||
|
|
- **这就是 guanghu-token 对应的 Secret**
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
#### ② `CROSS_REPO_TOKEN`
|
|||
|
|
|
|||
|
|
**引用文件:**
|
|||
|
|
|
|||
|
|
| 文件 | 用法 | 说明 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| `sync-persona-studio.yml` (×2) | `env: CROSS_REPO_TOKEN` → Bearer Token | 向 `qinfendebingshuo/persona-studio` 发送 `repository_dispatch` 事件 |
|
|||
|
|
|
|||
|
|
**用法详情**:
|
|||
|
|
```bash
|
|||
|
|
curl -X POST \
|
|||
|
|
-H "Authorization: Bearer $CROSS_REPO_TOKEN" \
|
|||
|
|
https://api.github.com/repos/qinfendebingshuo/persona-studio/dispatches
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**判断**:此 Secret 可能也使用同一个 PAT,需一并更新。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
#### ③ `DEPLOY_GITHUB_TOKEN`
|
|||
|
|
|
|||
|
|
**引用文件:**
|
|||
|
|
|
|||
|
|
| 文件 | 用法 | 说明 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| `auto-deploy-drive-bridge.yml` (×1) | `env: DEPLOY_GITHUB_TOKEN` → Node 脚本 | Drive 桥接部署后 git push 提交结果 |
|
|||
|
|
|
|||
|
|
**判断**:如果此 Secret 也使用同一个 PAT,需一并更新。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 1.3 结论
|
|||
|
|
|
|||
|
|
> **`guanghu-token` 最可能对应的 Secret 名称是 `MAIN_REPO_TOKEN`**
|
|||
|
|
>
|
|||
|
|
> 理由:它专用于联邦桥接和子仓库拉取,完全符合「开发者子仓库桥接」的用途描述。
|
|||
|
|
|
|||
|
|
**可能共用同一 PAT 的 Secret(建议一并检查):**
|
|||
|
|
- `CROSS_REPO_TOKEN` — persona-studio 跨仓库同步
|
|||
|
|
- `DEPLOY_GITHUB_TOKEN` — Drive 桥接部署
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Phase 2 · 主控操作指引
|
|||
|
|
|
|||
|
|
### 更新步骤
|
|||
|
|
|
|||
|
|
1. 进入仓库:`qinfendebingshuo/guanghulab`
|
|||
|
|
2. 导航至:**Settings → Secrets and variables → Actions**
|
|||
|
|
3. 找到并更新以下 Secret(粘贴新生成的 guanghu-token 值):
|
|||
|
|
|
|||
|
|
| 优先级 | Secret 名称 | 操作 |
|
|||
|
|
|--------|-------------|------|
|
|||
|
|
| 🔴 必须 | `MAIN_REPO_TOKEN` | 点编辑 → 粘贴新令牌 → 保存 |
|
|||
|
|
| 🟡 检查 | `CROSS_REPO_TOKEN` | 如果使用同一 PAT → 同步更新 |
|
|||
|
|
| 🟡 检查 | `DEPLOY_GITHUB_TOKEN` | 如果使用同一 PAT → 同步更新 |
|
|||
|
|
|
|||
|
|
### 验证方法
|
|||
|
|
|
|||
|
|
更新后,手动触发以下 Workflow 验证:
|
|||
|
|
|
|||
|
|
| Workflow | 触发方式 | 预期结果 |
|
|||
|
|
|----------|----------|----------|
|
|||
|
|
| `federation-bridge.yml` | Actions → 手动 Run workflow | 不报 401/403 |
|
|||
|
|
| `pull-sync-awen.yml` | Actions → 手动 Run workflow | 成功 clone awen 仓库 |
|
|||
|
|
| `sync-persona-studio.yml` | 推送 persona-studio/ 目录变更 | 成功触发 dispatch |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Phase 4 · 安全扫描结果
|
|||
|
|
|
|||
|
|
### 硬编码令牌扫描
|
|||
|
|
|
|||
|
|
| 检查项 | 结果 | 说明 |
|
|||
|
|
|--------|------|------|
|
|||
|
|
| `ghp_` 前缀扫描 | ✅ 安全 | 仅 `dingtalk-bot/.env.example` 有占位符 `ghp_your_github_token_here`(非真实令牌) |
|
|||
|
|
| `github_pat_` 前缀扫描 | ✅ 安全 | 未发现任何匹配 |
|
|||
|
|
| `glpat_` 前缀扫描 | ✅ 安全 | 未发现任何匹配 |
|
|||
|
|
|
|||
|
|
### 安全评估
|
|||
|
|
|
|||
|
|
- ✅ 所有令牌均通过 `secrets.*` 引用,无硬编码
|
|||
|
|
- ✅ `.env.example` 使用占位符,无真实凭据泄露
|
|||
|
|
- ✅ 跨仓库操作均有条件检查(如 `if: env.CROSS_REPO_TOKEN != ''`)
|
|||
|
|
- ⚠️ 共发现 **57 个** 独立 Secret 在 Workflow 中被引用,建议定期审计
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📝 执行回执
|
|||
|
|
|
|||
|
|
| Phase | 状态 | 完成时间 | 结果 |
|
|||
|
|
|-------|------|----------|------|
|
|||
|
|
| Phase 1 · 排查对应 Secret | ✅ 完成 | 2026-03-24T15:42+08:00 | `MAIN_REPO_TOKEN` = guanghu-token 主要对应 |
|
|||
|
|
| Phase 2 · 通知主控 | ✅ 报告已生成 | 2026-03-24T15:42+08:00 | 操作指引见上方 |
|
|||
|
|
| Phase 3 · 验证修复 | ⏳ 待人类操作 | — | 需主控更新后触发验证 |
|
|||
|
|
| Phase 4 · 安全扫描 | ✅ 完成 | 2026-03-24T15:42+08:00 | 无硬编码令牌,安全 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
🔧 铸渊 · ICE-GL-ZY001
|
|||
|
|
📅 2026-03-24T15:42+08:00
|