CVE-2025-62496
Integer overflow in js_bigint_from_string in QuickJS
Description
A vulnerability exists in the QuickJS engine's BigInt string parsing logic (js_bigint_from_string) when attempting to create a BigInt from a string with an excessively large number of digits. The function calculates the necessary number of bits (n_bits) required to store the BigInt using the formula: $$\text{n\_bits} = (\text{n\_digits} \times 27 + 7) / 8 \quad (\text{for radix 10})$$ * For large input strings (e.g., $79,536,432$ digits or more for base 10), the intermediate calculation $(\text{n\_digits} \times 27 + 7)$ exceeds the maximum value of a standard signed 32-bit integer, resulting in an Integer Overflow. * The resulting n_bits value becomes unexpectedly small or even negative due to this wrap-around. * This flawed n_bits is then used to compute n_limbs, the number of memory "limbs" needed for the BigInt object. Since n_bits is too small, the calculated n_limbs is also significantly underestimated. * The function proceeds to allocate a JSBigInt object using this underestimated n_limbs. * When the function later attempts to write the actual BigInt data into the allocated object, the small buffer size is quickly exceeded, leading to a Heap Out-of-Bounds Write as data is written past the end of the allocated r->tab array.
INFO
Published Date :
Oct. 16, 2025, 4:15 p.m.
Last Modified :
Oct. 19, 2026, 5:10 p.m.
Remotely Exploit :
No
Source :
[email protected]
CVSS Scores
| Score | Version | Severity | Vector | Exploitability Score | Impact Score | Source |
|---|---|---|---|---|---|---|
| CVSS | 134c704f-9b21-4f2e-91b3-4a467353bcc0 | |||||
| CVSS 3.1 | HIGH | [email protected] | ||||
| CVSS 4.0 | HIGH | 14ed7db2-1595-443d-9d34-6215bf890778 | ||||
| CVSS 4.0 | HIGH | [email protected] |
Solution
- Update the QuickJS engine to the latest version.
- Review BigInt parsing logic for integer overflows.
- Ensure correct memory allocation based on input size.
- Validate all buffer writes to prevent overflows.
Public PoC/Exploit Available at Github
CVE-2025-62496 has a 1 public
PoC/Exploit available at Github.
Go to the Public Exploits tab to see the list.
References to Advisories, Solutions, and Tools
Here, you will find a curated list of external links that provide in-depth
information, practical solutions, and valuable tools related to
CVE-2025-62496.
| URL | Resource |
|---|---|
| https://bellard.org/quickjs/Changelog | Release Notes |
| https://issuetracker.google.com/434193016 | Exploit Issue Tracking |
CWE - Common Weakness Enumeration
While CVE identifies
specific instances of vulnerabilities, CWE categorizes the common flaws or
weaknesses that can lead to vulnerabilities. CVE-2025-62496 is
associated with the following CWEs:
Common Attack Pattern Enumeration and Classification (CAPEC)
Common Attack Pattern Enumeration and Classification
(CAPEC)
stores attack patterns, which are descriptions of the common attributes and
approaches employed by adversaries to exploit the CVE-2025-62496
weaknesses.
We scan GitHub repositories to detect new proof-of-concept exploits. Following list is a collection of public exploits and proof-of-concepts, which have been published on GitHub (sorted by the most recently updated).
Tracking CVEs discovered by AI systems — Anthropic, OpenAI, Google Big Sleep, Microsoft MDASH, DepthFirst
Results are limited to the first 15 repositories due to potential performance issues.
The following list is the news that have been mention
CVE-2025-62496 vulnerability anywhere in the article.
The following table lists the changes that have been made to the
CVE-2025-62496 vulnerability over time.
Vulnerability history details can be useful for understanding the evolution of a vulnerability, and for identifying the most recent changes that may impact the vulnerability's severity, exploitability, or other characteristics.
-
CVE Translated by [email protected]
Oct. 19, 2026
Action Type Old Value New Value Added Translation Title: QuickJS, Description: Una vulnerabilidad existe en la lógica de análisis de cadenas BigInt del motor QuickJS (js_bigint_from_string) al intentar crear un BigInt a partir de una cadena con un número excesivamente grande de dígitos. La función calcula el número necesario de bits (n_bits) requerido para almacenar el BigInt utilizando la fórmula: $$\text{n\_bits} = (\text{n\_digits} \times 27 + 7) / 8 \quad (\text{para base 10})$$ * Para cadenas de entrada grandes (por ejemplo, $79,536,432$ dígitos o más para base 10), el cálculo intermedio $(\text{n\_digits} \times 27 + 7)$ excede el valor máximo de un entero con signo estándar de 32 bits, lo que resulta en un desbordamiento de entero. * El valor resultante de n_bits se vuelve inesperadamente pequeño o incluso negativo debido a este ajuste cíclico. * Este n_bits defectuoso se utiliza entonces para calcular n_limbs, el número de 'limbs' de memoria necesarios para el objeto BigInt. Dado que n_bits es demasiado pequeño, el n_limbs calculado también se subestima significativamente. * La función procede a asignar un objeto JSBigInt utilizando este n_limbs subestimado. * Cuando la función intenta posteriormente escribir los datos reales del BigInt en el objeto asignado, el pequeño tamaño del búfer se excede rápidamente, lo que lleva a una escritura fuera de límites en el heap a medida que los datos se escriben más allá del final del array r -> tab asignado. -
CVE Modified by [email protected]
Jun. 17, 2026
Action Type Old Value New Value Added Affected [{'vendor': 'QuickJS', 'product': 'QuickJS', 'versions': [{'status': 'affected', 'version': '2025-04-26', 'lessThan': '2025-09-13', 'versionType': 'date'}], 'packageName': 'js_bigint_from_string', 'collectionURL': 'https://bellard.org/quickjs/', 'defaultStatus': 'unaffected'}] -
CVE Modified by 134c704f-9b21-4f2e-91b3-4a467353bcc0
Jun. 17, 2026
Action Type Old Value New Value Added SSVC {'id': 'CVE-2025-62496', 'role': 'CISA Coordinator', 'options': [{'exploitation': 'poc'}, {'automatable': 'no'}, {'technicalImpact': 'total'}], 'version': '2.0.3', 'timestamp': '2025-10-16T17:26:14.998141Z'} -
Initial Analysis by [email protected]
Oct. 28, 2025
Action Type Old Value New Value Added CVSS V3.1 AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H Added CPE Configuration OR *cpe:2.3:a:quickjs_project:quickjs:*:*:*:*:*:*:*:* versions up to (excluding) 2025-09-13 Added Reference Type Google Inc.: https://bellard.org/quickjs/Changelog Types: Release Notes Added Reference Type Google Inc.: https://issuetracker.google.com/434193016 Types: Exploit, Issue Tracking -
New CVE Received by [email protected]
Oct. 16, 2025
Action Type Old Value New Value Added Description A vulnerability exists in the QuickJS engine's BigInt string parsing logic (js_bigint_from_string) when attempting to create a BigInt from a string with an excessively large number of digits. The function calculates the necessary number of bits (n_bits) required to store the BigInt using the formula: $$\text{n\_bits} = (\text{n\_digits} \times 27 + 7) / 8 \quad (\text{for radix 10})$$ * For large input strings (e.g., $79,536,432$ digits or more for base 10), the intermediate calculation $(\text{n\_digits} \times 27 + 7)$ exceeds the maximum value of a standard signed 32-bit integer, resulting in an Integer Overflow. * The resulting n_bits value becomes unexpectedly small or even negative due to this wrap-around. * This flawed n_bits is then used to compute n_limbs, the number of memory "limbs" needed for the BigInt object. Since n_bits is too small, the calculated n_limbs is also significantly underestimated. * The function proceeds to allocate a JSBigInt object using this underestimated n_limbs. * When the function later attempts to write the actual BigInt data into the allocated object, the small buffer size is quickly exceeded, leading to a Heap Out-of-Bounds Write as data is written past the end of the allocated r->tab array. Added CVSS V4.0 AV:A/AC:H/AT:P/PR:L/UI:P/VC:H/VI:H/VA:L/SC:H/SI:H/SA:L/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X Added CWE CWE-190 Added Reference https://bellard.org/quickjs/Changelog Added Reference https://issuetracker.google.com/434193016