QuickJS
CVE-2025-62490
HIGH
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessDeliver crafted JS to QuickJS
-
DeliveryDefine array/Map with side-effecting callback
-
ExploitInvoke object printing routine
-
ExecutionCallback resizes container mid-iteration
-
ImpactExploit use-after-free for code execution
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Memory lifecycle management
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires that the embedding application (a) execute attacker-influenced JavaScript in QuickJS and (b) invoke the object-printing path (js_print_object / print / dump) on an attacker-crafted Array, Map, or Set whose elements trigger a user-defined callback (getter, Proxy trap, or valueOf/toString) during js_print_value; that callback must resize or remove elements so the previously fetched array length (len1) or the ms->records list becomes stale. LIMITING FACTORS: deployments that never print/dump attacker-controlled objects, or that do not run untrusted script, are not reachable; reliable code execution (versus a crash) additionally requires heap grooming to control the freed allocation. This is therefore a usage/configuration-dependent bug rather than a default remote-unauthenticated flaw. |
| Impact | Signals are mixed and must be weighed against deployment context. The input CVSS 4.0 vector (base 8.8) describes a fairly constrained path (AV:A adjacent, AC:H high complexity, AT:P present attack requirement, UI:P passive user interaction) yet rates confidentiality/integrity High with a scope change - this is internally tense for a scripting-engine memory-corruption bug, since in most QuickJS embeddings the triggering JavaScript executes in-process rather than over an adjacent network with user interaction. A publicly available exploit/PoC exists (Google issue tracker), which raises practical risk. This CVE is NOT listed in CISA KEV and NO EPSS score was provided in the input, so there is no evidence of active or widespread exploitation and no modeled exploitation probability to cite - these are missing data, not low values. Reported by Google's CVE coordination team and classified CWE-416 (use-after-free), the technical impact is genuine memory corruption that can escalate to code execution. Net: treat as a real priority for any product that evaluates untrusted/attacker-influenced JavaScript through QuickJS and prints objects, but materially lower priority for deployments that never run untrusted scripts. Note the conflict explicitly: the provided CVSS 4.0 vector implies adjacent access plus user interaction, whereas the description implies the vulnerability is reached by executing attacker-supplied script and printing a crafted object - verify the real exploitation path against your embedding. |
| Exploit ScenarioDerived | An application embeds QuickJS and evaluates untrusted JavaScript, then prints or dumps a resulting object (e.g., via print()/console.log-style output). The attacker supplies a script defining an array (or Map/Set) whose element access runs an attacker-defined callback during js_print_value; that callback resizes/empties the container mid-iteration so the cached length (len1) or records list points at freed memory, triggering a use-after-free. A public PoC exists on Google's issue tracker, so the trigger is reproducible, though reliable code execution still requires heap grooming. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 19, 2026
Use-after-free in QuickJS object-printing routines can corrupt memory when an attacker-influenced Array, Map, or Set is printed and a JavaScript callback mutates the container during js_print_value. The bug affects QuickJS deployments that expose the print/dump path to untrusted script; exploitation is usage- and configuration-dependent because the embedding application must execute attacker-influenced JavaScript and then print or dump the crafted object. Publicly available exploit code exists, but there is no confirmed active exploitation (CISA KEV), and reliable code execution beyond a crash requires heap grooming.
RemediationAI
An upstream changelog is referenced at https://bellard.org/quickjs/Changelog, but an exact fixed version is not independently confirmed in the provided data; obtain the current QuickJS release from https://bellard.org/quickjs/, review the changelog for the js_print_object fix, and rebuild and redeploy the embedding application with that engine version. If upgrading is not immediately possible, avoid exposing print/dump/diagnostic object-printing paths to attacker-controlled JavaScript and do not run untrusted scripts in the same process; isolate script execution in a sandboxed worker or separate process and restrict who can submit scripts. These compensating controls reduce reachability but do not fix the underlying memory-safety bug, and disabling print/dump removes diagnostic functionality.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
QuickJS is an embeddable JavaScript engine, and js_print_object is a diagnostic printing helper that snapshots an Array's length into len1 before iterating, or walks a Map/Set's ms->records list. Because js_print_value can invoke attacker-defined callbacks such as getters, Proxy traps, or valueOf/toString, the callback can resize the array or delete map/set records so the cached length or list pointer becomes stale, producing a CWE-416 use-after-free and possible memory corruption. The CPE quickjs_project:quickjs with a wildcard version indicates all released versions are treated as affected in this dataset; reachability depends on the embedding application invoking the print/dump path on attacker-crafted objects.
Know when Quickjs gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:A/AC:H/AT:P/PR:N/UI:P/VC:H/VI:H/VA:L/SC:H/SI:H/SA:L
Triggered by executing untrusted script (AV:N, PR:N, UI:N), but reliable UAF exploitation needs the specific print path plus heap grooming (AC:H); memory corruption yields full C/I/A impact within the engine process (S:U).
Primary rating from Vendor (google).
CVSS VectorVendor: google
DescriptionCVE.org
In quickjs, in js_print_object, when printing an array, the function first fetches the array length and then loops over it. The issue is, printing a value is not side-effect free. An attacker-defined callback could run during js_print_value, during which the array could get resized and len1 become out of bounds. This results in a use-after-free.A second instance occurs in the same function during printing of a map or set objects. The code iterates over ms->records list, but once again, elements could be removed from the list during js_print_value call.
Executive ViewAI
QuickJS object-printing routines contain a use-after-free that can crash or potentially corrupt memory in applications that execute untrusted JavaScript and then print or dump attacker-influenced Array, Map, or Set objects. Leadership should care because any product embedding QuickJS and exposing the print/dump path to customer- or partner-supplied scripts inherits availability and possible code-execution risk, and no vendor patch is available yet.
No vendor-released patch identified at time of analysis; restrict or disable print/dump of untrusted Array, Map, or Set containers, sandbox QuickJS with least privilege, avoid executing untrusted JavaScript where possible, and monitor for crashes or memory corruption.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Use-after-free vulnerabilities occur when a program continues to access memory through a pointer after that memory has been deallocated.
Memory corruption occurs when a program writes data beyond the boundaries of allocated memory regions or accesses memory in unintended ways, violating the integrity of the process's address space.
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Affected Products (CPE)CVE.org
A use-after-free in QuickJS's quickjs-libc standard library lets JavaScript code corrupt heap memory from inside the int
QuickJS commit 2788d71 was discovered to contain a stack-overflow via the component js_proxy_isArray at quickjs.c. Rated
Heap out-of-bounds write in QuickJS's BigInt string parser can corrupt memory when an embedding application converts an
Integer overflow in QuickJS's libregexp bytecode accounting can become an out-of-bounds write when a crafted recursive r
Type confusion in QuickJS's handling of the string addition (+) operation allows local attackers to trigger out-of-bound
Information disclosure in QuickJS occurs through a floating-point precision error in TypedArray.prototype.indexOf() when
An out-of-bounds heap read in QuickJS's BigInt-to-string conversion (js_bigint_to_string1) lets script-controlled BigInt
Heap out-of-bounds write in QuickJS's bytecode deserializer (JS_ReadFunctionTag) lets a crafted serialized blob corrupt
quickjs-ng through 0.9.0 has a missing length check in JS_ReadString for a string, leading to a heap-based buffer overfl
quickjs-ng through 0.9.0 has an incorrect size calculation in JS_ReadBigInt for a BigInt, leading to a heap-based buffer
Heap-based buffer overflow in QuickJS up to version 0.11.0 within the js_typed_array_constructor function allows unauthe
A vulnerability was found in quickjs-ng QuickJS up to 0.8.0. Rated medium severity (CVSS 5.3), this vulnerability is rem
NVD
CVE.org
EPSS
GitHub PoC
Exploit-DB