AI Agent上线的4个坑和4道防线

发布时间:2026/7/29 0:27:56
AI Agent上线的4个坑和4道防线 2026年7月AI安全事件扎堆出现。Claude Cowork智能体被曝可以读写Mac上任意的文件影响大概50万用户。同一个月有AI助手被用户诱导着删掉了本地的关键工作文件。OpenClaw的交易智能体因为提示词注入被人用话术骗走了价值25万美元的加密货币。还有一个开发者部署了AI助手只做文档处理一天干掉了5000万Token。这些事放在一起看结论很清楚AI安全已经不是合规部门的事是每个写AI应用的人都要盯住的工程问题。下面把AI Agent相关的4个坑和4道防线整理出来。每条防线都配了可以直接用的代码或配置。4个坑第一个坑权限给得太宽。Agent能干复杂任务是因为你给了它高权限。但权限给出去之后它分不清该做什么和能做什么。给它读邮件的权限它能被诱导去读别的目录。第二个坑提示词和用户输入混在一起。系统指令和用户输入都拼在prompt里LLM分不清哪个是规则、哪个是用户说的话。用巧妙的话术绕开角色约束比想象中容易。第三个坑用了来源不明的东西。第三方开源模型、社区技能包、NPM包——你不知道里面有没有夹带私货。ClawHub被审计出341个恶意技能包。第四个坑没有配额和监控。没有单用户上限、没有异常检测、没有硬封顶一个攻击或死循环就能让账单翻几十倍。4道防线防线一权限收窄一个任务只给完成它需要的最小权限。任务跑完就收回。LangChain配置示例agent.yamlyamlagent:name: “doc_reader”permissions:filesystem: - path: /workspace/documents/* access: readonly network: allowed_domains: - api.internal.comauto_revoke: truerevoke_after_seconds: 300OpenAI Assistants配置示例创建Assistant时指定pythonassistant client.beta.assistants.create(nameDoc Reader, modelgpt-4o, tools[{type: file_search}], tool_resources{ file_search: { vector_store_ids: [vs_xxx] } })关键限制可访问的文件ID列表而非整个向量存储自建Agent用容器隔离docker runbashdocker run-v /workspace/documents:/data:ro \ # 只读挂载–read-only \ # 容器根文件系统只读–cap-dropALL \ # 移除所有能力–security-optno-new-privileges \ # 禁止提权my-agent:latest防线二输入输出过滤AI调用前过滤输入AI返回后过滤输出。输入过滤Python可直接复制pythonimport reINJECTION_PATTERNS [r(?i)ignore\s*(all\s*)?(previous|prior).*instructions, r(?i)system\s*(role|prompt|instruction).*override, r(?i)from\s*now\s*on.*(you are|act as), r(?i)new\s*(instruction|rule|task).*follow, r【系统】|【新指令】, # 中文变种]def detect_injection(user_input: str) - bool:for pattern in INJECTION_PATTERNS: if re.search(pattern, user_input): return True return False调用AI之前if detect_injection(user_input):return {error: 检测到可疑输入已拦截}response call_llm(user_input)输出过滤Agent执行命令前检查pythonDANGEROUS_COMMANDS [rrm\s-rf\s/, rchmod\s777\s, reval\s*\(, rexec\s*\(, rsystem\s*\(, ros\.system, rsubprocess\.(call|Popen|run),]def check_output_safety(output: str) - bool:for pattern in DANGEROUS_COMMANDS: if re.search(pattern, output): return False return TrueAgent要执行命令之前if not check_output_safety(command_to_execute):raise Exception(检测到危险命令已阻止执行)防线三高风险操作二次确认删除文件、发起退款、修改数据库——AI不能直接执行。确认流程伪代码pythondef execute_with_confirmation(action, risk_description):# 1. AI判断该做 if ai.decides_to_execute(action): # 2. 弹确认框 user_confirmed show_confirmation_dialog( titleAI请求执行高风险操作, messagefAI建议执行{action}, riskrisk_description, confirm_button确认执行, # 小、灰 cancel_button取消, # 大、亮 require_typingTrue # 让用户输入确认执行四个字 ) # 3. 用户确认才执行 if user_confirmed: return execute(action) else: return {status: cancelled}关键设计取消按钮比确认更醒目让用户手动输入确认执行四个字防止疲劳点击记录每次确认/取消的审计日志防线四配额、告警、硬封顶三层防护缺一不可。配额配置OpenAI风格APIpython在调用代码中主动限制class RateLimiter:def __init__(self, rpm_limit100, monthly_limit1000000): self.rpm_limit rpm_limit self.monthly_limit monthly_limit self.current_month_usage 0def can_call(self, user_id):检查月度配额 usage get_usage(user_id) if usage self.monthly_limit: raise Exception(月度配额已用完) # 检查RPM if get_rpm(user_id) self.rpm_limit: raise Exception(超过每分钟调用限制) return True告警规则Prometheus AlertManageryamlgroups:name: ai_usage_alertsrules:alert: AIUsageSpikeexpr: rate(ai_calls_total[1h]) rate(ai_calls_total[24h]) * 10annotations:summary: “{{ $labels.user }} 调用量突增10倍”alert: AICostApproachingLimitexpr: ai_cost_total 500 # 美元annotations:summary: “本月AI费用已超$500”硬封顶平台侧配置大多数AI API平台支持设置硬上限python在代码层面兜底def call_llm_with_guardrail(request):try: response client.chat.completions.create(**request) return response except Exception as e: # 如果连续失败触发熔断 if get_error_rate() 0.3: # 30%错误率 send_alert(AI服务错误率过高触发熔断) raise CircuitBreakerOpen()今天就能开始的三件小事第一找到Agent的权限配置把/*改成具体目录。第二把上面的INJECTION_PATTERNS列表复制到代码里加在调用AI之前。第三检查有没有月度配额限制。没有的话在代码里加一个计数。如果你也在折腾AI Agent相关的安全实践欢迎随时交流。