
Cloud Vulnerability DB
A community-led vulnerabilities database
CVE-2026-71430 is a Denial of Service vulnerability in node-re2, the RE2 regular expression bindings for Node.js (npm package re2). The flaw causes an uncatchable process abort when a global regex replacement using output-amplifying templates (such as $' or $`) produces a result string exceeding V8's maximum string length. All versions up to and including 1.25.0 are affected; the issue was fixed in version 1.25.1. It was originally published on July 7, 2026, and added to the GitHub Advisory Database on August 6, 2026, with a CVSS v3.1 base score of 6.2 (Medium) (GitHub Advisory, Red Hat Bugzilla).
The root cause lies in the WrappedRE2::Replace function in lib/replace.cc, which builds the replacement result and passes it to V8 via .ToLocalChecked() without first checking whether the returned MaybeLocal is empty — classified as CWE-617 (Reachable Assertion) and CWE-131 (Incorrect Calculation of Buffer Size). When a global replace uses an output-amplifying template like $' (text after match) or $` (text before match), the output grows quadratically — O(input²) — with input size. For inputs of approximately 40,000+ single-character matches, the result exceeds V8's String::kMaxLength (~536,870,888 characters on 64-bit systems), causing Nan::New(result) to return an empty MaybeLocal; the unchecked .ToLocalChecked() then triggers v8::Utils::ReportApiFailure, resulting in a FATAL ERROR and abort() (SIGABRT, exit code 134). Unlike the built-in JavaScript regex engine, which throws a catchable RangeError: Invalid string length, this crash cannot be intercepted by try/catch or Node.js domains (GitHub Advisory).
Successful exploitation results in a complete, uncatchable termination of the Node.js process or worker thread, causing a full denial of service. Because the abort is triggered at the native layer via SIGABRT, no JavaScript error handling mechanism — including try/catch, process.on('uncaughtException'), or domains — can prevent the crash. There is no confidentiality or integrity impact; however, the availability impact is high, as a single malicious request can take down the entire application process. This is particularly severe for applications that adopted node-re2 specifically to safely process untrusted user input (GitHub Advisory, Red Hat Bugzilla).
A public proof-of-concept (PoC) is included in the security advisory and requires only a few lines of Node.js code using the re2 npm package. The NVD SSVC assessment classifies exploitation as "poc" available, though not automatable. The EPSS score is approximately 0.11% (1st percentile), indicating low current probability of widespread exploitation. There is no evidence of in-the-wild exploitation, no known threat actor attribution, and the vulnerability is not listed in the CISA KEV catalog (GitHub Advisory).
re2 npm package (version ≤ 1.25.0) and exposes an endpoint where user-controlled input is passed to a String.prototype.replace() call using a RE2 regex with a global flag.'a'.repeat(50000)) to maximize the quadratic output growth.$' (text after match) or $` (text before match), either by controlling the template directly or by influencing the input processed by such a template.WrappedRE2::Replace to build a result string exceeding V8's String::kMaxLength (~536,870,888 chars)..ToLocalChecked() call triggers FATAL ERROR: v8::ToLocalChecked Empty MaybeLocal, causing the Node.js process to exit with SIGABRT (exit code 134), taking down the entire application (GitHub Advisory).FATAL ERROR: v8::ToLocalChecked Empty MaybeLocal in stderr or application logs.WrappedRE2::Replace at the top; repeated process restarts by a process manager (e.g., PM2, systemd) following crashes.Upgrade the re2 npm package to version 1.25.1 or later, which checks the returned MaybeLocal on every result path in WrappedRE2::Replace and throws a catchable RangeError: Invalid string length instead of aborting the process. No API changes are introduced, so the upgrade can be performed with a plain npm upgrade re2. As a temporary workaround where upgrading is not immediately possible, applications should validate and limit the size of user-controlled inputs before passing them to RE2 replace operations, and avoid using output-amplifying templates ($' or $`) with untrusted input (GitHub Advisory, Red Hat Bugzilla).
The vulnerability was reported by researcher ataberk-xyz and published by the uhop/node-re2 maintainer. Red Hat triaged the issue with high priority and severity in their Bugzilla tracker. No significant broader media coverage or notable community debate has been observed beyond standard vulnerability database aggregation (GitHub Advisory, Red Hat Bugzilla).
Source: This report was generated using AI
Free Vulnerability Assessment
Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.
Get a personalized demo
"Best User Experience I have ever seen, provides full visibility to cloud workloads."
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
"We know that if Wiz identifies something as critical, it actually is."