Every CVE Search/ Get API key

CVE-2025-62496

Integer overflow in js_bigint_from_string in QuickJS

7.1 High

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.

Attack profile

How easy it is to exploit

Attack vector
Adjacent network
Complexity
High
Privileges needed
Low
User interaction
Passive

What an attacker can affect

Confidentiality
High
Integrity
High
Availability
Low

Exploit likelihood

0.49%Up 0.5 points since Oct 17, 2025
90%50%10%1%

What each source reports

CVE List Score used 7.1

Integer overflow in js_bigint_from_string in QuickJS

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.

Record
CVE-2025-62496
CVSS 4.0
7.1 HighCVSS:4.0/AV:A/AC:H/AT:P/PR:L/UI:P/VC:H/VI:H/VA:L/SC:H/SI:H/SA:L
Weakness
CWE-190
Updated
2026-11-02
EUVDEUVD-2025-34778 7.1

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.

Record
EUVD-2025-34778
CVSS 4.0
7.1 HighCVSS:4.0/AV:A/AC:H/AT:P/PR:L/UI:P/VC:H/VI:H/VA:L/SC:H/SI:H/SA:L
Updated
2026-11-02
GitHub AdvisoriesGHSA-p8pr-fr36-rgmq 7.1

A vulnerability exists in the QuickJS engine's BigInt string parsing logic (js_bigint_from_string...

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.

Record
GHSA-p8pr-fr36-rgmq
CVSS 4.0
7.1 HighCVSS:4.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
CVSS 3.1
8.8 HighCVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-190
Updated
2026-11-02
NVD 7.1

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.

Record
CVE-2025-62496
CVSS 4.0
7.1 HighCVSS:4.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
CVSS 3.1
8.8 HighCVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-190
Updated
2026-11-02
OSV 8.8

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.

Record
CVE-2025-62496
CVSS 3.1
8.8 HighCVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Updated
2026-11-02
OSVDEBIAN-CVE-2025-62496 8.8

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.

Record
DEBIAN-CVE-2025-62496
CVSS 3.1
8.8 HighCVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Updated
2026-11-02
OSVUBUNTU-CVE-2025-62496 7.1

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.

Record
UBUNTU-CVE-2025-62496
CVSS 4.0
7.1 HighCVSS:4.0/AV:A/AC:H/AT:P/PR:L/UI:P/VC:H/VI:H/VA:L/SC:H/SI:H/SA:L
CVSS 3.1
8.8 HighCVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
quickjs
Debian:13
All versions, plus listed versions
2025.04.26-1
None known
quickjs
Debian:14
All versions, plus listed versions
2025.04.26-1
None known
quickjs
Ubuntu:Pro:24.04:LTS
All versions, plus listed versions
2021.03.27-12021.03.27-1ubuntu0.1~esm1
None known
quickjs
Ubuntu:25.10
All versions, plus listed versions
2024.01.13-52025.04.26-1
None known
quickjs
Ubuntu:26.10
All versions, plus listed versions
2025.04.26-1build1
None known
quickjs
Ubuntu:26.04:LTS
All versions, plus listed versions
2025.04.26-12025.04.26-1build1
None known

History

History
RecordedChangedSources
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2025-62496 is a high vulnerability (CVSS 7.1) in Quickjs, published October 16, 2025. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.49%, the 42nd percentile. No source names a fixed version.

References

MoveEnter Open