CVE-2025-62492
MediumCVSS 6.5Exploitation Probability (EPSS)
Low risk32th percentile - higher than 32% of all known CVEs
Summary
A floating-point arithmetic precision error exists in QuickJS's implementation of TypedArray.prototype.indexOf() when a negative fromIndex argument is supplied. When the value is extremely small (e.g., -1e-20), adding the array length can lose precision and yield an index equal to the length, causing an out-of-bounds read of one element. This may lead to information disclosure of adjacent memory.
Risk Assessment
An attacker can trigger an out-of-bounds read, potentially disclosing adjacent memory contents. The read scope is small (one element) but may breach data confidentiality.
Recommendation
Update QuickJS to a version containing the fix or avoid passing extremely small negative fromIndex values. Monitor applications using QuickJS to process untrusted data.
Other vulnerabilities in QuickJS
See all- CVE-2026-88378Critical
QuickJS commit 04be24600 contains a heap out-of-bounds write condition in JS_ReadFunctionTag().
- CVE-2025-12745Medium
In QuickJS up to commit eb2c89087def1829ed99630cb14b549d7a98408c, the function js_array_buffer_slice in quickjs.c causes a buffer over-read. The attack requires local execution, and the exploit is publicly available.
- CVE-2025-62496High
A vulnerability in the QuickJS engine when creating a BigInt from a string with an excessively large number of digits. The bit count calculation causes an integer overflow, leading to an underestimated buffer size and a heap out-of-bounds write.
- CVE-2025-62495High
An integer overflow vulnerability in the QuickJS regular expression engine (libregexp) due to inconsistent representation of the bytecode buffer size. A large or complex regular expression can cause the size to wrap around and lead to an out-of-bounds write.
- CVE-2025-62494High
A type confusion vulnerability exists in the QuickJS engine's handling of the string addition (+) operation. During conversion of the right-hand operand, a callback can change the type of the left-hand operand, leading to a type mismatch and potential out-of-bounds memory access.
- CVE-2025-62493Medium
A vulnerability in the QuickJS engine's BigInt string conversion logic (js_bigint_to_string1) stems from an incorrect calculation of the required number of digits, leading to reading memory past the allocated BigInt structure. In certain edge cases, the conversion loop reads data spanning two limbs, causing an out-of-bounds read.
- CVE-2025-62491High
A use-after-free exists in the QuickJS engine's standard library when iterating over the global list of unhandled rejected promises (rejected_promise_list). A malicious property getter on an Error object can call catch() on the same rejected promise, which removes and frees the current list entry while the loop continues using the freed pointer.
- CVE-2025-62490High
In QuickJS's js_print_object, printing an array fetches the length and then loops over it, but printing a value is not side-effect free. An attacker-defined callback can run during js_print_value and resize the array, causing a use-after-free; a second instance occurs when printing Map or Set objects whose records list can be modified during js_print_value.
Original NVD description (English source)
A vulnerability stemming from floating-point arithmetic precision errors exists in the QuickJS engine's implementation of TypedArray.prototype.indexOf() when a negative fromIndex argument is supplied. * The fromIndex argument (read as a double variable, $d$) is used to calculate the starting position for the search. * If d is negative, the index is calculated relative to the end of the array by adding the array's length (len) to d: $$d_{new} = d + \text{len}$$ * Due to the inherent limitations of floating-point arithmetic, if the negative value $d$ is extremely small (e.g., $-1 \times 10^{-20}$), the addition $d + \text{len}$ can result in a loss of precision, yielding an outcome that is exactly equal to $\text{len}$. * The result is then converted to an integer index $k$: $k = \text{len}$. * The search function proceeds to read array elements starting from index $k$. Since valid indices are $0$ to $\text{len}-1$, starting the read at index $\text{len}$ is one element past the end of the array. This allows an attacker to cause an Out-of-Bounds Read of one element immediately following the buffer. While the scope of this read is small (one element), it can potentially lead to Information Disclosure of adjacent memory contents, depending on the execution environment.
Vulnerability data from NVD (NIST) · CISA KEV · EPSS

