重构大版本更新
一口气全面统一博客样式,移除部分冗余导航页面,更专注内容展示。
从提示词注入到供应链投毒,梳理 LLM 应用最容易出事的五个环节,以及对应的防御思路。
这两年大模型应用爆发式增长,随之而来的安全事件也越来越多。有意思的是,大多数事故并不是模型本身被”攻破”,而是应用层的设计埋了坑。OWASP 为此专门发布了 LLM 应用 Top 10 风险清单,本文挑出最核心的五类来讲。
我在上一篇文章里单独讲过:外部数据里夹带指令,被模型当成规则执行。它是其他很多风险的”入口”——后面要讲的工具滥用、信息泄露,往往都是注入打开的缺口。
三个常见的泄露源:
很多人以为模型文件是”数据”,加载不会有事。错——常见的模型序列化格式(Python pickle)加载即执行任意代码。一个来路不明的 .bin、.pkl 模型文件,或一个拼写仿冒的 PyPI 包(比如 requsts),都可能直接给你种上后门。规则很简单:模型和依赖只从官方渠道拉,加载前想清楚来源。
给 Agent 挂上读文件、发 HTTP、执行 shell 的能力很爽,但这等于把服务器的钥匙交给了”可能被注入的模型”。一旦提示词注入成功,过度授权直接把注入放大成远程代码执行(RCE)。
模型会一本正经地编造事实。在安全场景下这格外致命:让它生成防火墙规则、密码策略建议,一个幻觉参数可能直接留出漏洞。此外还有被诱导生成钓鱼文案、恶意代码的滥用风险。
| 风险 | 一句话场景 | 关键防御 |
|---|---|---|
| 提示词注入 | 外部数据夹带指令 | 指令/数据隔离 + 注入检测 |
| 信息泄露 | 系统提示、上下文外泄 | 敏感内容不进提示词 + 输出过滤 |
| 供应链投毒 | 恶意模型文件/依赖包 | 官方渠道 + 校验 + 沙箱加载 |
| 工具滥用 | Agent 被注入后乱用权限 | 最小权限 + 人工确认 |
| 幻觉 | 编造的安全建议被直接采用 | 关键输出人工复核 |
LLM 应用的安全问题,大部分是老问题的重新包装:注入是数据/代码混淆,供应链是依赖可信问题,越权是权限设计问题。把 Web 安全的基本功平移过来,再补上对模型行为特性的理解,就能避开绝大多数坑。