跳转至

代码执行注入

风险概览

风险编号:GAARM.0041.002
风险归属:GAARM.0041
安全阶段:应用安全
生命周期:应用阶段
创建时间:2024.05.01
修改时间:2024.08.06

攻击概述

在ReAct框架下,LLMs可以与外部系统交互,外部的代码解释器Agent可用于为LLMs提供代码执行能力,实现在业务应用过程中完成自动化图标绘制、复杂代码运算等需求。攻击者通过构建恶意输入提示词操纵LLMs执行预定的推理过程,使得LLMs调度代码执行Agent在底层系统上执行恶意代码、命令等操作,从而实现对LLMs基座运行环境的攻击与利用,出现此攻击的主要原因为:

  • 未能对用户输入进行有效检测验证或限制,允许攻击者未经授权的开展恶意代码执行操作。
  • 沙盒环境不足或LLMs的能力限制不足,导致它以意外的方式与底层系统进行交互。
  • 无意中将系统级功能或接口暴露给LLMs。

攻击案例

案例 描述
案例一 GPT-4新功能上线后,其中发现Python代码解释器疑似存在沙盒逃逸漏洞

攻击风险

  • 代码执行风险:攻击者可以执行任意Python代码,这可能导致服务器受损、数据泄露或其他恶意行为。
  • 系统权限控制:如果CodeExecutor没有适当的安全措施,执行的代码结合容器逃逸等攻击手段,可能会获取系统的高级权限。
  • 持续性访问控制:攻击者可能利用这次机会建立一个长期的访问通道,用于持续攻击。

缓解措施

缓解方式 描述
输入验证 实施严格的输入检测与限制流程,防止恶意或意外的提示被LLMs处理
最小权限原则 确保正确的沙盒化并限制LLMs的能力,以限制其与底层系统的交互能力,避免执行可能导致系统级影响的操作
监控与日志记录 记录所有通过LLM执行的操作,并进行实时监控,以便快速检测和响应可疑活动

参考