AI Agent 接入安全系统前,先检查这 5 个数据泄露风险
AI Agent 接入安全系统前,先检查这 5 个数据泄露风险
上周帮一个甲方做安全评估,他们搞了个挺时髦的架构——用 AI Agent 自动化 SIEM 告警分析。Agent 接入了 ELK、威胁情报平台、工单系统,号称"7×24小时自动研判"。
听起来很美对吧?
我上去一看日志,冷汗下来了。Agent 在调用威胁情报 API 时,把内部 IP 段、资产拓扑、甚至漏洞扫描结果一股脑打包发给了第三方 LLM 接口。客户的内网架构,就这么明晃晃地躺在某个 API 日志里。
这不是个例。最近三个月,我接触的 AI Agent 安全项目里,超过 60% 存在不同程度的数据泄露风险。而且大部分不是被攻击者搞出来的,是开发者自己埋的坑。
风险一:Prompt 里的"隐形炸弹"
AI Agent 的核心是 Prompt。但很多开发者写 Prompt 的时候,恨不得把所有上下文都塞进去——资产清单、漏洞库、历史告警、甚至管理员的操作习惯。
我见过一个 Agent 的系统 Prompt,直接硬编码了内网段:
SYSTEM_PROMPT = """
你是一个安全运维助手。当前内网网段:
- 办公网:10.10.0.0/16
- 服务器区:172.16.0.0/12
- 核心数据库:192.168.100.0/24 (仅限SSH访问)
管理员账号:admin,密码哈希存放在 /etc/shadow
"""
这段 Prompt 会随着每次 API 调用发送到 LLM 服务商。如果用的是第三方 API(OpenAI、Claude 等),你的内网拓扑就等于交出去了。
检查方法:
# 检查 Agent 代码里是否有硬编码的敏感信息
grep -rn "password\|secret\|token\|10\.\|172\.\|192\.168" ./agent/ --include="*.py" --include="*.json"
# 检查 Prompt 模板里是否有动态拼接的敏感数据
grep -rn "prompt.*format\|f\".*prompt\|prompt.*+" ./agent/ --include="*.py"
修复方案:Prompt 和敏感数据必须分离。敏感数据用独立的配置文件管理,Prompt 只引用数据标签,不包含实际内容。
风险二:Tool 调用的权限膨胀
Agent 的强大在于能调用各种 Tool——查数据库、执行命令、读写文件。但问题来了:你给 Agent 的权限,可能远超它的实际需求。
我审过一个应急响应 Agent,它的 Tool 列表里有 execute_sql、ssh_connect、read_file。理论上它只需要读告警日志,但它有权限直接连数据库、SSH 到任意服务器。
更离谱的是,Agent 的 Prompt 里写着"你可以主动探索系统以获取更多信息"。翻译成人话就是:你可以随便逛,看到啥算啥。
权限最小化检查清单:
Tool 类型最小权限常见过度授权 数据库查询只读、限定库表root 权限、全库访问 命令执行白名单命令bash 任意执行 文件读取限定目录全盘读取 API 调用限定 endpoint全量 API key 网络请求白名单 IP/域名任意外连修复方案:每个 Tool 必须有独立的权限配置,遵循最小权限原则。Agent 的"探索能力"要靠 Prompt 引导,不能靠开放权限。
风险三:日志里的"全量上下文"
Agent 运行时会产生大量日志——输入输出、中间推理、Tool 调用记录。这些日志往往包含完整的上下文,包括你不想泄露的数据。
我见过最离谱的:Agent 把每次对话的完整历史(包括用户输入的密码重置请求、内部工单内容)全量写入了日志文件,而且日志文件权限是 777。
# 检查 Agent 日志权限
find /var/log/ -name "*agent*" -exec ls -la {} \;
# 检查日志里是否有敏感数据
grep -rn "password\|token\|secret\|api_key" /var/log/agent/ | head -20
修复方案:
- 日志分级:DEBUG 级别的日志不写入生产环境
- 敏感字段脱敏:密码、token、密钥在日志中必须 mask
- 日志权限:最小权限原则,只有运维账号可读
风险四:第三方依赖的供应链风险
Agent 通常依赖一堆第三方库——LangChain、LlamaIndex、各种 SDK。这些库的更新频率极快,安全审计往往跟不上。
上周刚出的一个漏洞:某个流行的 Agent 框架的插件系统存在 RCE(远程代码执行)漏洞。攻击者可以通过构造恶意的 Tool 定义,在 Agent 执行时注入任意代码。
# 检查依赖库的安全漏洞
pip install safety
safety check
# 检查 Agent 框架版本
pip list | grep -i "langchain\|llama\|agent\|openai"
修复方案:
- 锁定依赖版本,不盲目追新
- 定期扫描依赖漏洞(集成到 CI/CD)
- Agent 框架和业务代码分离,便于独立更新
风险五:回话上下文的"记忆泄露"
Agent 有对话记忆功能,能把历史对话保存下来用于上下文理解。但这个"记忆"如果管理不当,会变成一个巨大的信息黑洞。
我审过一个 Agent,它的对话记忆存在 Redis 里,没有设置过期时间。三个月下来,积累了上万条对话记录,包含大量内部安全信息——漏洞详情、应急响应过程、甚至管理员的个人操作习惯。
更要命的是,这个 Redis 实例没有设置密码。
# 检查 Agent 的记忆存储
redis-cli -h 127.0.0.1 keys "*agent*memory*" | head -10
# 检查记忆存储的安全配置
redis-cli -h 127.0.0.1 config get requirepass
修复方案:
- 记忆存储必须加密,设置访问密码
- 对话记忆设置 TTL,定期清理
- 敏感对话不进入长期记忆
最后的建议
AI Agent 是好东西,但安全问题不能等出了事再补。我总结了一个简单的检查流程:
- 上线前:审查 Prompt、Tool 权限、日志配置
- 运行中:监控 API 调用、数据流向、异常行为
- 定期审计:依赖漏洞扫描、权限复查、记忆清理
说白了,AI Agent 的安全问题,本质上还是传统安全问题的新变种——权限管理、数据保护、供应链安全。只不过以前是人操作机器,现在是 AI 操作机器,攻击面变大了,但防御思路没变。
别被"AI"这个词唬住了,该做的安全基础工作,一样都不能少。
关注「安全值班室」公众号
每天AI安全早报 + 实战攻防案例 + 网安学习路线连载
浙公网安备 33010602011771号