gauravn17/periscope
GitHub: gauravn17/periscope
Periscope 是一款基于知识图谱的代理式供应链威胁情报工具,利用 Neo4j 图数据库和 LLM 精准追踪跨仓库的漏洞影响链并自动生成修复建议。
Stars: 0 | Forks: 0
# Periscope
**基于知识图谱的代理式供应链威胁情报。**
Dependabot 告诉你该升级什么。而 Periscope 会告诉你实际上什么是真正有风险的、原因是什么,
并用通俗易懂的英文回答你的问题 —— 支持任何 MCP 客户端,包括 Claude。
## 问题所在
当严重的漏洞爆发时(如 log4j、xz-utils),每个团队都会问同样的三个
问题:*我们受影响吗?具体在哪里?我们需要更改什么?* 手动回答这些
问题需要几天时间,因为易受攻击的包通常深埋在传递依赖树中 —— 而且没有免费工具能回答这样的跨仓库问题:
- “我的哪些仓库受到了 CVE-2026-XXXX 的影响,以及是通过什么链条?”
- “哪一次单一升级能清除最多的严重漏洞?”
- “我的依赖树中,哪些包只有一个维护者且 2 年内没有发布过新版本?”
## 工作原理
```
┌─────────────────────────────┐
│ Agent (LLM) │
│ Ollama / Groq / Gemini │
│ tool-use loop + reports │
└──────┬──────┬──────┬────────┘
│ MCP │ MCP │ MCP
┌──────────┴─┐ ┌──┴───┐ ┌┴─────────┐
│ Neo4j MCP │ │ OSV │ │ GitHub │
│ (graph │ │ MCP │ │ MCP │
│ queries) │ │ │ │ (PRs) │
└──────┬─────┘ └──┬───┘ └──────────┘
│ │
┌──────┴──────────┴───────┐
│ Neo4j knowledge graph │
│ Projects → Packages → │
│ Versions ← Vulns │
└─────────────────────────┘
```
1. **摄入 (Ingest)** — 将你仓库中的 lockfile/manifest 解析到 Neo4j 图谱中:
项目、包、版本、传递依赖边。
2. **链接 (Link)** — 查询 OSV.dev 以获取影响图中每个版本的已知漏洞,
并将它们作为 `(:Vulnerability)-[:AFFECTS]->(:PackageVersion)` 附加进去。
3. **监视 (Watch)** — agent 轮询 OSV 订阅源;新的安全公告会将其唤醒。
4. **推理 (Reason)** — 确定性的 Cypher 查找受影响的项目和依赖链;
LLM 判断真实世界的严重程度(生产依赖对比开发依赖,以及树中的实际版本
范围),并编写通俗易懂的英文影响报告。
5. **行动 (Act)** — agent 发起一个 PR 来升级依赖,并在描述中附带完整的链条和
理由。由人类进行批准。始终如此。
**设计原则:** 确定性检索,LLM 在此基础上进行推理。查找受影响的
项目是一个精确的图查询 —— 不可能产生幻觉。LLM 只负责选择
工具、判断上下文,并为人类编写内容。这就是为什么免费的本地 8B 模型就足够了。
## 技术栈(全部免费)
| 组件 | 技术 | 成本 |
|---|---|---|
| 知识图谱 | Neo4j 社区版 (Docker) 或 Aura 免费层 | $0 |
| 漏洞数据 | OSV.dev + deps.dev 公共 API(无需密钥) | $0 |
| LLM | Ollama(本地)或 Groq / Gemini 免费层 | $0 |
| MCP server | Python/Go, MCP SDK | $0 |
| PR 自动化 | GitHub API | $0 |
| 托管(后期) | Cloudflare Workers 免费计划 | $0 |
## 快速开始(阶段 1)
```
# 1. 启动 Neo4j
docker compose up -d # browser at http://localhost:7474 (neo4j / periscope1)
# 2. 安装
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
# 3. 将 repo 的依赖项导入图中
periscope ingest ~/some-repo --name my-project
# 4. 从 OSV.dev 链接已知漏洞
periscope link-vulns
# 5. 提出关键问题
periscope affected GHSA-xxxx-xxxx-xxxx
periscope report # summary of all vulns across all ingested projects
```
## 路线图
- [x] **阶段 1 — 全景图。** Lockfile 解析器 (npm, PyPI) → Neo4j。OSV 链接。
CLI 通过完整的依赖链查询受影响的项目。
- [ ] **阶段 2 — 组织级情报。** 摄入 GitHub 用户/组织的所有仓库。
通过 deps.dev 提供维护者风险信号(单一维护者、停滞的发布)。
- [ ] **阶段 3 — agent。** MCP server(Neo4j, OSV, GitHub)+ 具有可插拔
模型后端(Ollama/Groq/Gemini)的 agent 循环。通俗易懂的英文影响报告。
- [ ] **阶段 4 — 双手。** OSV 订阅源监视器;带有
人工介入审批的自动化修复 PR;对写入操作采用 OPA 风格的防护机制。
- [ ] **阶段 5 — 验证。** 评估工具:使用历史 CVE 为图谱提供种子,衡量
检测的准确率/召回率。仪表盘。可达性分析(探索性目标)。
## 仓库结构
```
periscope/ Python package
cli.py typer CLI (ingest, link-vulns, affected, report)
config.py env-based settings
graph/ Neo4j client + schema (constraints, indexes)
ingest/ lockfile parsers + ingestion pipeline
vuln/ OSV.dev client
mcp-servers/ Phase 3: MCP servers (Neo4j, OSV, GitHub)
agent/ Phase 3: agent loop + model adapters
tests/ pytest
```
标签:AI智能体, AI风险缓解, GPT, MCP, 威胁情报, 安全规则引擎, 开发者工具, 漏洞管理, 请求拦截, 逆向工具