事件经过
Langroid是用于构建LLM驱动应用的框架,在TableChatAgent.pandas_eval()和VectorStore.compute_from_docs()中易受沙箱逃逸/RCE影响。两者都试图通过将eval()的locals设置为空字典来沙箱化LLM生成的代码执行,但未从globals中清理__builtins__,因此Python隐式注入所有内置函数——授予对__import__('os').system()等函数的完整访问权限。由于这些代理本地执行LLM生成的工具消息,任何到达代理的提示注入(直接或通过RAG摄入的内容的间接方式)都可以实现完整RCE。已在0.65.2中修复。
影响分析
CVSS 10.0——这是广泛使用的LLM代理框架中完整的沙箱逃逸RCE,仅通过提示注入即可利用,无需额外认证。由于TableChatAgent和VectorStore是核心的、常用的Langroid功能,任何基于未修补Langroid构建的应用,如果让LLM自己的输出到达这些代码路径,都会被模型读取的内容(例如RAG管道中被污染的文档)轻松compromise。
攻击途径
提示注入(直接或通过RAG内容的间接方式)导致LLM发出工具调用负载,这些负载到达TableChatAgent.pandas_eval()或VectorStore.compute_from_docs(),其中不完整的eval()沙箱化允许任意Python/OS命令执行
受影响系统
Langroid(pip包) < 0.65.2
缓解措施
升级到Langroid ≥0.65.2