CVE-2025-62495
Last modified
CVE-2025-62495 is a high-severity vulnerability rated 8.8/10 on the CVSS scale. An integer overflow vulnerability exists in the QuickJS regular expression engine (libregexp) due to an inconsistent representation of the bytecode buffer size. * The regular expression bytecode is stored in a DynBuf structure, which correctly uses a $\text{size}\_\text{t}$ (an unsigned type, typically 64-bit) for its size member. * However, several functions, such as re_emit_op_u32 and other internal parsing routines, incorrectly cast or store this DynBuf $\text{size}\_\text{t}$ value into a signed int (typically 32-bit). * When a large or complex regular expression (such as those generated by a recursive pattern in a Proof-of-Concept) causes the bytecode size to exceed $2^{31}$ bytes (the maximum positive value for a signed 32-bit integer), the size value wraps around, resulting in a negative integer when stored in the int variable (Integer Overflow). * This negative value is subsequently used in offset calculations. For example, within functions like re_parse_disjunction, the negative size is used to compute an offset (pos) for patching a jump instruction. * This negative offset is then incorrectly added to the buffer pointer (s->byte\_code.buf + pos), leading to an out-of-bounds write on the first line of the snippet below: put_u32(s->byte_code.buf + pos, len);. EPSS estimates a 0.42% chance of exploitation in the next 30 days.
Description
An integer overflow vulnerability exists in the QuickJS regular expression engine (libregexp) due to an inconsistent representation of the bytecode buffer size. * The regular expression bytecode is stored in a DynBuf structure, which correctly uses a $\text{size}\_\text{t}$ (an unsigned type, typically 64-bit) for its size member. * However, several functions, such as re_emit_op_u32 and other internal parsing routines, incorrectly cast or store this DynBuf $\text{size}\_\text{t}$ value into a signed int (typically 32-bit). * When a large or complex regular expression (such as those generated by a recursive pattern in a Proof-of-Concept) causes the bytecode size to exceed $2^{31}$ bytes (the maximum positive value for a signed 32-bit integer), the size value wraps around, resulting in a negative integer when stored in the int variable (Integer Overflow). * This negative value is subsequently used in offset calculations. For example, within functions like re_parse_disjunction, the negative size is used to compute an offset (pos) for patching a jump instruction. * This negative offset is then incorrectly added to the buffer pointer (s->byte\_code.buf + pos), leading to an out-of-bounds write on the first line of the snippet below: put_u32(s->byte_code.buf + pos, len);
Metrics
CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS: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
Weakness Enumeration
Affected Software
| Vendor | Product | Versions |
|---|---|---|
| Quickjs Project | Quickjs | < 2025-09-13 |
References
- https://bellard.org/quickjs/ChangelogRelease Notes
- https://issuetracker.google.com/434196926Exploit, Issue Tracking
Timeline
- Published
- Last Modified
- Status
- Analyzed
Frequently Asked Questions
What is CVE-2025-62495?
How severe is CVE-2025-62495?
How do I fix CVE-2025-62495?
How Strix Helps
- How Strix found a critical auth bypass in etcdStrix autonomously discovered a critical authentication bypass in etcd, later designated CVE-2026-33413.
- Autonomous PentestingAI agents that find and validate exploitable vulnerabilities like this one across your applications.
- PR ReviewsPentest every pull request so vulnerable code is caught before it ships to production.
- AI Penetration TestingHow AI-driven penetration testing continuously covers your attack surface.
Related CVEs from 2025
- CVE-2025-6249An authentication bypass vulnerability was reported in FileZ…8.4
- CVE-2025-62490In quickjs, in js_print_object, when printing an array, the …8.8
- CVE-2025-62491A Use-After-Free (UAF) vulnerability exists in the QuickJS e…8.8
- CVE-2025-62492A vulnerability stemming from floating-point arithmetic prec…6.5
- CVE-2025-62493A vulnerability exists in the QuickJS engine's BigInt string…6.5
- CVE-2025-62494A type confusion vulnerability exists in the handling of the…8.8
- CVE-2025-62496A vulnerability exists in the QuickJS engine's BigInt string…8.8
- CVE-2025-62497Cross-site request forgery vulnerability exists in SNC-CX600…6.5
- CVE-2025-62498A relative path traversal (ZipSlip) vulnerability was discov…8.8
- CVE-2025-62499Movable Type contains a stored cross-site scripting vulnerab…4.8
- CVE-2025-6250Prior to 25.4.270.0, when wmic.exe is elevated with a full a…6.7
- CVE-2025-62500An out-of-bounds read vulnerability exists in the EMF functi…7.1
Are you affected by CVE-2025-62495?
Run a free Strix scan to check your systems for this vulnerability.
Scan your code nowSource: NVD / NIST
