CVE-2025-62496

8.8 HIGH

📋 TL;DR

This vulnerability allows attackers to trigger a heap out-of-bounds write by providing an excessively large BigInt string to QuickJS. Successful exploitation could lead to remote code execution or denial of service. Any system using QuickJS for JavaScript execution is potentially affected.

💻 Affected Systems

Products:
  • QuickJS JavaScript Engine
  • Applications embedding QuickJS
Versions: All versions prior to the fix
Operating Systems: All platforms running QuickJS
Default Config Vulnerable: ⚠️ Yes
Notes: Any application using QuickJS's BigInt parsing functionality is vulnerable when processing untrusted input

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Remote code execution leading to complete system compromise

🟠

Likely Case

Denial of service through application crashes or memory corruption

🟢

If Mitigated

Application crash without code execution if memory protections are enabled

🌐 Internet-Facing: HIGH - QuickJS is often used in web servers, APIs, and embedded systems exposed to untrusted input
🏢 Internal Only: MEDIUM - Internal applications using QuickJS could be exploited by authenticated users

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ⚠️ Yes
Complexity: MEDIUM

Exploitation requires crafting specific large numeric strings but doesn't require authentication

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Check QuickJS changelog for specific version

Vendor Advisory: https://bellard.org/quickjs/Changelog

Restart Required: Yes

Instructions:

1. Update QuickJS to latest version from official repository
2. Recompile any applications using QuickJS
3. Restart affected services

🔧 Temporary Workarounds

Input validation

all

Validate BigInt string length before processing

Implement input validation to reject strings longer than 79,536,431 digits

Disable BigInt parsing

all

Disable BigInt functionality if not required

Configure QuickJS to disable BigInt support

🧯 If You Can't Patch

  • Implement strict input validation for all BigInt string inputs
  • Use memory protection mechanisms like ASLR and DEP

🔍 How to Verify

Check if Vulnerable:

Test with a crafted BigInt string of 79,536,432+ digits and monitor for crashes

Check Version:

quickjs --version or check embedded version in applications

Verify Fix Applied:

Verify QuickJS version is updated and test with same crafted input

📡 Detection & Monitoring

Log Indicators:

  • Application crashes
  • Memory access violation errors
  • Unusual large numeric string inputs

Network Indicators:

  • Large payloads containing numeric strings

SIEM Query:

search 'quickjs' AND ('crash' OR 'segmentation fault' OR 'access violation')

🔗 References

📤 Share & Export