CVE-2025-50537: 
JavaScript vulnerability analysis and mitigation

Overview

CVE-2025-50537 is a stack overflow vulnerability in ESLint's serialization module (eslint/lib/shared/serialization.js) affecting all versions prior to 9.26.0. The flaw was reported on April 22, 2025 by researcher lyyffee and publicly disclosed on January 26, 2026. It affects ESLint (the Node.js linting tool) as well as downstream IBM products including IBM API Connect, IBM watsonx Orchestrate with watsonx Assistant Cartridge, and IBM Instana Observability (OnPrem). It carries a CVSS v3.1 base score of 5.5 (Medium) (ESLint Issue, IBM Advisory).

Technical details

The root cause is uncontrolled recursion (CWE-674) in the isSerializable() function within eslint/lib/shared/serialization.js. When RuleTester.run() validates test cases, it calls checkDuplicateTestCase(), which invokes isSerializable() to determine whether test case objects can be serialized. The function recursively traverses object properties without any cycle detection; if a test case object contains a circular reference (e.g., obj.self = obj), the function enters infinite recursion, exhausting the call stack and causing a RangeError: Maximum call stack size exceeded. Exploitation requires the attacker to supply a crafted test case object with circular references to the RuleTester.run() method. A proof-of-concept is publicly available (ESLint Issue, PoC Gist).

Impact

Successful exploitation results in a Denial of Service (DoS) by crashing the ESLint process with a stack overflow error, rendering the linter unavailable. There is no confidentiality or integrity impact — the vulnerability is limited to availability (CVSS A:H, C:N, I:N). In CI/CD pipelines or development environments where ESLint is invoked automatically, a crash could disrupt build processes or automated code quality checks (ESLint Issue, PoC Gist).

Exploitability

A public proof-of-concept is available via a GitHub Gist published by the original reporter and referenced in the ESLint issue tracker. There is no evidence of in-the-wild exploitation at this time, and the vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. The EPSS score is approximately 0.013% (0.000130), indicating very low probability of exploitation in the near term. Exploitation requires local access and user interaction (supplying crafted input to RuleTester.run()), limiting its practical attack surface (PoC Gist, ESLint Issue).

Exploitation steps

  1. Identify target: Confirm the target environment uses ESLint prior to version 9.26.0 with access to the RuleTester API (e.g., a custom ESLint rule test suite).
  2. Craft circular reference object: Create a JavaScript object that references itself, e.g.:
const obj = { a: 1 };
obj.self = obj;
  1. Inject into RuleTester: Supply the circular reference object as part of a test case passed to RuleTester.run(), for example as an option or code property in the valid or invalid test arrays.
  2. Trigger stack overflow: When RuleTester.run() executes, it calls checkDuplicateTestCase(), which calls isSerializable() on the crafted object. The function recurses infinitely through the circular reference, causing a RangeError: Maximum call stack size exceeded and crashing the ESLint process (ESLint Issue, PoC Gist).

Indicators of compromise

  • Logs: Node.js process crash logs containing RangeError: Maximum call stack size exceeded originating from eslint/lib/shared/serialization.js or isSerializable().
  • Process: Unexpected termination of the ESLint process or CI/CD pipeline failures attributed to a stack overflow error during rule test execution.
  • File System: Presence of unusual or externally supplied ESLint rule test files containing objects with self-referential properties passed to RuleTester.run().

Mitigation and workarounds

Upgrade ESLint to version 9.26.0 or later, which includes a fix for the uncontrolled recursion in isSerializable(). As a workaround, restrict access to the RuleTester.run() method so that only trusted, internally controlled test cases are processed. IBM has released patches for affected products: IBM API Connect (see nodes 7273320 and 7273485), IBM watsonx Orchestrate with watsonx Assistant Cartridge (nodes 7273279 and 7273280), and IBM Instana Observability OnPrem (IBM Advisory, IBM API Connect, IBM Instana).

Additional resources

Linux Distribution fix status

Fix availability across major Linux distributions and their releases.

Ubuntu

Unknown

devel

eslint

Unknown

focal (esm-apps)

eslint

Unknown

jammy

eslint

Unknown

jammy (esm-apps)

eslint

Unknown

noble

eslint

Unknown

noble (esm-apps)

eslint

Unknown

resolute

eslint

Unknown

resolute (esm-apps)

eslint

Unknown

RHEL / CentOS

Affected

OpenShift

openshift4/ose-console

Affected

RHEL 8

firefox.src

Affected

RHEL 9

firefox.src

Affected

RHEL 10

firefox.src

Affected

Source: This report was generated using AI

Related JavaScript vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

GHSA-966w-4vpf-p7hcHIGH7.1
  • JavaScript logoJavaScript
  • @aloma.io/aloma
NoYesOct 25, 2026
GHSA-mrwp-f3q8-3g9pMEDIUM5.9
  • JavaScript logoJavaScript
  • follow-redirects
NoYesOct 25, 2026
GHSA-hfm3-x63j-7fxpHIGHN/A
  • JavaScript logoJavaScript
  • @payload-auth-link/migrate
NoYesOct 25, 2026
GHSA-6244-vvv9-76f5MEDIUMN/A
  • JavaScript logoJavaScript
  • @payload-auth-link/plugin
NoYesOct 25, 2026
GHSA-q53q-qg98-p9jfHIGHN/A
  • JavaScript logoJavaScript
  • llm-fw
NoYesOct 25, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Additional Wiz resources

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management