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 通知, 事件日志, 健康检查, 威胁检测, 安全扫描, 日志审计, 时序注入, 沙箱技术, 深度分析, 编码检测, 请求检测, 跨域资源共享, 防火墙, 风险评分