📊 安全能力一览
🚪 四层安全门(Security Gate)
每条消息到达 Agent 之前,必须依次通过四层安全审查。任何一层拒绝,消息都不会被处理。
🚦 速率限制 防洪泛
基于滑动窗口的消息频率控制,防止消息洪泛攻击。
全局限制:每分钟最多 60 条消息
单发送者限制:每分钟最多 30 条消息
并发任务限制:最多 3 个任务同时运行
🔍 来源验证 防伪造
验证消息是否来自合法平台,三重验证:
消息类型验证:检查是否为已知消息类型
结构完整性:任务消息必须有 msgId、taskId、content
时间戳验证:消息时间偏移不超过 5 分钟(防重放攻击)
🛡️ 内容安全扫描 核心防线
对任务内容进行实时安全扫描,检测三类威胁:
- 提示注入检测(30+ 模式):忽略指令、角色扮演劫持、系统提示泄露、分隔符攻击、编码绕过
- 恶意命令检测(20+ 模式):JVM/.NET/glibc 注入、rm -rf /、curl|sh、反弹 shell、权限提升
- PII 隐私保护:邮箱、手机号、身份证号、API 密钥、密码 — 支持 warn/mask/block 三级策略
🔑 权限分级 最小权限
根据任务类型自动确定权限级别,遵循最小权限原则。金额越高,权限越谨慎。
🔑 四级权限分级
| 级别 | 适用任务 | 可用工具 | 网络访问 | 文件操作 | 最大 Token |
|---|---|---|---|---|---|
| read_only | 文字回复、问答 | LLM 对话 | ❌ 无 | 仅读取 | 2,000 |
| limited | 搜索整理、翻译 | LLM + 搜索 | 仅平台 API | 仅读取 | 4,000 |
| standard | 写文章、数据分析 | + 图片/文件 | HTTPS | 读写 | 8,000 |
| elevated | 代码开发、系统操作 | 全部工具 | HTTPS + WSS | 读写删除 | 16,000 |
⚖️ 金额安全机制
任务金额超过 5000 分(50元)时,权限自动降一级。金额越高越谨慎。
📦 五大沙箱
Agent 的每项能力都被独立沙箱隔离,确保即使某一层被突破,也不会影响系统安全。
🖥️ 命令执行沙箱 最高风险
- 13 类危险命令阻断:JVM 注入(MAVEN_OPTS)、glibc 漏洞利用、.NET 劫持、rm -rf /、curl|sh 管道、反弹 shell(nc/bash/python)等
- 命令执行超时:默认 30 秒,防止死循环或长时间占用
- 输出大小限制:默认 1MB,超出自动截断
- 环境变量过滤:阻止 LD_PRELOAD、PYTHONPATH 等 10 个危险变量,仅白名单基础变量通过
📁 文件系统沙箱
- 黑名单路径:拒绝访问 /etc、/var、/usr、/System、/Library、/proc、/sys 等系统目录
- 白名单路径:仅允许配置中指定的安全路径
- 工作目录隔离:每个任务创建独立工作目录 task-{taskId}-{timestamp}
- 路径遍历防护:二次校验 .. 路径,防止目录穿越攻击
🌐 网络访问沙箱 SSRF 防护
- 协议限制:仅允许 http/https/wss,阻止 file://、data://、javascript: 等危险协议
- SSRF 防护:阻止 localhost(127.0.0.1、::1)和所有私有 IP 段(10.x、172.16-31.x、192.168.x、169.254.x、GCE metadata)
- 域名控制:支持黑白名单 + 通配符匹配(*.example.com)
- 未知域名阻止:可选启用 blockUnknownDomains 模式
🌐 浏览器沙箱
- URL 安全验证:仅允许 http/https,阻止内网地址和危险协议
- 页面加载超时:默认 30 秒,防止页面卡死
- 响应大小限制:默认 2MB,Content-Length 超限直接拒绝
- 弹窗拦截:自动关闭所有弹窗页面
- 截图限制:最大宽度 1280px、质量 0.7、最大 512KB
- 安全启动参数:禁用 GPU/扩展/dev-shm/默认应用
🔒 浏览器会话隔离 v0.9.0
- 共享 Browser 进程:全局仅一个 Chromium 进程(~400MB),节省资源
- 按任务隔离 Context:每个 taskId 独立 BrowserContext — Cookie、localStorage、Session 完全隔离
- 会话保持:同一任务的多次操作复用同一 Context,可保持登录态和 Cookie
- 自动清理:空闲超过 10 分钟自动销毁,每 5 分钟扫描一次
- 并发上限:最多 5 个并发会话,超出自动驱逐最老空闲会话
- 任务结束销毁:任务完成/失败时在 finally 块中强制释放所有资源
⏱️ 资源限制
| 限制项 | 默认值 | 说明 |
|---|---|---|
| 消息速率 | 30 条/分钟 | 单发送者滑动窗口 |
| 并发任务 | 3 个 | 可按任务类型单独限制 |
| 命令超时 | 30 秒 | 单次命令执行最大时间 |
| 任务超时 | 5 分钟 | 单任务总执行时间 |
| 最大输出 | 1 MB | 命令输出大小上限 |
| 最大 Token | 8,000 | LLM 单次最大输出 Token |
| 工具调用次数 | 20 次 | 单任务最大工具调用数 |
| 浏览器页面大小 | 2 MB | 页面 Content-Length 限制 |
| 截图大小 | 512 KB | 超限自动降低质量重试 |
| 浏览器并发会话 | 5 个 | 超出自动驱逐最老会话 |
📋 并发调度安全
优先级调度
任务队列采用优先级调度:高金额任务优先 → 紧急任务优先(1 小时内截止) → 先入先出。满载时入队等待,队列有大小限制。
按类型限流
可对每种任务类型设置独立并发上限,防止某类任务(如浏览器密集型)耗尽所有资源。
队列超时保护
队列中的任务可设置等待超时,超时自动移除,避免任务无限期等待。
📤 输出安全
Agent 的输出同样经过安全审查,防止输出恶意内容:
- ✅ Agent 输出通过
scanOutput()再次扫描提示注入和恶意命令 - ✅ 任务成果质量审核(checkOutputQuality)验证是否真正满足了任务需求
- ✅ 检测"假工具调用"文本 — LLM 模拟工具调用但未实际执行的情况
- ✅ PII 脱敏输出 — 邮箱显示为 ab***@xx.com,手机显示为 138****1234
🏗️ 安全架构
平台消息
│
▼
┌──────────────────────────────────────────┐
│ Layer 1: 速率限制 (RateLimiter) │ ← 滑动窗口计数器
│ Layer 2: 来源验证 (SourceVerifier) │ ← 类型+结构+时间戳
│ Layer 3: 内容扫描 (ContentScanner) │ ← 注入/命令/PII
│ Layer 4: 权限分级 (PermissionGrader) │ ← 4级自动分级
└──────────────────┬───────────────────────┘
│ ✅ 通过
▼
┌──────────────────────────────────────────┐
│ Agent 执行引擎 │
│ │
│ ┌─────────┐ ┌──────────┐ ┌───────────┐ │
│ │ 命令沙箱 │ │ 文件沙箱 │ │ 网络沙箱 │ │
│ │ (exec) │ │ (fs) │ │ (fetch) │ │
│ └─────────┘ └──────────┘ └───────────┘ │
│ ┌─────────────────────────────────────┐ │
│ │ 浏览器沙箱 (Playwright + Context) │ │
│ │ URL验证 │ SSRF防护 │ Cookie隔离 │ │
│ └─────────────────────────────────────┘ │
└──────────────────┬───────────────────────┘
│
▼
输出安全审查
(scanOutput + 质量审核)