oxy-Op/github-identity-audit
GitHub: oxy-Op/github-identity-audit
该工具用于在本地环境中审计 GitHub 仓库、Git 历史及公开作者表面的身份泄露与隐私暴露问题。
Stars: 0 | Forks: 0
# GitHub 身份审计
一款本地优先、边界受限的 OSINT 与隐私审计工具,用于发现公开 GitHub 仓库、可达的 Git 历史记录以及作者相关的 GitHub 表面中的身份泄露。
该工具专为自我审计、授权隐私审查和防御性研究而设计。确定性扫描无需 LLM 即可工作。语义检索和 LLM 仲裁是可选的。
## 文档
- [快速入门与操作指南](docs/README.md)
- [负责任使用免责声明](DISCLAIMER.md)
- [隐私与数据处理](PRIVACY.md)
- [安全政策](SECURITY.md)
- [架构与实现状态](ARCHITECTURE_COMPLIANCE.md)
- [贡献指南](CONTRIBUTING.md)
## 功能
- 通过原生流式 Git 命令获取完整的可达 Git 历史记录
- 对提交作者、提交者、消息、 annotated-tag、文件名和唯一 blob 进行扫描
- 公开的 GitHub 个人资料、仓库、gist、issue、pull-request、review、comment、release 和 discussion 收集器
- 精确、规范化、有限模糊、email、URL、社交账号和归属匹配
- 包含 FTS5、来源溯源、artifact 出现次数、分块和 embeddings 的 SQLite 证据存储
- 可选的混合词法/向量检索
- 可选的 OpenRouter 或隔离的 Codex CLI 仲裁,支持基于预留的预算
- JSON、独立 HTML 和已脱敏报告
- CLI、Fastify API、Next.js dashboard 和 worker 入口点
- 每当限制导致审计不完整时都会发出明确警告
## 环境要求
- Node.js 22.6 或更新版本
- `PATH` 中可用的 Git
- npm 10+ 或 pnpm 10+
## 安装
```
git clone https://github.com/YOUR_ORG/github-identity-audit.git
cd github-identity-audit
npm ci
```
在 Windows 上,`setup.cmd` 会执行依赖项安装和发布检查。设置完成后,`run-local.cmd` 会在单独的终端窗口中启动本地 API 和 dashboard。
## 快速入门
审计一个本地或远程仓库:
```
npm run audit -- \
--repo https://github.com/example-user/example-repository.git \
--username example-user \
--name "Example Name" \
--output ./identity-audit-example
```
审计一个公开的 GitHub 账号:
```
npm run audit -- \
--account "https://github.com/example-user?tab=repositories" \
--name "Example Name" \
--output ./identity-audit-example
```
输出目录可能包含未脱敏的个人信息、一个 SQLite 数据库以及镜像的 Git 仓库。它会被提供的 `.gitignore` 忽略,但并未进行加密。
## GitHub 身份验证
公开仓库扫描无需 token 即可工作。经过身份验证的 API 访问可提供更高的速率限制,并支持更深入的公开表面获取,例如有限的历史贡献时间窗口、仓库评论、review、release 和 discussion。
使用细粒度的只读 token,并通过环境变量提供:
```
$env:GITHUB_TOKEN = "your-read-only-token"
npm run audit -- --account "https://github.com/example-user" --name "Example Name"
```
切勿将凭据放在命令参数、源文件、提交到 Git 的 `.env` 文件、生成的报告、issue 或截图中。
## 常见限制
```
npm run audit -- \
--account "https://github.com/example-user" \
--name "Example Name" \
--max-repositories 100 \
--max-repository-kib 1000000 \
--max-blob-bytes 5000000 \
--max-total-bytes 250000000 \
--max-commit-trees 5000 \
--max-findings 10000 \
--delete-mirrors true
```
限制属于安全控制措施,不保证完整性。带有警告的报告会被标记为部分完成。
## 可选的语义检索
通过配置设置 OpenAI 兼容的 embedding endpoint,并将密钥保留在环境中:
```
$env:EMBEDDING_API_KEY = "..."
npm run audit -- `
--account "https://github.com/example-user" `
--name "Example Name" `
--embedding-endpoint "https://provider.example/v1/embeddings" `
--embedding-model "your-embedding-model"
```
包含身份信息的选定段落可能会发送到配置的提供商。请先审查其数据留存和训练政策。
## 可选的 LLM 仲裁
确定性扫描结果不需要 LLM。
对于 OpenRouter:
```
$env:OPENROUTER_API_KEY = "..."
npm run audit -- `
--account "https://github.com/example-user" `
--name "Example Name" `
--llm openrouter `
--model "configured-model"
```
应用程序会强制执行候选数量、调用次数、token、单次请求和预估成本限制。提供商的账单和数据留存仍由运营者负责。
## Web UI 和 API
在单独的终端中运行这些命令:
```
npm run dev:api
npm run dev:web
```
打开 `http://127.0.0.1:3000`。Fastify gateway 默认地址为 `http://127.0.0.1:4318`。
开发网关将任务存储在内存中,旨在用于本地环回。在没有身份验证、授权、配额、隔离的 worker、输出访问控制和数据留存策略的情况下,请勿将其公开暴露。
## Worker
worker 在标准输入上接受一个 JSON 任务,并将结构化日志写入标准错误输出:
```
echo '{"account":"https://github.com/example-user","names":["Example Name"],"output":"./identity-audit-worker"}' | npm run worker
```
## 报告与解读
证据被分类为:
- **已观测 (Observed)** — 存在确定性的内容或元数据。
- **推断 (Inferred)** — 上下文暗示了身份归属。
- **已关联 (Linked)** — 综合证据表明两个身份存在关联。
推断或关联的结果并不能作为证明。在采取行动之前,请检查来源溯源、历史出现情况、作者身份、周围文本以及佐证。
已脱敏报告可降低意外泄露的风险,但不保证匿名性。在共享任何内容之前,请务必手动检查。
## 开发
```
npm test
npm run check
npm run build:api
npm run build:web
```
测试套件使用合成身份和临时仓库。贡献内容不得添加真实人物的审计数据或生成的报告。请参阅 [CONTRIBUTING.md](CONTRIBUTING.md) 和 [SECURITY.md](SECURITY.md)。
## 架构
该 monorepo 包含:
- `apps/cli` — 命令行入口点
- `apps/gateway` — Fastify API
- `apps/dashboard` — Next.js UI
- `apps/worker` — 结构化 worker 进程
- `packages/core` — 类型、别名和确定性匹配
- `packages/github-client` — 边界受限的 GitHub API 收集
- `packages/git-scanner` — 流式原生 Git 扫描器
- `packages/database` — SQLite/FTS5 证据持久化
- `packages/retrieval` — 分块、embeddings、混合检索和排序
- `packages/llm` 和 `packages/budget` — 可选的仲裁和硬性预算
- `packages/report` — 完整和已脱敏报告
- `packages/hosted` 和 `packages/runtime` — 托管模式和任务运行器边界
有关实现边界,请参阅 [ARCHITECTURE_COMPLIANCE.md](ARCHITECTURE_COMPLIANCE.md)。
## 隐私与负责任的使用
- 收集最少必要的数据。
- 提倡自我审计和明确授权。
- 请勿发布未脱敏的证据。
- 使用完毕后,请保护并删除输出内容。
- 请勿将用户名相似性视为身份证明。
- 遵守 GitHub 的条款、速率限制和适用法律。
- 本地审计输出、镜像、数据库、环境文件、agent 配置以及对话/工作文件会被 Git 忽略。本软件不会将其上传到此仓库中。
## 许可证
[MIT](LICENSE)
标签:ESC4, GNU通用公共许可证, MITM代理, Node.js, OSINT, 数据泄露, 网络安全研究, 自动化攻击, 身份泄露检测, 隐私审计