{ "dataType": "CVE_RECORD", "dataVersion": "5.1", "cveMetadata": { "cveId": "CVE-2025-62496", "assignerOrgId": "14ed7db2-1595-443d-9d34-6215bf890778", "state": "PUBLISHED", "assignerShortName": "Google", "dateReserved": "2025-10-15T08:47:41.878Z", "datePublished": "2025-10-16T15:52:05.654Z", "dateUpdated": "2025-10-16T17:26:25.654Z" }, "containers": { "cna": { "affected": [ { "collectionURL": "https://bellard.org/quickjs/", "defaultStatus": "unaffected", "packageName": "js_bigint_from_string", "product": "QuickJS", "vendor": "QuickJS", "versions": [ { "lessThan": "2025-09-13", "status": "affected", "version": "2025-04-26", "versionType": "date" } ] } ], "credits": [ { "lang": "en", "type": "finder", "value": "Google Big Sleep" } ], "datePublic": "2025-07-24T22:00:00.000Z", "descriptions": [ { "lang": "en", "supportingMedia": [ { "base64": false, "type": "text/html", "value": "
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:
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.