vrajbhai/SupplyScan

GitHub: vrajbhai/SupplyScan

SupplyScan 是一个自主的供应链安全 agent,在 pip/npm 安装时拦截并多层分析软件包以识别恶意代码,配合 AI 解释威胁并阻断风险安装。

Stars: 0 | Forks: 0

## title: SupplyScan Backend emoji: 🛡️ colorFrom: green colorTo: green sdk: docker app_port: 7860 pinned: false # 🛡️ SupplyScan SupplyScan 是一个**自主的供应链安全 agent**,旨在保护开发者环境免受恶意软件包的侵害。它会拦截 Python 和 npm 软件包的安装请求,通过多层静态分析 pipeline 对其进行评估,并利用先进的 AI 模型将可疑代码模式转化为通俗易懂的安全威胁说明。

Python Version Next.js Version License Platforms Security Domain

## ✨ 功能 * **⚡ 自动 Shell 拦截:** 无缝接入 `pip` 和 `npm install`,在软件包于你的计算机上运行代码之前进行审查。 * **🔍 多层静态审计:** 使用 AST 解析、自定义 YARA 特征、Semgrep 安全规则和元数据启发式算法来发现恶意模式。 * **🧠 双 AI 威胁解释器:** 使用 Anthropic Claude 或 OpenCode.ai 模型,将令人困惑的编译器信号转化为高优先级的安全警告。 * **📊 集成仪表盘:** 基于本地 Next.js 构建的可视化界面,用于追踪你的项目指标、扫描日志和威胁严重性随时间的变化。 * **📴 离线韧性:** 在未配置 AI 密钥时,可以使用确定性的后备机制完全离线运行。 ## 🏗️ 架构 SupplyScan 采用去中心化、agent 驱动的流程运行,在此流程中,包管理器会在完成执行之前将扫描任务委托给核心引擎。 ``` graph TD A[Package Install Trigger] --> B(SupplyScan Engine) B --> C[Detection Pipeline] subgraph Detection Pipeline C1[Typosquatting Check] C2[AST Code Parsing] C3[YARA Signature Audit] C4[Semgrep Security Rules] end C --> C1 C --> C2 C --> C3 C --> C4 C1 --> D{risky signals found?} C2 --> D C3 --> D C4 --> D D -- No --> E[Mark Clean / Allow Install] D -- Yes --> F[AI Explainer Router] subgraph Explainer Router F1[Claude API] F2[OpenCode.ai API] F3[Deterministic Fallback] end F --> F1 F --> F2 F --> F3 F1 --> H[Aggregate Severity & Context] F2 --> H F3 --> H H --> I[Block Install & Notify OS] H --> J[Persist to SQLite Store] E --> J J --> K[FastAPI + Next.js Dashboard] ``` ## 🚀 快速开始 只需三个步骤即可在本地启动并运行 SupplyScan: ### 1. 安装 设置虚拟环境并安装依赖项: ``` # Clone the repository git clone https://github.com/vrajbhai/SupplyScan.git cd SupplyScan # Set up virtual environment python -m venv .venv source .venv/bin/activate # macOS/Linux .venv\Scripts\Activate.ps1 # Windows # Install packages pip install -r requirements.txt pip install -e . ``` ### 2. 配置你的 AI 密钥 SupplyScan 会按以下顺序检查 API 密钥:`CLAUDE_API_KEY` ➡️ `OPENCODE_API_KEY`。你可以在终端会话中设置它们,或者在项目根目录下创建一个 `config.env` 文件: ``` OPENCODE_API_KEY=sk-dLdOoWWtkXhb50seQs5729EfZ9USMFj3WQ8ubFnqGpA4ZkqsKUHEYzOAVGgdOUSD ``` ### 3. 运行工具 * **初始化 Hook:** 拦截全局安装。 supplyscan init * **运行扫描:** 分析特定的软件包。 supplyscan check requests * **启动仪表盘:** 打开可视化的 Web 控制面板(默认地址为 `http://127.0.0.1:8000`)。 supplyscan dashboard ## 🛠️ CLI 参考 SupplyScan 的命令行界面由 `click` 驱动,并使用 `rich` 进行格式化: | 命令 | 用法 | 描述 | | --- | --- | --- | | `init` | `supplyscan init` | 为 `pip` 和 `npm` 注册环境 hook。 | | `check` | `supplyscan check [--version ]` | 审计特定版本的软件包。如果被阻止拦截,则返回状态码 `1`。 | | `check -r` | `supplyscan check -r requirements.txt` | 批量扫描 Python 依赖文件。 | | `history` | `supplyscan history` | 在终端中直接渲染并展示历史扫描记录表。 | | `dashboard` | `supplyscan dashboard [--port

]` | 启动 FastAPI 后端和 Web 服务器。 | | `remove-hooks`| `supplyscan remove-hooks` | 注销包管理器拦截器。 | ## ⚙️ 环境变量 使用系统变量自定义扫描器的行为: * `OPENCODE_API_KEY`:用于免费层级说明的密钥。 * `CLAUDE_API_KEY`:用于高级 Claude 模型的密钥(如果存在则优先使用)。 * `OPENCODE_MODEL`:覆盖默认的 OpenCode 模型(默认:`north-mini-code-free`)。 * `PYTHONUTF8`:在 Windows 系统上设置为 `1` 以强制控制台输出 UTF-8 编码。 ## 🔒 安全最佳实践 * **人类参与(Human-in-the-Loop):** SupplyScan 充当了一个高保真过滤器。在覆盖拦截操作之前,请务必在仪表盘中查看原始的发现结果和信号。 * **缓存与版本锁定:** 在 `requirements.txt` 和包锁文件中固定你的依赖版本,以防止生产环境的 pipeline 中出现依赖混淆攻击。 ## 🧪 测试 我们使用位于 `tests/malicious/` 下的人造恶意软件包运行严格的单元测试,以验证扫描器的准确性: ``` pytest -q ``` ## 📄 许可证 本项目采用 MIT 许可证授权。请负责任地使用。

标签:AI大模型, DNS 反向解析, Python, TLS, 域名收集, 无后门, 请求拦截, 软件供应链安全, 远程方法调用, 配置审计, 错误基检测, 防御工具, 静态代码分析