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, 数据泄露, 网络安全研究, 自动化攻击, 身份泄露检测, 隐私审计