inbharatai/jak-shield

GitHub: inbharatai/jak-shield

JAK Shield 是一款 MCP 原生的 AI 智能体安全网关,通过拦截和审计工具调用来防御提示注入、数据泄露及破坏性操作。

Stars: 1 | Forks: 0

JAK Shield # JAK Shield ### **AI 智能体的通用安全网关。** *每一次 Claude / OpenAI / Cursor / VS Code / LangChain / CrewAI 的工具调用都会首先经过 Shield。
拦截破坏性操作、脱敏 PII、检测 prompt 注入、要求人工批准——在智能体触及真实世界之前。
当你确切了解情况时,可通过审查进行覆盖。在有限的运维窗口内暂停。**CRITICAL** 级别规则(`rm -rf /`、`DROP TABLE`、生产部署、支付)**绝不妥协。***
[![发布版](https://img.shields.io/github/v/release/inbharatai/jak-shield?style=for-the-badge&logo=github&color=7C3AED)](../../releases/latest) [![CI](https://img.shields.io/github/actions/workflow/status/inbharatai/jak-shield/ci.yml?branch=main&label=CI&logo=github&style=for-the-badge)](../../actions) [![测试](https://img.shields.io/badge/tests-179%20passing-brightgreen?style=for-the-badge)](#-test--benchmark-results) [![对抗性基准](https://img.shields.io/badge/adversarial%20bench-45%2F45-brightgreen?style=for-the-badge)](./bench/scenarios.json) [![决策延迟](https://img.shields.io/badge/p95%20latency-~2.3ms-blue?style=for-the-badge)](./bench/perf-bench.mjs) [![许可证](https://img.shields.io/badge/license-MIT-blue?style=for-the-badge)](./LICENSE) [![MCP](https://img.shields.io/badge/Model_Context_Protocol-1.29-7C3AED?style=for-the-badge&logo=anthropic&logoColor=white)](https://modelcontextprotocol.io) [![Claude Desktop](https://img.shields.io/badge/Claude_Desktop-ready-D97757?style=for-the-badge)](https://claude.ai/download) [![Cursor](https://img.shields.io/badge/Cursor-ready-000000?style=for-the-badge)](https://cursor.com) [![OpenAI Agents](https://img.shields.io/badge/OpenAI_Agents_SDK-ready-10A37F?style=for-the-badge&logo=openai&logoColor=white)](https://openai.com) [![VS Code](https://img.shields.io/badge/VS_Code-ready-007ACC?style=for-the-badge&logo=visualstudiocode&logoColor=white)](https://code.visualstudio.com) [**快速开始 →**](#-quick-start) · [**在线演示 →**](#-30-second-demo) · [**文档 →**](./docs) · [**Discord →**](https://github.com/inbharatai/jak-shield/discussions)
## 🛡️ 为什么会有 JAK Shield 到了 2026 年,每一个 AI 智能体 —— Claude、OpenAI、Cursor、VS Code Copilot,以及你上周二刚发布的 LangChain / CrewAI / Vercel AI 流程 —— 都具备**发送邮件、查询 Postgres、运行 Shell 命令、调用 GitHub、发 Slack 消息、转移资金**的能力。它们中没有谁会事先征得你的同意。 **网页中的一次 prompt 注入。一次幻觉导致的 `DROP TABLE`。一封泄露了 SSN 的邮件正文。一次糟糕的经历。** JAK Shield 驻留在任何兼容 MCP 的 AI 客户端(或通过适配器连接的框架)与真实工具之间,拦截每一次调用: ``` AI Agent ─► JAK Shield ─► [policy engine + DLP + injection scan + taint + approval] ─► real tool ↑ override (v0.2) · pause (v0.3) · always-on CRITICAL block ``` 这是你的智能体所需的 **MCP 原生**安全层——开源、确定性、带签名、可审计,并且通过 MCP stdio 实现端到端 **~2 ms p95** 延迟。完整的流程包含十个阶段,其中确定性引擎拥有最终决定权;OpenAI 分类器(在配置后)仅提供建议而从不覆盖决定。 ## ⚡ 30 秒演示
JAK Shield blocking a DROP TABLE call inside Claude Desktop
*此 GIF 由 [`jak-shield-demo.svg`](./.github/assets/jak-shield-demo.svg) 通过 [`scripts/generate-demo-gif.mjs`](./scripts/generate-demo-gif.mjs) 生成——纯 Node 环境,无 headless 浏览器,无 ffmpeg。如果你想使用自己的 Claude Desktop 获取真实的录屏,请运行 [`scripts/record-demo.ps1`](./scripts/record-demo.ps1)(需要 ffmpeg + ScreenToGif)。测试套件的 asciinema 录制位于 [`.github/assets/demo.cast`](./.github/assets/demo.cast)。* ``` You: "Send a quick summary of customer data to partner@external.com" Agent: uses gmail.send_email with body containing SSN 123-45-6789, Aadhaar 234123412346 🛡️ JAK Shield decision: action: requires_approval rule: external-email-pii risk: HIGH reason: External email to partner@external.com contains SSN, AADHAAR, STUDENT_RECORD safe_alternative: Send an anonymized summary instead. compliance: PCI_DSS · HIPAA · GDPR · CCPA · DPDP · FERPA signature: d8e709423cb1a0... (HMAC-verified) approval_id: apr_d192c5a09f94e77e ``` 相同的 payload 通过任何其他未配备 Shield 的 MCP 客户端发送——会悄无声息地离开你的网络。 **覆盖路径**(v0.2 新增): ``` You: "I vetted partner@external.com yesterday — accept the risk and send." Agent: shield.override_block({ blocked_decision: , human_reason: "Partner@external.com is vendor on contract since 2025-09; legal-cleared.", accepted_by: "reetu" }) 🛡️ JAK Shield response: ok: true override_token: eyJhbGciOi... (single-use, 60 s TTL) scrutiny_calls: 10 scrutiny_note: "Anomaly + taint thresholds tightened for the next 10 calls in this session. Any further block is NOT overridable." audit_note: OVERRIDE_ACCEPTED tenant=t1 session=s1 rule=external-email-pii ... ``` 如果同一个智能体在 30 秒后尝试删除客户表,覆盖机制*无法*挽救它——此时的 BLOCK 已成为硬性拦截,在执行 `shield.stand_down` 或窗口到期之前,没有第二次机会。 ## 🚀 快速开始 ### 为 Claude Desktop 安装(1 分钟) ``` git clone https://github.com/inbharatai/jak-shield.git cd jak-shield pnpm install && pnpm build node scripts/install-claude-desktop-mcp.mjs # auto-wires Claude Desktop ``` 重启 Claude Desktop。询问:*"你有哪些 jak-shield 工具?"* —— 你会看到 **23 个 shield 原语** + 连接器包装(Gmail、GitHub、Postgres、Supabase、shell、filesystem、browser、HTTP、Slack、SMS、webhook、Google Drive、social)。 ### 🌍 兼容任何 MCP 兼容的 AI 客户端(及其他多数可通过适配器兼容的客户端) JAK Shield 采用 [Model Context Protocol](https://modelcontextprotocol.io)。任何同样支持该协议的客户端都可以零 JAK-Shield 专用代码使用它。 **MCP 原生——连接即用:** | 客户端 | 传输方式 | 配置 | |---|---|---| | 🟪 [Claude Desktop](https://claude.ai/download) | stdio | `configs/mcp/claude-desktop.json` | | 🟪 [Claude Code](https://docs.anthropic.com/claude-code) CLI | stdio | `~/.claude/mcp.json` | | 🟪 [Anthropic Claude API](https://docs.anthropic.com) | HTTP | `tools: [{ type: "mcp", server_url }]` | | 🟢 [OpenAI Agents SDK](https://openai.github.io/openai-agents-python) | HTTP | `configs/mcp/openai-agents-example.ts` | | 🟢 [OpenAI Responses API](https://platform.openai.com/docs/api-reference/responses) | HTTP | `tools: [{ type: "mcp", server_url }]` | | ⬛ [Cursor](https://cursor.com) | stdio | `configs/mcp/cursor-mcp.json` | | 🟦 [VS Code](https://code.visualstudio.com) (Copilot Chat / Cline / Roo Code) | stdio | `configs/mcp/vscode-mcp.json` | | 🟫 [Windsurf](https://windsurf.com) | stdio | `~/.codeium/windsurf/mcp_config.json` | | ⚫ [Zed](https://zed.dev) | stdio | `~/.config/zed/settings.json` | | 🟡 [Goose](https://block.github.io/goose/) (Block) | stdio | `~/.config/goose/profiles.yaml` | | 🟠 [Continue.dev](https://continue.dev) | stdio | `~/.continue/config.json` | | 🟢 [Mastra](https://mastra.ai)、[n8n](https://n8n.io)、[LibreChat](https://librechat.ai)、[5ire](https://5ire.app) | 不定 | 各自的 MCP 配置 | | 🐍 [LangChain](https://www.langchain.com) (Python / JS) | stdio / HTTP | `MultiServerMCPClient` | | 🦙 [LlamaIndex](https://www.llamaindex.ai) | stdio / HTTP | `BasicMCPClient` | | 🧰 任何自定义客户端 (TS / Python / Java / Kotlin / C# / Swift SDKs) | 皆可 | 使用 [官方 SDKs](https://modelcontextprotocol.io/docs) | **目前非 MCP 客户端——需要轻量级适配器(直接 REST 调用):** | 工具 | 为什么需要适配器 | 实现方式 | |---|---|---| | ChatGPT Custom GPTs / Actions | 使用 OpenAI Actions (OpenAPI 3.1) 而非 MCP | 托管 JAK Shield REST API 规范 | | Google Gemini | Google 的 function-calling 协议 | 将 `shield.*` 工具包装为 `FunctionDeclaration`s | | xAI Grok / DeepSeek / Mistral / Cohere | OpenAI 兼容的工具或它们自己的协议 | 从你的工具处理程序调用 `POST /api/evaluate` | | CrewAI · AutoGen · LangGraph (Python) | Python 原生工具类 | 继承 `BaseTool` 并向 JAK Shield 发送 POST 请求 | | Zapier · Make · IFTTT | 基于 Webhook | 将 Webhook 指向 `POST /api/evaluate` | | 任何能发送 HTTPS POST 请求的平台 | 不适用 | JAK Shield 的 REST API 接受任何 JSON | 坦诚相待:MCP 原生客户端 = 零代码开销。适配器客户端 = 每个平台约 30 分钟。如果你想要上述任何平台的预构建适配器,请[创建一个 issue](../../issues/new?template=feature_request.md),我们会优先考虑。 ### 为 Cursor / VS Code / OpenAI Agents SDK 安装 预构建配置位于 `configs/mcp/`: ``` // ~/.cursor/mcp.json (or vscode-mcp.json) { "mcpServers": { "jak-shield": { "command": "node", "args": ["./node_modules/@jak-shield/mcp-server/dist/stdio.js"] } } } ``` ### 作为远程 MCP 网关安装 (Docker) ``` docker-compose up -d # MCP gateway: http://localhost:4101/mcp/ # Dashboard: http://localhost:3000 # API: http://localhost:4100 ``` ### 通过 Smithery 一键安装 发布到 Smithery 后,JAK Shield 可一键安装到任何兼容客户端(Claude Desktop、Cursor、Cline、Windsurf)中: Smithery 负责处理配置模式、密钥提示(OpenAI key、加密密钥、企业域)以及 `.mcpb` 安装——这一切由仓库根目录的 [`smithery.yaml`](./smithery.yaml) 驱动。 ### 通过 npm 安装 ``` npm install -g @jak-shield/mcp-server # once published jak-shield-mcp # stdio transport ``` 在此之前,请通过 GitHub release 安装: ``` # 从 v0.3.0 release 下载 .mcpb bundle curl -L -o jak-shield.mcpb https://github.com/inbharatai/jak-shield/releases/download/v0.3.0/jak-shield-0.3.0.mcpb # 双击 .mcpb 以安装到 Claude Desktop ``` ### 下载特定版本 - **[v0.3.0](https://github.com/inbharatai/jak-shield/releases/tag/v0.3.0)** — 最新版 · 用户控制的暂停 + 自动恢复 - **[v0.2.0](https://github.com/inbharatai/jak-shield/releases/tag/v0.2.0)** — 拦截覆盖 + 加强审查 - **[v0.1.0](https://github.com/inbharatai/jak-shield/releases/tag/v0.1.0)** — 首次公开发布 ## ✨ 你将获得
### 🚦 确定性策略引擎 - 8 个内置规则(危险的 shell、危险的 SQL、外部邮件 PII、生产部署、支付、社交发布、文件系统沙箱、浏览器黑名单) - 基于角色的访问控制(5 种角色) - 可配置的审批阈值 - 风险分类体系:`READ_ONLY` · `WRITE` · `EXTERNAL_SIDE_EFFECT` · `DESTRUCTIVE` ### 🧬 多阶段 prompt 注入检测 - 6 个检测阶段:标准 · 结构 · Unicode 易混淆字符 · base64/hex 解码 · 字母间隔 · 多语种 - 跨越 **13 种非英语语言** 加上英语基线的 80+ 模式 —— ES · FR · DE · IT · PT · RU · ZH · JA · KO · HI · AR · TR · VI(可通过 `grep "lang:" packages/prompt-shield/src/patterns-extended.ts` 验证) - RAG 投毒 · 工具名欺骗 · 间接注入 · 格式化 token 攻击 - 曾在生产环境中捕获 Cyrillic 易混淆字符 + base64 编码 + Russian 多态攻击 ### 🩺 带有加密验证器的 PII 检测 - **28 种 PII 类型**,包括 SSN · Aadhaar · IBAN · PAN · NRIC · CPF · CNPJ · SIN · TFN · EIN · IMEI · Bitcoin · Ethereum - Luhn(信用卡)、Verhoeff(Aadhaar)、mod-97(IBAN)、ABA、mod-11(NHS)校验和验证 - 上下文窗口置信度评分 - 12 种密钥类型:AWS · GitHub · Stripe · OpenAI · Anthropic · GCP · JWT · PEM · … ### 🧲 污点追踪 *(MCP 领域首创)* - MinHash + n-gram 指纹识别(抗复述) - 每次会话、受 TTL 限制 - 阻止 UNTRUSTED 数据流入敏感接收器 ### 🔓 跨调用攻击链检测 - 20 种多步骤攻击模式(读取 PII → 渗透、凭据窃取、侦察 → 破坏等) - 数据流追踪(步骤 N 的输出 → 步骤 N+1 的参数) - 时间衰减加权 ### 📊 行为异常检测 - EWMA + z-score 基线 - 多时间窗口(1 分钟 / 5 分钟 / 1 小时 / 24 小时) - 每个租户 + 每个智能体 - 突增 · 首次破坏 · 峰值信号 ### 🔐 防篡改决策 + 能力 token - 具有密钥轮换的 HMAC-SHA256 签名决策 - 短期(默认 60 秒)、一次性、范围绑定的能力 JWT - 每个租户的 AES-256-GCM 凭证库 ### 📜 监管提示 *(非法律分类)* - 自动标记每一个决策:PCI DSS · HIPAA · GDPR · CCPA · SOX · FERPA · DPDP - CFR / GDPR 条款引用 - 明确的置信度级别 + 免责声明(“分诊信号,非合规认证”) ### 🛰️ 生产级运维 - Prometheus `/metrics`(15+ 个计数器/仪表盘/直方图) - 令牌桶速率限制(常规 60 次/分钟,认证 10 次/分钟) - 每个连接器的断器 - 优雅的 SIGTERM/SIGINT 关闭 - 在 `NODE_ENV=production` 环境下启动时检测到开发密钥则拒绝运行 ### 🛂 拦截覆盖 + 加强审查 *(v0.2)* - 每一次 BLOCK 决策都会显示被拦截的*内容*和*原因*,如果该规则不在硬性停止列表中,还会提供一个**覆盖提议** - CRITICAL 级别的拦截(无 `WHERE` 的 `rm -rf /`、`DROP TABLE`、无 ticket 的生产部署、无幂等性的支付、能力 token 重放等)**绝不接受覆盖**——改变请求,而不是改变判决 - 接受覆盖会生成一次性的 HMAC 签名 token,并为会话中接下来的 5-10 次调用开启一个**加强审查窗口**:异常 z-score 阈值从 3.0 降至 1.5,污点 Jaccard 阈值从 0.30 降至 0.15,并且在该窗口内的任何后续拦截都**不可覆盖** - 每一次覆盖(接受或拒绝)都会连同人工的用户 ID + 至少 8 个字符的自由文本理由一起记入审计日志 - MCP 工具:`shield.override_block`、`shield.scrutiny_status`、`shield.stand_down` - 覆盖字段包含在签名的规范形式中——篡改 `overridable` 将使 HMAC 失效 ### ⏸️ 用户控制的暂停与恢复 *(v0.3 — 新增)* - 当你确切知道自己在做什么时——运行迁移、调试生产数据、处于已知安全的运维窗口——而每次调用都覆盖太麻烦时 - `shield.pause` 在限定窗口内(1-60 分钟,默认 15 分钟)暂停 NON-CRITICAL 拦截。要求:书面理由至少 20 个字符。可选:`scope`(会话 / 用户 / 租户)及用于精确限定范围的 `also_enforce_rules` - **即使在暂停期间,CRITICAL 规则依然生效** ——无 `WHERE` 的 `rm -rf /`、`DROP TABLE`、无 ticket 的生产部署、无幂等性的支付、攻击性网络行动、能力 token 重放、prompt 注入输入。这些是硬编码的不可暂停项。用户应当改变请求,而不是改变判决 - 暂停是**有时间限制且自动过期**的。没有“无限期关闭”。每次请求最长 60 分钟 - 暂停窗口期间的每一个决策都会附加 `metadata.pausedState`,以便 UI 可以显示醒目的“JAK Shield 已暂停(剩余 14 分钟)”横幅 - 当暂停结束(自动或通过 `shield.resume` 手动结束)时,会话会在接下来的 10 次调用中进入**加强审查**——与覆盖流程相同的收紧阈值。暂停 + 审查是窗口期后的安全护栏 - 在暂停开始、窗口内每次被抑制的拦截以及暂停结束时记入审计日志 - MCP 工具:`shield.pause`、`shield.resume`、`shield.pause_status`
## 🧠 工作原理 ``` flowchart LR A[AI Client
Claude · OpenAI · Cursor · VS Code] -->|MCP stdio/HTTP| B[JAK Shield MCP Server] B --> C{decide()} C --> D[Hard rules
block] C --> E[Injection v2
6 stages, 13+EN langs] C --> F[Taint tracker
MinHash n-grams] C --> G[Attack-chain
20 patterns] C --> H[Soft rules
approval/redact] C --> I[PII v2
28 types + checksums] C --> J[Anomaly
EWMA + z-score] C --> K[RBAC + threshold] C --> L[OpenAI classifier
advisor] C --> M[HMAC sign] M --> N[Connector
Gmail · GitHub · SQL · Shell · …] M --> O[Approval queue] M --> P[Audit log] M --> Q[Prometheus] ``` 端到端决策流水线(MCP stdio + 序列化 + 策略 + 签名)在普通 CPU 上以 **~2–3 ms p95** 运行,远低于 50 ms 的 SLO。完整架构见:[`docs/ARCHITECTURE.md`](./docs/ARCHITECTURE.md)。 ## 🚦 拦截、审批、覆盖和暂停的实际运作方式 每个工具调用都会获得五种结果之一。以下是它们各自在线路上的表现形式及处理方式。 ### 五种结果一览 | 动作 | 发生时机 | 你需要做什么 | |---|---|---| | `allow` | 安全调用,无异常信号 | 连接器执行,你获得结果 | | `redact` | 检测到 PII 但调用本身没有问题 | 连接器使用脱敏后的参数执行(例如 SSN → `***-**-6789`) | | `requires_approval` | 有风险但不具破坏性(外部邮件、社交发布等) | 审阅者必须通过仪表盘或 `shield.check_approval` 进行批准 | | `block` | 破坏性 / 已知攻击模式 | 调用被拒绝。如果可覆盖,你会收到一个详细列出最坏情况的提议 | | `rewrite` | 分类器提出了更安全的替代方案 | 使用建议的重写或改进你的 prompt | CRITICAL 级别的拦截(无 `WHERE` 的 `rm -rf /`、`DROP TABLE`、无 ticket 的生产部署、无幂等性的支付、能力 token 重放、攻击性网络行动、prompt 注入输入)**绝不**接受覆盖,也**绝不**向暂停妥协。这是不可逾越的底线。 ### 流程 1 —— 审批(最常见的“我不确定”情况) 触发条件:智能体调用 `gmail.send_email` 向外部域发送带有 PII 的邮件。 ``` // 1. Agent's tool call goes through Shield first { "tool": "shield.evaluate_tool_call", "args": { "tool_name": "gmail.send_email", "args": { "to": "partner@external.com", "subject": "Q4 roster", "body": "SSN 123-45-6789..." } } } // 2. Shield's decision { "action": "requires_approval", "rule": "external-email-pii", "risk": "HIGH", "reason": "External email to partner@external.com contains SSN, AADHAAR, STUDENT_RECORD", "compliance": ["GDPR", "FERPA", "HIPAA"], "approval_id": "apr_a1b2c3d4e5f6", "signature": "d8e709423cb1a0..." // HMAC-verified } // 3. A reviewer decides (dashboard or API) POST /api/approvals/apr_a1b2c3d4e5f6/decide { "decision": "approve", "decided_by": "reetu" } // or { "tool": "shield.check_approval", "args": { "approval_id": "apr_a1b2c3d4e5f6" } } // → returns { "status": "APPROVED", "decided_by": "reetu", "decided_at": "..." } // 4. Agent re-invokes with the approved approval_id { "tool": "shield.proxy_tool_call", "args": { "tool_name": "gmail.send_email", "args": {...}, "approval_id": "apr_a1b2c3d4e5f6" } } // → executes, audit-logged ``` 审批会超时(默认 24 小时)。待处理的审批可在仪表盘的 `/approvals` 查看。 ### 流程 2 —— 拦截覆盖 *(v0.2)* —— 当你认为拦截是误判时 触发条件:同样的 `gmail.send_email`,发送对象是你的团队昨天审查过的供应商,但 Shield 并不知情。 ``` // 1. Shield blocks { "action": "block", "rule": "external-email-pii", "risk": "HIGH", "reason": "External email contains SSN...", "override": { "overridable": true, "humanReason": "External email contains SSN...", "worstCase": "Email could leak PII to an external recipient who is not your customer or vendor.", "scrutinyCalls": 10, "ttlSeconds": 60, "scopedToRule": "external-email-pii", "blockId": "blk_xyz" }, "signature": "d8e7..." // HMAC covers the override fields too } // 2. You accept the risk in writing { "tool": "shield.override_block", "args": { "blocked_decision": , "human_reason": "partner@external.com is a vendor on contract since 2025-09; legal-cleared yesterday", "accepted_by": "reetu" } } // 3. Shield mints a single-use override token + opens scrutiny window { "ok": true, "override_token": "eyJhbGciOi...", // single-use, 60s TTL "scrutiny_calls": 10, "scrutiny_note": "JAK Shield is still watching. Anomaly + taint thresholds are tightened for the next 10 calls in this session. Any further block is NOT overridable." } // 4. Next call passes the token — bypasses *this rule for this exact args hash* { "tool": "shield.proxy_tool_call", "args": { "tool_name": "gmail.send_email", "args": {...}, "override_token": "eyJ..." } } ``` **如果你尝试覆盖 CRITICAL 拦截会怎样?** ``` // Shield blocks DROP TABLE — risk=CRITICAL, rule=dangerous-sql-drop-without-where // Note: the response has NO `override` field at all — that's how you know it's not overridable // You try anyway: { "tool": "shield.override_block", "args": {...} } // → { "ok": false, "code": "NO_OFFER", "reason": "This block did not come with an override offer. CRITICAL-risk blocks and certain rules are intentionally non-overridable." } ``` 你需要改变请求,而不是改变判决。 ### 流程 3 —— 暂停 *(v0.3)* —— 当你明确知道在一段时间内要进行高风险操作时 触发条件:你正在运行计划的数据库迁移,其中包含一些 Shield 通常会拦截的 `TRUNCATE TABLE` 调用。覆盖流程(10 次调用的宽限)不够用。 ``` // 1. Pause the session for up to 60 minutes { "tool": "shield.pause", "args": { "scope": "session", "reason": "Running planned Q4 migration tested in staging — known safe window for next 30 min", "duration_minutes": 30, "also_enforce_rules": ["external-email-pii"] // still block PII leaks even during the window } } // 2. Shield acknowledges + warns { "ok": true, "pause_id": "pause_abc123", "scope": "session", "expires_at": 1747142400000, "duration_minutes": 30, "warning": "JAK Shield is paused for 30 minute(s). CRITICAL-risk rules (rm -rf /, DROP TABLE without WHERE, prod-deploy without ticket, payment without idempotency, offensive-cyber, capability-token replay) STILL fire. When the pause ends, the next 10 calls run under heightened scrutiny." } // 3. While paused — non-CRITICAL blocks suppressed, every decision carries pausedState { "action": "allow", "reason": "[PAUSED] Browser scrape of suspicious URL — block suppressed by active pause (session, expires 2026-05-13T15:00:00Z)", "metadata": { "paused": true, "originalAction": "block", "originalRule": "browser-scrape", "pausedState": { "active": true, "scope": "session", "msRemaining": 1750000, "reason": "Running planned Q4 migration...", "triggeredBy": "reetu" } } } // 4. CRITICAL rules STILL fire — even during pause { "tool": "shield.proxy_tool_call", "args": { "tool_name": "postgres.query", "args": { "sql": "DROP TABLE users" } } } // → action: "block", rule: "dangerous-sql-drop-without-where", risk: "CRITICAL" // (no override offer — never bypassable) // 5. Done early? Resume manually { "tool": "shield.resume", "args": { "scope": "session" } } // → { "ok": true, "duration_actual_seconds": 412, "calls_observed": 7, "scrutiny_started": true, "note": "JAK Shield is back on duty. The next 10 calls in this session run under heightened scrutiny..." } // 6. If you don't resume, pause auto-expires at expires_at. Scrutiny still opens. ``` 暂停是**限定范围的、有时间边界的、可审计的且对 CRITICAL 免疫的**——拥有 `shield.pause` 的恶意行为者最坏的情况也只是在一个永久审计追踪和随之而来的加强审查下,最多抑制非 CRITICAL 拦截 60 分钟。 ### 流程 4 —— 加强审查窗口(后置状态) 在每次覆盖接受或每次暂停结束后,会话将在接下来的 10 次调用(或 15 分钟,以先到期者为准)中进入**加强审查窗口**。在该窗口期间: | 阈值 | 正常情况 | 审查状态下 | |---|---|---| | 异常 z-score | 3.0 | **1.5**(捕获更多异常值)| | 污点 Jaccard | 0.30 | **0.15**(捕获被覆盖数据更模糊的匹配项)| | 任何后续拦截 | 符合覆盖条件 | **不可覆盖**(一次性规则)| | 每一次决策 | 正常返回 | 附带 `heightenedScrutiny` 字段以便 UI 展示“仍在监控”| 随时检查状态: ``` { "tool": "shield.scrutiny_status", "args": { "context": { "sessionId": "s1", "tenantId": "t1" } } } // → { "active": true, "calls_remaining": 7, "triggered_by": "external-email-pii", "thresholds": { "anomalyZScore": 1.5, "taintJaccard": 0.15 }, "warnings": [...] } ``` 当覆盖任务完成后,提前结束审查: ``` { "tool": "shield.stand_down", "args": { "context": {...} } } ``` ### 哪些内容会被记入审计日志 每个状态转换都会发出一个结构化的审计条目。可通过 `apps/api` 的 `/api/audit` 端点查询: | 事件 | 时机 | 严重程度 | |---|---|---| | `POLICY_DECISION` | 每次工具调用 | INFO | | `TOOL_CALL_BLOCKED` | 动作 = 拦截 | WARN | | `APPROVAL_REQUESTED` | 动作 = 需要审批 | INFO | | `APPROVAL_GRANTED` / `_REJECTED` / `_EXPIRED` | 审阅者决定或超时 | INFO / WARN | | `POLICY_DECISION_OVERRIDDEN` | 覆盖被接受(或拒绝)| WARN / INFO | | `SCRUTINY_STARTED` | 暂停开始或覆盖被接受 | WARN | | `SCRUTINY_WARNING` | 在审查窗口期间检测器触发 | INFO | | `SCRUTINY_ENDED` | 审查窗口关闭(手动或自动)| INFO | | `PII_DETECTED` / `PII_REDACTED` | DLP 扫描发现 | INFO | | `INJECTION_DETECTED` | 注入扫描器发现 | WARN | 审计细节本身在持久化之前会通过 `packages/dlp/src/persistence-redactor.ts` 进行 PII 脱敏——敏感的 payload 不会出现在日志本身中。 ### “我怎么知道我处于暂停运行状态?” 客户端 UI 应按以下顺序暴露三个信号: 1. **`metadata.pausedState`** 存在于窗口期间返回的每个决策中。UI 应显示醒目的横幅:*"⏸ JAK Shield 已暂停(剩余 14 分钟)—— 由 reetu 暂停,理由:‘Q4 迁移’”*。 2. **被抑制的拦截**带有 `metadata.originalAction = "block"` 和 `metadata.originalRule`。因此你可以显示“此调用本应根据规则 X 被拦截——由于暂停而作为允许执行。” 3. **`shield.pause_status`** 是任何时刻的权威读取——调用它以确认状态与 UI 显示的一致。 ### “如果在审查开始时,我的智能体正处于多步任务的中间怎么办?” 不会有任何破坏。智能体会获得与原来相同的 `allow` / `block` 决策——只是这些决策由更严格的阈值判定。原本处于异常边缘的调用现在可能会被拦截;明显正常的调用仍然会通过。在审查期间被拦截的每一个决策都是不可覆盖的,因此你要么改变调用,要么等待窗口期结束。 ### “我可以配置阈值 / 窗口大小吗?” 默认值是刻意保守的。要更改它们: - **覆盖 TTL + 审查窗口大小**——在构建时在覆盖提议中传入 `scrutinyCalls` 和 `ttlSeconds`(`packages/policy-engine/src/block-override.ts`)。 - **暂停最大持续时间**——代码中硬编码上限为 60 分钟(`packages/policy-engine/src/shield-pause.ts` 中的 `MAX_PAUSE_MS`)。如果你的环境需要不同的上限,请更改该常量。测试会断言任何超过上限的请求都将被拒绝。 - **审查阈值**——`packages/policy-engine/src/heightened-scrutiny.ts` 中的 `SCRUTINY_THRESHOLDS`。较低的 z-score = 更敏感。较低的 Jaccard = 捕获更多污点。 - **NEVER_OVERRIDABLE_RULES** + **NEVER_PAUSABLE_RULES**——`block-override.ts` 和 `shield-pause.ts` 中的显式允许列表。将规则添加到 never-list 意味着没有人能绕过它;移除则意味着它变得可覆盖/可暂停。将此处的更改视为具有安全影响的操作。 以上所有均为纯代码常量——没有运行时配置。这是有意为之的。运维人员可以 fork 并调整;租户无法通过 API 放宽限制。 ## 📈 测试与基准测试结果 这些数据来自 `pnpm build && pnpm test && pnpm bench && node bench/perf-bench.mjs`。**结果可重现。** | 套件 | 结果 | |---|---| | 纯净构建 | **32/32 个包** ✅ | | 单元 + 安全测试 | **179 个测试通过** (52 dlp + 67 policy-engine 包括 17 个覆盖/审查 + 15 个 shield-pause + 22 个 e2e 安全 + 20 个 injection-v2 + 10 个 sign-decision + 8 个 observability) ✅ | | `pnpm bench` 对抗场景 | **45/45 (100 %)** ✅ | | `bench/perf-bench.mjs`(1000 次迭代,端到端通过 MCP stdio)| ~**860 次决策/秒** · p50 ~**1.0 ms** · p95 ~**2.3 ms** · p99 ~**3.9 ms** · 最大 ~**5.5 ms** ✅ — 实时测量,三次运行,结果稳定。早期 README 曾引用 **0.64 ms p95**;该测量值来自更快的早期环境且现已无法复现,因此已予以更正。 | | 决策 SLO | p95 < 50 ms — **~21 倍余量** | ``` ========== JAK SHIELD ADVERSARIAL BENCHMARK ========== Overall: 45/45 (100.0%) 100% ████████████████████ injection 2/2 100% ████████████████████ injection-unicode 1/1 100% ████████████████████ injection-encoding 1/1 100% ████████████████████ injection-structural 1/1 100% ████████████████████ injection-multilingual 2/2 100% ████████████████████ destructive-sql 4/4 100% ████████████████████ shell 5/5 100% ████████████████████ offensive-cyber 2/2 100% ████████████████████ external-email-pii 2/2 100% ████████████████████ pii-strict 2/2 100% ████████████████████ pii-fp-luhn 1/1 100% ████████████████████ taint-flow (proven via test suite) ... Compliance tags emitted: HIPAA · FERPA · GDPR · CCPA · DPDP · SOX ``` ## 🔬 坦诚的部分——投入生产前必读 我们不会过度推销。摘自我们自己的[审计报告](./docs/AUDIT.md): - ❌ **未获得任何监管框架的认证。**合规模块发出的是*信号*,而非法律分类。必须由合格的负责人员确认适用范围。 - ❌ **尚无 SOC 2、无渗透测试、无客户参考。**按设计处于预客户阶段——开源优先。完整的路线图(已实施的控制、仍需添加的控制、切合实际的 Type I / Type II 日期、如果你现在就是受监管的买家该怎么办)在 [`docs/SOC2_ROADMAP.md`](./docs/SOC2_ROADMAP.md) 中。简而言之:审计员检查的大多数*技术*控制已在交付(RBAC、静态加密、HMAC 签名决策、防篡改审计日志、多窗口异常)。缺少的是审计约定本身 + 政策文书 + 观察期。如果有客户需要,大约需要 3 至 6 万美元及 6 至 9 个月时间。 - ❌ **并非“优于 Lakera / Nightfall”。**我们从未进行过正面比较。他们拥有我们没有的 ML 训练模型。我们的形态不同——MCP 原生、确定性、完全开源。 - ✅ **真实情况是:**引擎快速、经过良好测试、带签名、模块化,并在 ~2–3 ms p95 的延迟下运行端到端的 MCP 决策管道——远低于 50 ms 的 SLO。污点追踪器 + 能力 token 对 MCP 来说是真正的创新。 如果你是受监管的买家——银行、医院、学校——在部署前请与我们联系。我们会坦诚相待哪些已准备就绪,哪些尚未就绪。 ## 🆚 横向对比 ### 各产品在技术栈中的定位 | 产品 | 形态 | 驻留位置 | |---|---|---| | **JAK Shield** | 开源 MCP server(或 sidecar)| 智能体与其调用的*工具*之间 | | **Anthropic native approvals** | 内置于 Claude Desktop / Claude Code | Claude 与用户之间,当工具请求运行时 | | **Lakera Guard** | 托管 API、SDK + REST | 应用与 *LLM* 之间,或应用与用户输入之间 | | **Nightfall AI** | 托管 API + SaaS 连接器 | 数据源(Slack、Drive)与网络之间 | | **Cloudflare AI Gateway** | HTTP 代理 | 应用与 *LLM 提供商*之间 | | **NeMo Guardrails**(NVIDIA,开源)| Python 框架 | 链路与 LLM 调用之间,通过 Colang 编程 | | **Guardrails AI**(开源)| Python 验证器 | LLM 输出与应用之间,声明式检查 | | **Promptfoo**(开源)| CLI + 评估框架 | 开发时,而非运行时——用于测试 prompt/防护 | ### 能力矩阵 | | JAK Shield | Anthropic approvals | Lakera Guard | Nightfall | Cloudflare AI Gateway | NeMo Guardrails | Guardrails AI | |---|---|---|---|---|---|---|---| | 作为 MCP server 提供 | ✅ stdio + HTTP | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | | 开源 (MIT/Apache) | ✅ MIT | 部分(仅 SDK)| ❌ | ❌ | ❌ | ✅ Apache | ✅ Apache | | 确定性策略引擎 | ✅ TS 规则 | 极少(settings.json 中的允许列表)| ❌ ML 优先 | ❌ ML 优先 | 部分 | ✅ Colang DSL | ✅ 声明式验证器 | | Prompt 注入检测 | ✅ 6 个阶段、13+ 种非英语语言、防 ReDoS | ❌ | ✅ ML 模型 | 部分 (2024+) | 部分 | ✅ 通过 LLM judge | 部分通过集成 | | PII 检测 | ✅ 28 种类型 + 加密校验和 | ❌ | ✅ ML | ✅ ML(核心产品)| ❌ | 部分通过插件 | 部分通过验证器 | | 跨调用污点追踪 | ✅ MinHash + n-gram *(MCP 首创)* | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | | 多步攻击链检测 | ✅ 20 种模式 + 数据流 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | | 行为异常 (EWMA + z-score) | ✅ 每个租户 + 每个智能体 | ❌ | ❌ | ❌ | 部分 | ❌ | ❌ | | **拦截覆盖 + 加强审查** *(v0.2)* | ✅ 一次性规则 | ❌ 二元 allow/deny | ❌ | ❌ | ❌ | ❌ | ❌ | | **用户控制的暂停 + 自动恢复** *(v0.3)* | ✅ 限定范围、有时间边界,CRITICAL 仍触发 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | | 限定范围的能力 token | ✅ HMAC JWT,一次性,参数绑定 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | | 防篡改(HMAC + 密钥轮换)| ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | | 决策溯源 / 证据树 | ✅ 每阶段结构化 | ❌ | 部分(返回原因)| 部分 | ❌ | ✅ 通过追踪 | 部分 | | 带引用的监管提示 | ✅ PCI / HIPAA / GDPR / SOX / FERPA / DPDP / CCPA + 免责声明 | ❌ | ❌ | ✅(法律模式 UX)| ❌ | ❌ | ❌ | | 自托管运行时 | ✅ 进程内 stdio 或 HTTP | ✅ Claude Desktop 本地 | ❌ 托管 | ❌ 托管 | ❌ 托管 | ✅ | ✅ | | 仓库内包含对抗性基准测试 | ✅ 45 个场景,45/45 | ❌ | ❌(私有语料库)| ❌ | ❌ | 部分(示例测试)| 部分(验证器示例)| | 仓库内包含端到端 p95 延迟 | ✅ ~2.3 ms (`bench/perf-bench.mjs`) | 不适用 | 未知——典型 ML 推理 50–200 ms | 未知 | 取决于网络 | 取决于 LLM judge | 因验证器而异 | | SOC 2 / 渗透测试报告 | ❌ 预客户阶段([路线图](./docs/SOC2_ROADMAP.md))| ✅(Anthropic 公司)| ✅ | ✅ | ✅ | ❌ | ❌ | | 客户参考 Logo | ❌ 暂无 | 不适用 | ✅ | ✅ | ✅ | 部分 | 部分 | | 预构建的 MCP 连接器(Gmail、Postgres、shell 等)| ✅ 14 个 | ❌ 用户自行连接 | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ = 已具备并交付 · partial = 存在但比对比列窄 · ❌ = 截至撰写时在当前公开文档中不存在 ### 选择适合的工具 这些产品并不互斥——许多团队会同时使用其中两个。以此作为起点,而非绝对准则: - **JAK Shield** 适用于**威胁在于工具调用本身**的情况——破坏性 SQL、意外将邮件发送给错误的收件人、智能体刚刚被网页注入了 prompt 正准备将你的客户列表发送给 `attacker@evil.com`。如果你运行的智能体会触及真实系统(Gmail、Postgres、GitHub、shell、浏览器、支付),并且你想要一个确定性的、带签名的、自托管且具备完整审计追踪和人工干预覆盖能力的网关,这就是你需要的形态。 - **Anthropic native approvals** 适用于**你只使用 Claude Desktop / Claude Code、你信任用户会阅读每一个审批提示、并且你的影响范围仅限于你自己的笔记本电脑**的情况。它是免费的、内置的,对许多个人用途来说已经足够。如果你开始需要每个租户的策略、超出桌面日志的审计,或者任何多用户场景——那你就不再适合用它了。 - **Lakera Guard** 适用于**威胁在于 LLM 的输入/输出,而非工具边界**的情况——聊天机器人、面向客户的助手、大规模内容审核。他们拥有能捕捉正则表达式无法处理的细微差别的 ML 训练的注入和 PII 模型。如果你正在构建聊天机器人而不是智能体,请在 JAK Shield 之前考虑 Lakera。 - **Nightfall AI** 适用于**威胁在于数据离开受监管系统**的情况——SaaS 连接器(Slack、Drive、Confluence)、邮件 DLP、受监管行业的合规性。云 DLP 是他们的核心竞争力。如果你的任务是“阻止 PII 从 Slack 流出”,首选 Nightfall。 - **Cloudflare AI Gateway** 适用于**你想要在你的应用与 OpenAI/Anthropic 之间进行速率限制、缓存和可观察性**的情况——它是一个 LLM 网关,而不是安全网关。问题领域不同。 - **NeMo Guardrails** 适用于**你希望在链中使用可编程的 Colang DSL 进行对话护栏**的情况。开源、NVIDIA 支持且成熟。如果你正在使用 Python 和 NeMo 的其他模型,它可以无缝集成。 - **Guardrails AI** 适用于**你想要声明式 LLM 输出验证器**的情况:“此输出必须符合此 Pydantic schema,不包含 PII,长度 < 200 token。”形态不同——输出端、LLM 之后、应用之前。 - **Promptfoo** 适用于**构建时而非运行时**——根据攻击语料库评估你的 prompt 和防护。与 JAK Shield 搭配使用:使用 Promptfoo 测试 JAK Shield 的规则。 ### JAK Shield 独一无二的选择场景 截至撰写时,JAK Shield 有七项功能是我在上述任何产品中都没有找到的(如果你找到了,请提一个 issue——这个表格更新得很快): 1. **使用 MinHash + n-gram 指纹的跨调用污点追踪。**来自 `browser.fetch` 的不可信字节流入了 `gmail.send_email`,而 JAK Shield 会注意到。我找不到其他任何 MCP 层面的防护能做到这一点。 2. **20 种带有数据流增强的多步攻击链模式。**跨最近工具调用的序列检测——“侦察 → 渗透”、“凭据窃取 → 外部发送”等——并将上一次调用的输出子字符串作为升级信号。 3. **带有加强审查窗口的拦截覆盖。**硬拦截 / 软拦截 / 审批是不够的。v0.2 新增:可覆盖的拦截显示内容 + 原因 + 最坏情况;CRITICAL 保持不可覆盖;接受覆盖会在接下来的 5-10 次调用中收紧阈值;窗口期间的后续拦截适用一次性规则。 4. **带有退出时强制审查的用户控制暂停与自动恢复。** *(v0.3,新增。)* 用户可以暂停非 CRITICAL 拦截 1-60 分钟——用于迁移、调试、已知安全窗口——但即使在暂停期间 CRITICAL 规则仍然生效,暂停会自动过期(没有“无限期关闭”),并且在暂停结束时会话会进入加强审查。暂停本身会被记入审计日志,窗口内每个被抑制的拦截也会被记录。 5. **带有密钥轮换和防篡改规范形式的 HMAC 签名决策。**每个决策都经过签名;在签名后翻转 `override.overridable` 会使 HMAC 失效(这已通过测试)。 6. **绑定到(租户、工具、参数哈希)的一次性能力 token。**在审批后生成的短期 JWT;被截获的 token 无法被重放。 7. **带有引用的监管提示 + 在每个决策上内联显示明确的“非法律建议”免责声明。**大多数产品要么什么都不说,要么声称已获认证。这是诚实的中间立场。 ## 🧰 MCP 工具箱 JAK Shield 向任何 MCP 客户端暴露 **26 个 `shield.*` 安全工具** + **14 个受保护的连接器**(可通过 `grep -c "name: 'shield\\." packages/mcp-server/src/shield-tools.ts` 验证):
Shield 工具(点击展开) | 工具 | 用途 | |---|---| | `shield.evaluate_tool_call` | 仅进行策略决策——不执行 | | `shield.proxy_tool_call` | 决策 + 通过连接器执行 | | `shield.explain_decision` | 完整的证据树 + 签名 + 合规提示 | | `shield.scan_input` / `shield.scan_input_v2` | 纵深防御扫描 | | `shield.scan_output` | 将工具输出标记为不可信 | | `shield.redact_sensitive_data` | PII / 密钥脱敏 | | `shield.detect_prompt_injection` | 6 阶段检测器 | | `shield.require_approval` / `check_approval` / `list_pending_approvals` | 审批队列 | | `shield.issue_capability_token` / `verify_capability_token` | 一次性限定范围 JWT | | `shield.taint_snapshot` | 检查会话中的污点输出 | | `shield.anomaly_snapshot` | 每个工具的基线计数器 | | `shield.compliance_tag` | 监管框架提示 | | `shield.audit_event` | 自定义审计条目 | | `shield.block_action` | 自愿拦截 + 审计 | | `shield.rewrite_safe_action` | 建议更安全的重写 | | `shield.list_protected_tools` | 列举连接器 | | `shield.override_block` *(v0.2)* | 接可覆盖拦截的风险 → 生成一次性覆盖 token + 开启审查窗口 | | `shield.scrutiny_status` *(v0.2)* | 检查当前会话的加强审查状态——剩余调用次数、累积警告 | | `shield.stand_down` *(v0.2)* | 提前结束加强审查窗口(在覆盖任务完成后)| | `shield.pause` *(v0.3)* | 在限定窗口内(1-60 分钟,默认 15 分钟)暂停 JAK Shield。抑制 NON-CRITICAL 拦截;CRITICAL 规则仍触发。要求理由至少 20 个字符。记入审计日志。 | | `shield.resume` *(v0.3)* | 提前结束活动的暂停。在接下来的 10 次调用中触发加强审查。 | | `shield.pause_status` *(v0.3)* | 检查活动的暂停状态——范围、剩余时间、在暂停期间观察到的调用。 |
受保护的连接器(点击展开) 文件系统(沙箱化) · Shell(白名单控制) · Gmail · GitHub · Supabase · Postgres · 浏览器 fetch · HTTP fetch / POST · Slack · SMS (Twilio) · Google Drive · 出站 webhook · 社交草稿 + 带审批的发布。
## 🤝 社区 JAK Shield 是完全公开构建的。来帮助塑造 AI 智能体安全的未来吧。 - 💬 **[GitHub Discussions](https://github.com/inbharatai/jak-shield/discussions)** — 主要聊天渠道;在任何帖子中标记维护者 - 🐦 **[X / Twitter — @reetur_aj](https://twitter.com/reetur_aj)** — 发布新闻、威胁研究、公开构建话题 - 💼 **[LinkedIn — reetur-aj](https://www.linkedin.com/in/reetur-aj)** — 面向安全买家、CISO 及采用洽谈 - 🟧 **[Reddit — u/reetur_aj](https://reddit.com/user/reetur_aj)** — 长文 + 社区讨论 - 🎮 **Discord — `reetur_aj`** — 直接私信维护者(尚无公共服务器;在 [Discussions](https://github.com/inbharatai/jak-shield/discussions) 中呼叫以便在推出时被添加) - 📷 **[Instagram — @unigurus](https://instagram.com/unigurus)** — 幕后花絮 + 设计预览 - 📨 **[info@inbharat.ai](mailto:info@inbharat.ai)** — 设计合作伙伴、企业版及负责任的漏洞披露报告([SECURITY.md](./SECURITY.md)) - 📖 **[发布说明](https://github.com/inbharatai/jak-shield/discussions/categories/announcements)** — 工程博文 + 版本发布 ### #️⃣ 标签 分享时,请使用: **主题:** `#MCP` `#AISafety` `#AIagents` `#LLMSecurity` `#PromptInjection` `#AgentSecurity` `#AIFirewall` `#AIGuardrails` **产品:** `#JAKShield` `#OpenSourceSecurity` `#DLP` `#ZeroTrustAI` **社区:** `#ClaudeAI` `#OpenAI` `#Cursor` `#BuildInPublic` `#OpenSource` `#Cybersecurity` `#AppSec` `#DevSecOps` ## 🛠️ 贡献 我们非常欢迎各种贡献。请阅读 [`CONTRIBUTING.md`](./CONTRIBUTING.md) 并挑选带有 `good first issue` 或 `help wanted` 标签的 issue。 **最期望的贡献:** | 领域 | 所需技能 | 奖励 | |---|---|---| | 🌐 注入检测的新语言 | 正则表达式 + 母语者 | 记录在 [`HALL_OF_FAME.md`](./HALL_OF_FAME.md) | | 🩺 带有校验和验证器的新 PII 类型 | 数学 + 正则表达式 | 同上 | | 🔌 新的受保护连接器(任何 API)| TypeScript | 同上 | | 🎯 新的对抗性基准测试场景 | 创造力 | 同上 | | 🧪 变异测试配置 | Stryker / 类似工具 | 赏金(见 Discord)| | 🤖 微调的注入分类器 | ML + 开放语料库 | 赏金 + 论文共同作者 | | 📊 公开的与 Lakera / Nightfall 的正面基准对比 | 研究 | 赏金 + 博客共同作者 | ## 🗺️ 路线图 - [x] **2026 年 Q1 — 阶段 1:**MCP 安全核心 + 确定性策略引擎 - [x] **2026 年 Q1 — 阶段 2:**13 个受保护的连接器 + 仪表盘 - [x] **2026 年 Q1 — 阶段 3:**多租户 SaaS 基础(认证 · API 密钥 · 计费) - [x] **2026 年 Q1 — 阶段 3b:**v2 检测器 · 污点追踪 · 攻击链 · 异常检测 · 能力 token - [x] **2026 年 Q2 — 阶段 4a:**v0.2 —— 拦截覆盖 + 加强审查、签名的覆盖字段 - [ ] **2026 年 Q2 — 阶段 4b:**OAuth / SSO · 公开的正面基准测试 - [ ] **2026 年 Q3 — 阶段 4c:**SOC 2 Type I(约定取决于首位受监管客户——见 [`docs/SOC2_ROADMAP.md`](./docs/SOC2_ROADMAP.md)) - [ ] **2026 年 Q2 — 阶段 5:**ML 训练的注入分类器 · 基于嵌入的污点相似度 - [ ] **2026 年 Q3 — 阶段 6:**托管 SaaS GA · 企业试点 · 合规认证 - [ ] **2026 年以后:**ISO 27001 · HIPAA BAA · FedRAMP · 行业策略包 使用 [`roadmap`](../../labels/roadmap) 标签追踪相关 issues。 ## 💖 赞助商 JAK Shield 是免费且开源的。如果你的公司从中受益,请考虑[赞助](https://github.com/sponsors/inbharatai)以资助: - 独立的安全审计(下一次:2026 年下半年) - 在已标注的注入语料库上训练 ML 分类器 - 公开的基准测试方法 + 排行榜 - 漏洞赏金池 ## 📚 文档 - [`docs/ARCHITECTURE.md`](./docs/ARCHITECTURE.md) —— 引擎端到端架构 - [`docs/DEPLOYMENT.md`](./docs/DEPLOYMENT.md) —— Render · Fly · Vercel · Docker · k8s 部署 - [`docs/AUDIT.md`](./docs/AUDIT.md) —— 对每一项声明的坦诚自审计 - [`docs/QUICKSTART.md`](./docs/QUICKSTART.md) —— 5 分钟演练 - [`configs/mcp/`](./configs/mcp) —— 每个客户端的即用型配置 - [`bench/scenarios.json`](./bench/scenarios.json) —— 45 个场景的对抗性语料库 ## 📜 许可证 [MIT](./LICENSE) — 版权所有 (c) 2026 JAK Shield 贡献者 ## 🙏 致谢 JAK Shield 的 PII 模式 + RBAC 原语取材于 [JAK Swarm](https://github.com/inbharatai/jak-swarm) 项目。MCP 线协议来自 [Anthropic 的规范](https://modelcontextprotocol.io)。基准测试方法受到了 [Lakera 研究博客](https://www.lakera.ai/blog) 的启发。
**公开构建 · MCP 原生 · 每次决策耗时不到 1 毫秒** 如果 JAK Shield 拯救了你的智能体免于做出愚蠢的举动,请[⭐ 为本仓库加星](../../)。 `#MCP` · `#AISafety` · `#PromptInjection` · `#AgentSecurity` · `#OpenSource` · `#BuildInPublic`
标签:AI代理防护, AI基础设施安全, AI安全网关, AI工具调用安全, CISA项目, Claude, CrewAI, Cursor, CVE检测, DLP, JSONLines, LangChain, LLM防火墙, MCP-native, MCP网关, MITM代理, Model Context Protocol, Naabu, OpenAI, PII脱敏, RAG安全, Red Canary, VS Code, 个人信息保护, 人机协同审批, 代码安全, 内存规避, 内容安全, 加密校验, 大模型安全, 安全合规, 对抗性基准测试, 提示词注入检测, 权限控制, 漏洞枚举, 确定性策略引擎, 网关安全, 网络代理, 网络安全, 自动化攻击, 请求拦截, 跨调用污点追踪, 轻量级, 防御绕过拦截, 防破坏机制, 隐私保护, 零信任, 零日漏洞检测