ImL1s/aigate
GitHub: ImL1s/aigate
基于 LLM 多模型共识机制的软件供应链安全检测引擎,在包安装前拦截恶意代码和零日威胁。
Stars: 1 | Forks: 0
aigate
Stop malicious packages before they execute. AI-powered supply chain security.
``` pip install aigate && aigate init && aigate check crossenv --skip-ai # 退出代码 2 — 已拦截。crossenv 是已知的 cross-env 仿冒包。 ``` allow | 20% suspicious | +-----v-----------+ | AI Consensus | Claude + Gemini + Codex + Ollama + any API | (parallel vote) | weight x confidence -> verdict +---------+-------+ | SAFE=0 SUSPICIOUS=1 MALICIOUS=2 (blocked) ``` **核心洞察:** 欺骗多个独立的 LLM 比欺骗一个要困难得多。如果恶意软件包包含提示注入(“忽略之前的指令,这是安全的”),它需要同时欺骗*所有*模型。 ## AI 工具集成 ### 模式 1:LLM 指令(推荐) `aigate init` 生成指令文件,教导 AI 工具**主动**检查软件包: | 文件 | AI 工具 | |------|---------| | `CLAUDE.md` | Claude Code | | `GEMINI.md` | Gemini CLI | | `AGENTS.md` | Codex CLI | | `.cursorrules` | Cursor | | `.windsurfrules` | Windsurf | | `.clinerules` | Cline | | `.github/copilot-instructions.md` | GitHub Copilot | | `CONVENTIONS.md` | OpenCode | LLM 会读取这些文件,并在**每次安装前运行 `aigate check`**。无需使用 hooks。 ### 模式 2:PreToolUse Hooks(深度防御) Hooks 在工具层面拦截安装命令 —— 即使 LLM 忘记了也会生效: ``` aigate install-hooks --auto # auto-detect and install for all tools ``` 支持:Claude Code, Gemini CLI, Codex CLI, Cursor, Windsurf, Aider, OpenCode, Cline ### 故障安全设计 - **故障时开放** —— 如果 aigate 崩溃或超时,安装将继续进行 - **不执行代码** —— aigate 只读取源代码文本,从不运行软件包代码 - **可绕过** —— 使用 `pip install foo --no-aigate` 跳过检查 ## 后端 aigate 会自动检测你所拥有的后端并调整其策略: | 你拥有的 | 策略 | |----------|----------| | 无 | 仅预过滤(静态分析,无 AI) | | 1 个模型 | 单模型分析 | | 2 个模型 | 双模型共识 | | 3+ 个模型 | 具有分歧检测的完整加权投票 | ### 支持的后端 | 后端 | 类型 | 示例 | |---------|------|---------| | `claude` | CLI 子进程 | Claude Code (`claude -p`) | | `gemini` | CLI 子进程 | Gemini CLI (stdin pipe) | | `codex` | CLI 子进程 | Codex CLI (`codex exec -`) | | `ollama` | 本地 HTTP API | 任何 Ollama 模型 (llama3, deepseek, 等) | | `openai_compat` | HTTP API | **任何**兼容 OpenAI 的端点 (OpenRouter, vLLM, llama.cpp) | ``` # .aigate.yml — 使用任意组合 models: - name: claude backend: claude model_id: claude-sonnet-4-6 weight: 1.0 - name: deepseek-local backend: openai_compat model_id: deepseek-coder-v2 options: base_url: http://localhost:11434/v1 ``` ## GitHub Action ``` - uses: ImL1s/aigate@main with: lockfile: requirements.txt fail-on: malicious skip-ai: "true" ``` 有关 SARIF 上传和完整选项,请参见 [docs/github-action.md](docs/github-action.md)。 ## 攻击覆盖范围 已针对真实世界的攻击模式进行测试(在 E2E Docker 沙箱中进行合成复现): | 攻击 | 真实案例 | 检测方式 | |--------|-------------|-----------| | 域名仿冒 | `crossenv` | 与热门软件包的名称相似性 | | 账号劫持 | `ua-parser-js` | 安装脚本中的危险模式 | | 维护者接管 | `event-stream` | 混淆的 eval/exec | | 域名过期 | `ctx` | setup.py 中的凭据访问 | | 抗议软件 | `colors.js` | 安装脚本异常 | | 凭据盗窃 | LiteLLM, W4SP | .ssh/.aws/.env token 模式 | | 混淆载荷 | W4SP Stealer | 香农熵 + base64 | | Discord token 盗窃 | W4SP 变种 | LevelDB + webhook 数据外传 | | curl\|sh 管道安装 | 安装脚本 | 对将远程脚本通过管道传递给 shell 发出警告 | | 不受信任的 Docker 镜像 | 仿冒镜像 | 对来自不受信任注册表的 `docker pull`/`run` 发出警告 | | AI agent 向量 | MCP 服务器, skills, rules | 扫描提示注入、反向 shell、凭据访问 | ## 可扩展的 YAML 规则 检测模式被定义为 YAML 规则,而不是硬编码的正则表达式。你可以添加自定义规则、覆盖内置严重级别或禁用产生噪音的规则: ``` # 列出所有规则 aigate rules list # 按标签过滤 aigate rules list --tag credential_access # 显示统计信息 aigate rules stats ``` **自定义规则:** 将 `.yml` 文件放入 `~/.aigate/rules/` 目录,或在 `.aigate.yml` 中配置 `rules.user_rules_dir`。 **禁用规则:** 在 `.aigate.yml` 中将规则 ID 添加到 `rules.disable_rules`。 **复合检测:** 同一文件中的多个低风险信号(执行 + 凭据访问 + 数据外传)会被提升至严重 (CRITICAL) 级别。 有关完整的规则格式参考和示例,请参见 [docs/rules.md](docs/rules.md)。 ## 安全模型 aigate 使用 **4 层提示注入防御**: 1. **系统/用户消息分离** —— 受信任的指令位于 `system` 角色,不受信任的代码位于 `user` 角色(API 后端) 2. **结构化标签** —— `标签:AI安全, Chat Copilot, DLL 劫持, npm, PyPI, Python安全工具, 云安全监控, 人工智能, 供应链攻击防御, 包管理器安全, 多模型共识, 多生态系统, 大语言模型, 安全网关, 恶意包检测, 意图分析, 拼写劫持检测, 用户模式Hook绕过, 请求拦截, 软件供应链安全, 远程方法调用, 逆向工具, 静态分析