CVE-2026-34172Giskard是一个用于测试和评估智能体系统的开源Python库。在0.3.4和1.0.2b1版本之前,该库存在严重的远程代码执行漏洞。具体而言,`ChatWorkflow.chat(message)`方法将接收到的字符串参数直接作为Jinja2模板源传递给非沙箱环境。由于方法名称暗示了直接传递用户输入,开发者容易误用,导致攻击者能够通过精心构造的恶意输入,利用Jinja2模板注入和类遍历技术在服务器端执行任意代码,从而完全控制受影响系统。
该漏洞的根本原因在于Giskard使用了不安全的模板渲染机制。`ChatWorkflow.chat` 方法接收用户提供的 `message` 参数,并未进行任何清洗或转义,直接将其传递给 Jinja2 的非沙箱环境进行渲染。Jinja2 在非沙箱模式下允许模板代码访问 Python 的全局对象和类属性。攻击者可以构造恶意的 Jinja2 语法 Payload(例如利用 `{{ ''.__class__.__mro__[1].__subclasses__() }}` 遍历类),寻找并加载能够执行系统命令的模块(如 `os` 模块或 `subprocess` 模块)。一旦成功引用这些模块,攻击者即可通过 `popen('cmd').read()` 等方式执行任意操作系统命令。由于该接口设计上极易接收用户输入,且无需额外权限即可触发,因此危害极大。