CVE-2026-0822CVE-2026-0822是quickjs-ng项目中quickjs引擎的一个安全漏洞,存在于JavaScript引擎的TypedArray排序功能中。该漏洞影响quickjs版本至0.11.0(含),由安全研究员[email protected]于2026年1月10日披露。漏洞位于quickjs.c文件的js_typed_array_sort函数中,由于对堆内存的处理不当,导致堆缓冲区溢出问题。攻击者可以通过构造恶意的JavaScript代码,利用TypedArray的sort方法触发此漏洞。CVSS 3.1评分6.3,属于中等严重程度。虽然需要用户交互才能触发,但攻击复杂度较低,且漏洞利用代码已公开,可能已被实际攻击者使用。成功利用此漏洞可能导致JavaScript引擎崩溃、内存数据泄露,甚至可能在特定条件下实现远程代码执行。该漏洞影响所有使用quickjs-ng引擎的应用程序,包括嵌入式系统、物联网设备、服务器端JavaScript运行时等。
该漏洞根本原因在于quickjs引擎的js_typed_array_sort函数在处理TypedArray排序时存在边界检查缺陷。当JavaScript代码对TypedArray(如Int8Array、Uint8Array、Float32Array等)调用sort()方法时,引擎内部会执行排序算法。如果TypedArray的长度或数据内容经过精心构造,可能导致排序过程中访问堆内存时超出预期边界。具体而言,排序算法在交换数组元素时,可能对底层缓冲区进行越界写入操作。这种堆缓冲区溢出可被攻击者利用来覆写相邻内存区域的关键数据结构。在某些情况下,攻击者可能通过精心设计的数据布局和多次触发漏洞,逐步实现代码执行。值得注意的是,该漏洞的利用需要用户交互(如访问包含恶意代码的网页或执行恶意脚本),但一旦触发,攻击者可以在受害者环境中获得一定的控制权。快速JS项目已在commit 53eefbcd695165a3bd8c584813b472cb4a69fbf5中发布了修复补丁。