CVE-2026-3884: 
Linux Debian vulnerability analysis and mitigation

Overview

CVE-2026-3884 is a Cross-Site Scripting (XSS) vulnerability in the spin.js npm package affecting all versions before 3.0.0. The flaw exists in the spin() function and is chained with a prototype pollution precondition — an attacker must first pollute Object.prototype via a crafted URL before triggering arbitrary JavaScript execution in a victim's browser. It was disclosed on February 22, 2026, published to NVD on March 11, 2026, and assigned a CVSS v3.1 score of 6.1 (Medium) by Snyk (Snyk Advisory).

Technical details

The vulnerability is classified as CWE-79 (Improper Neutralization of Input During Web Page Generation) and involves a two-stage attack chain. First, an attacker must achieve prototype pollution by injecting an arbitrary key-value pair into Object.prototype through a crafted URL — this contaminates the shared JavaScript object prototype. Subsequently, when the spin() function is called on a target element, the polluted prototype allows creation of more than one alert per target element, enabling execution of attacker-controlled JavaScript in the user's browser context. A proof-of-concept demonstrating this chain was published by researcher Eric Cornelissen (Snyk Advisory, GitHub Gist PoC).

Impact

Successful exploitation allows an attacker to execute arbitrary JavaScript in the context of a victim user's browser session, resulting in limited confidentiality and integrity impacts (CVSS SC:L/SI:L). Potential consequences include session cookie theft, credential harvesting, UI redirection, and delivery of malicious content to users of affected web applications. Availability is not impacted, and exploitation requires active user interaction with a crafted URL, limiting the attack's reach to users who can be socially engineered into visiting a malicious link (Snyk Advisory).

Exploitability

A proof-of-concept exploit exists and was published by Eric Cornelissen and Samuel Kajava, credited with the discovery (Snyk Advisory). The EPSS score is approximately 0.029% (12th percentile), indicating a low current probability of active exploitation in the wild. The CVSSv4 exploit maturity is rated "Proof of Concept." There is no evidence of in-the-wild exploitation, threat actor attribution, or inclusion in the CISA Known Exploited Vulnerabilities (KEV) catalog at this time. The vulnerability is detectable via Tenable Nessus plugin 302200 (Tenable).

Exploitation steps

  1. Identify a target application: Find a web application that uses spin.js versions prior to 3.0.0 and passes URL-controlled parameters into JavaScript object properties.
  2. Craft a prototype pollution payload: Construct a URL with query parameters that set an arbitrary key on Object.prototype, for example: ?__proto__[key]=value or ?constructor[prototype][key]=value, targeting the application's URL parsing logic.
  3. Deliver the crafted URL to a victim: Socially engineer a target user into clicking the malicious URL (e.g., via phishing email or malicious link), as user interaction is required.
  4. Trigger the spin() function: Once the victim loads the page with the polluted prototype, the application's call to spin() on a target DOM element is affected by the polluted prototype, allowing more than one alert to be created per target element.
  5. Execute arbitrary JavaScript: The prototype pollution causes the spin() function to process attacker-controlled values, resulting in execution of arbitrary JavaScript in the victim's browser — enabling session theft, credential harvesting, or further malicious actions (Snyk Advisory, GitHub Gist PoC).

Indicators of compromise

  • Network: HTTP requests containing prototype pollution patterns in URL query parameters (e.g., __proto__, constructor[prototype], %5B__proto__%5D) directed at pages using spin.js.
  • Logs: Web server access logs showing requests with encoded prototype pollution payloads in query strings to pages that invoke the spin.js spin() function.
  • Browser/Client-Side: Unexpected JavaScript execution or alert dialogs triggered on pages using spin.js; unusual outbound requests from the browser to attacker-controlled domains following interaction with a crafted URL.
  • Dependency Audit: Presence of spin.js versions below 3.0.0 in package.json, package-lock.json, or node_modules directories of Node.js applications.

Mitigation and workarounds

The fix is to upgrade spin.js to version 3.0.0 or higher, which addresses the XSS vulnerability (Snyk Advisory). No configuration-based workaround is documented; upgrading is the recommended and only confirmed remediation. Organizations should audit their Node.js dependency trees for spin.js versions below 3.0.0 using tools such as npm audit or Snyk, and apply the update promptly. Implementing a strict Content Security Policy (CSP) can serve as a defense-in-depth measure to limit the impact of any XSS exploitation.

Community reactions

The vulnerability was credited to researchers Eric Cornelissen and Samuel Kajava, with Snyk serving as the CNA for the CVE assignment (Snyk Advisory). A brief technical write-up was published at infinitsec.net covering the prototype pollution XSS chain. No significant vendor statements, major media coverage, or notable community debate has been observed beyond standard vulnerability database aggregation.

Additional resources

Linux Distribution fix status

Fix availability across major Linux distributions and their releases.

Debian

Affected

bookworm

libjs-spin.js

Affected

sid

libjs-spin.js

Affected

trixie

libjs-spin.js

Affected

Ubuntu

Unknown

bionic (esm-apps)

libjs-spin.js

Unknown

devel

libjs-spin.js

Unknown

focal (esm-apps)

libjs-spin.js

Unknown

jammy

libjs-spin.js

Unknown

jammy (esm-apps)

libjs-spin.js

Unknown

noble

libjs-spin.js

Unknown

noble (esm-apps)

libjs-spin.js

Unknown

resolute

libjs-spin.js

Unknown

Source: This report was generated using AI

Related Linux Debian vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-116612HIGH7.8
  • Linux Debian logoLinux Debian
  • gstreamer-editing-services1.0
NoYesOct 26, 2026
CVE-2026-115909HIGH7.5
  • Linux Debian logoLinux Debian
  • rust-zip
NoNoOct 26, 2026
CVE-2026-115907HIGH7.5
  • Linux Debian logoLinux Debian
  • rust-zip
NoNoOct 26, 2026
CVE-2026-115910MEDIUM6.8
  • Python logoPython
  • social-auth-core
NoYesOct 26, 2026
CVE-2026-2270MEDIUM5.9
  • NixOS logoNixOS
  • kubernetes
NoYesOct 26, 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