thearjunl/airlock

GitHub: thearjunl/airlock

AirLock 是一款 AI API 安全代理,用于检测和隔离间接提示注入和受污染的 RAG 负载。

Stars: 0 | Forks: 0

# AirLock 🔒 **AI API 安全代理** — 一个位于 LLM API 前端的反向代理,在将请求转发到上游之前,通过多层安全管道检查每个请求。 ## 架构 ``` Client → AirLock Proxy (:8080) → Security Pipeline → Upstream API ``` ### 组件 | 包名 | 描述 | |---------|-------------| | `proxy/` | 使用 `net/http/httputil` 的反向代理 HTTP 服务器 | | `scanner/` | 第 1 层 — 基于模式的快速安全扫描 | | `sandbox/` | 第 2 层 — 带有风险评分的深度启发式分析 | ## 功能 - 🔄 **反向代理** — 透明地将请求转发到上游 LLM API - 🛡️ **直接注入检测** — 捕获 35+ 已知的提示注入模式 - 🧪 **间接注入检测** — 检测隐藏在 RAG/tool 数据中的注入 - 🔒 **上下文沙箱** — 将不受信任的外部数据包装在安全边界内 - 📊 **风险评分** — 基于启发式风险评估,具有可配置的阈值 - 📋 **威胁事件日志** — 内存中的事件日志,在 `/airlock/events` 提供统计信息 - 🧬 **混淆检测** — 标记编码/混淆的内容 - 💚 **健康端点** — 内置的健康检查在 `/airlock/health` - 🌐 **CORS 支持** — 可配置的跨源资源共享 - 🔔 **Webhook 警报** — 在 HIGH 严重程度的阻止事件上通知 Slack 或任何 HTTP 端点 ## 快速开始 ### 先决条件 - Go 1.21+ ### 运行 ``` # 默认上游(https://api.openai.com) go run ./proxy/ # 自定义上游 UPSTREAM=http://localhost:11434 go run ./proxy/ ``` ### 健康检查 ``` curl http://localhost:8080/airlock/health # {"状态":"ok","版本":"0.1.0"} ``` ### 威胁事件 ``` curl http://localhost:8080/airlock/events # {"事件":[...], "统计":{"总数":5,"被阻止":3,"L1 命中":2,"L2 命中":3,"高":3,"中":2}} ``` ### 测试一个请求 ``` curl -X POST http://localhost:8080/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer sk-your-key" \ -d '{ "model": "gpt-4", "messages": [{"role": "user", "content": "Hello!"}] }' ``` ## 安全管道 ### 第 1 层 — 直接注入扫描器 (`scanner/layer1.go`) 快速、不区分大小写的子字符串匹配,针对 35+ 模式: - ✅ 指令覆盖尝试 - ✅ 非法越狱 / DAN 模式 - ✅ 系统提示提取尝试 - ✅ 角色劫持模式 - ✅ Token/delimiter 注入 - ✅ 多语言模式(法语,西班牙语) ### 第 2 层 — 上下文沙箱 (`sandbox/sandbox.go`) RAG 意识的间接注入检测 + 数据沙箱: - ✅ 14 个 RAG 触发短语检测 - ✅ 13 个间接注入信号模式 - ✅ 分隔符转义(AIRLOCK 标签,``,`<|im_end|>` 等) - ✅ 使用策略指令的安全边界包装 - ✅ 防御深度(即使没有注入信号也总是沙箱) ### 第 3 层 — 启发式分析 (`sandbox/sandbox.go`) 深度结构分析: - ✅ 可疑角色模式检测 - ✅ 编码/混淆内容检测 - ✅ JSON 嵌套深度分析 - ✅ Token 计数估计 - ✅ 复合风险评分(阈值:0.7) ## 配置 | 环境变量 | 默认 | 描述 | |---------------------|---------|-------------| | `UPSTREAM` | `https://api.openai.com` | 上游 API URL | | `BLOCK_INDIRECT` | `false` | 硬阻止间接注入检测 | | `WEBHOOK_URL` | _(空 — 禁用)_ | 在 HIGH 严重程度的阻止事件上 POST 警报负载的 URL | | `AIRLOCK_ENV` | `production` | 包含在 webhook 负载中的环境标签 | ## 许可证 MIT 许可证 — 有关详细信息,请参阅 [LICENSE](LICENSE)。
标签:AI API 安全, AMSI绕过, Go 语言, LLM 安全, Webhook 通知, 事件日志, 健康检查, 威胁检测, 安全扫描, 日志审计, 时序注入, 沙箱技术, 深度分析, 编码检测, 请求检测, 跨域资源共享, 防火墙, 风险评分