赋予LLMs exec()能力是一场安全噩梦。我构建了一个基于AST的开源防护机制来阻止恶意代理执行。
摘要
介绍ast-guard,一个开源的基于AST的安全工具,它通过将LLM生成的Python字符串解析为抽象语法树,并应用节点级白名单和上下文感知安全检查,防止恶意代码执行。
大家好,我们都希望AI代理能够编写并执行自己的代码。但实话实说:盲目地将LLM生成的Python字符串传入exec()或解释器是一个巨大的风险。提示工程可以被绕过,正则表达式过滤也容易被混淆代码规避。为了解决这个问题,我花了最近几周时间深入研究编译器层面,构建了ast-guard。它不是分析代码的外在形式(字符串/提示),而是在代码触及解释器之前,通过将LLM输出解析为抽象语法树(AST)来分析代码的实际行为。它是如何确保执行安全的:
•节点级白名单:在解析器层面动态阻止危险的语言结构、未授权的内置函数以及风险导入(如隐藏的subprocess或os调用)。
•上下文感知安全:它不仅仅屏蔽关键词,还能理解库是否被结构性滥用。
•纵深防御:设计为在您需要启动沉重的Docker容器或WASM沙箱之前,充当即时的轻量级软件层防护。
关于我:我完全是自学成才的工程师。6个月前,没有任何IT背景,纯粹出于对AI架构的好奇,我从零开始学习。因为我还在学习中,所以我希望得到诚实的反馈。该项目完全开源。链接在评论区。
相似文章
构建了一个 LLM 在结构上被禁止生成最终输出的 Agent,寻求反馈以及愿意尝试“攻破”它的人
作者描述了一个基于 LangGraph 构建的 AI Agent,旨在复现生产环境中的 Python 崩溃问题。其独特之处在于架构设计:LLM 负责规划行动,而确定性 Python 函数则生成最终测试代码,以确保可靠性。
@GoogleCloudTech: LLM的工作是推理,而非安全。仅仅依赖内置的模型护栏会让你暴露在高级攻击之下…
Google Cloud Tech关于使用纵深防御策略保护多智能体LLM系统的技术分享,涵盖敏感数据保护和Model Armor,以防止提示注入和数据泄露。
是否可能存在带有后门的恶意LLM
讨论了包含由秘密句子或条件触发的后门的LLM的可能性,以及闭源与开源模型的相对风险。
PropGuard:通过传播感知的探索与修复保障LLM-MAS安全
PropGuard是一种传播感知框架,用于保护基于LLM的多智能体系统(LLM-MAS)免受跨智能体和轮次传播的恶意指令的影响。它构建了一个双视角时空图,并使用经过GE-GRPO训练的检查器来检测和修复可疑的传播子图。
@amitiitbhu:LLM 护栏如何工作?在此阅读:
一份实用指南,解释 LLM 护栏的工作原理、为什么需要它们、它们在输入和输出上的位置、如何用代码实现它们,以及最佳实践。