CVE-2025-59466: Uncatchable "Maximum call stack size exceeded" error on Node.js via async_hooks leads to process crashes bypassing error handlers
We have identified a bug in Node.js error handling where "Maximum call stack size exceeded" errors become uncatchable when asynchooks.createHook() is enabled. Instead of reaching process.on('uncaughtException'), the process terminates, making the crash unrecoverable. Applications that rely on AsyncLocalStorage (v22, v20) or asynchooks.createHook() (v24, v22, v20) become vulnerable to denial-of-service crashes triggered by deep recursion under specific conditions.
Other sources
We have identified a bug in Node.js error handling where "Maximum call stack size exceeded" errors become uncatchable when asynchooks.createHook() is enabled. Instead of reaching process.on('uncaughtException'), the process terminates, making the crash unrecoverable. Applications that rely on AsyncLocalStorage (v22, v20) or asynchooks.createHook() (v24, v22, v20) become vulnerable to denial-of-service crashes triggered by deep recursion under specific conditions.
This patch improves recoverability in one edge case, but it does not remove the broader risk. Recovery from space exhaustion is unspecified, best‑effort behavior and is not a reliable basis for availability or security. In availability‑critical paths where recursion depth may be influenced by untrusted input, prefer input validation and designs that bound or avoid recursion rather than depending on stack space exhaustion behavior or the lack of tail‑call optimizations in the runtime/engine. See this blog post for details.
— Node.Js
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 20.20.0Fixed in 22.22.0Fixed in 24.13.0Fixed in 25.3.0 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 20.20.0 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 22.22.0 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 24.13.0 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 25.3.0 - Compensating control
In availability-critical paths where recursion depth may be influenced by untrusted input, validate input and use designs that bound or avoid recursion rather than relying on stack-space exhaustion behavior or lack of tail-call optimization.
Event History
Parent advisories
This vulnerability appears in the following advisories.
Frequently Asked Questions
What is the severity of CVE-2025-59466?
CVE-2025-59466 has a high severity due to the uncatchable 'Maximum call stack size exceeded' errors that can lead to application crashes.
How do I fix CVE-2025-59466?
To resolve CVE-2025-59466, upgrade Node.js to versions 20.0.0 and above, or 22.0.0 and above where the issue has been patched.
Which Node.js versions are affected by CVE-2025-59466?
CVE-2025-59466 affects Node.js versions between 20.0.0 and 24.0.0, including versions 20.0.0 to 22.0.0.
What happens when CVE-2025-59466 is triggered?
When CVE-2025-59466 is triggered, the process abruptly terminates instead of invoking the usual error handling mechanisms.
Is there a workaround for CVE-2025-59466 if immediate upgrade isn't possible?
An effective workaround for CVE-2025-59466 is to disable async_hooks.createHook() in your Node.js application to prevent uncatchable errors.