LLMs应用不安全输出处理
风险概览
风险编号:GAARM.0035.003
风险归属:GAARM.0035
安全阶段:应用安全
生命周期:训练阶段
创建时间:2024.08.07
修改时间:2024.08.07
攻击概述¶
该风险是指当下游组件在接受大型语言模型 (LLM) 输出却未进行适当审查时,导致出现出现的一种安全风险。模型下游组件中包括各种功能的Agent,当缺乏相关的输出处理,会导致攻击者通过模型滥用Agent实现攻击行为,例如,攻击者可以通过输入特定的文本,诱导LLM输出包含敏感信息的响应,从而窃取用户数据,或者直接输出非预期的攻击Payload,导致下游出现RCE、SSRF等漏洞。
攻击案例¶
| 案例 | 描述 |
|---|---|
| 案例一 | CVE-2023-29374 是 Langchain 的一个任意代码执行漏洞,使用 0.0.131 及之前版本的 Langchain,并调用 Langchain LLMMathChain 链的程序,存在包含任意命令执行的安全风险,可能导致 OpenAI key 等敏感信息泄漏、Langchain 服务端被控等问题。 |
| 案例二 | Auto-GPT在v0.4.3之前版本中存在路径遍历漏洞,这个漏洞会导致运行Auto-GPT的主机上任意代码在docker环境之外执行。攻击者可利用该漏洞对目标有针对性的发起攻击,危害站点系统安全 |
攻击风险¶
- 敏感信息泄露:LLM 有时不会在其响应中清理 JavaScript。在这种情况下,攻击者可能会使用精心设计的Prompt导致 LLM 返回 JavaScript 有效负载,当受害者的浏览器解析该有效负载时,会受到攻击导致敏感信息泄露,如对话历史泄露等。
- 任意代码执行:攻击者可以通过漏洞执行任意代码。这可能导致攻击者在服务器上执行恶意操作,例如植入后门、提取敏感数据或中断服务。
- 定向攻击风险:攻击者可以对目标系统进行高度定制的攻击。例如,攻击者可能根据获取的文件信息制定进一步的攻击计划,对系统造成更大规模的损害。
缓解措施¶
| 缓解方式 | 描述 |
|---|---|
| 零信任框架 | 在此框架中,每个访问资源的请求都被视为来自不受信任的网络,系统会对其进行检查、身份验证和核实,以此带来系统安全 |
| 沙盒环境 | 尝试利用沙盒环境来执行代码,以确保更大的系统安全。例如,仅在专用的临时 Docker 容器内执行代码可以显著限制恶意代码的潜在影响 |
参考¶
- https://genai.owasp.org/wp-content/uploads/2024/05/OWASP-Top-10-for-LLM-Applications-v1_1_Chinese.pdf
- https://cloud.baidu.com/article/3253170
- https://www.akto.io/blog/insecure-output-handling-in-llms-insights
- https://journal.hexmos.com/insecure-output-handling/
- https://systemweakness.com/new-prompt-injection-attack-on-chatgpt-web-version-ef717492c5c2