CVE-2026-13323: Open VSX HTML Injection & Session Hijacking Supply Chain Risk
Open VSX Registry, the extension marketplace used by VS Code and compatible editors, has a vulnerability in how it serves user-uploaded HTML files. An attacker with a publisher account can upload a malicious HTML file disguised as part of an extension package. When an authenticated user visits that file's link, the browser treats it as belonging to the open-vsx.org website rather than a separate, untrusted origin. This allows the attacker to steal the user's session tokens, create permanent access tokens for future unauthorized access, and publish fake or malicious extension updates that would reach all downstream users of that extension across VS Code, VSCodium, Cursor, Windsurf, and other compatible editors—a classic supply chain attack vector.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 4.1 MEDIUM · CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:N/I:L/A:N
- Weaknesses (CWE)
- CWE-79
- Affected products
- 1 configuration(s)
- Published / Modified
- 2026-07-01 / 2026-07-06
NVD description (verbatim)
In Open VSX Registry before 1.0.2, the /vscode/unpkg/ endpoint serves user-supplied HTML files with Content-Type: text/html and without a Content-Security-Policy or Content-Disposition: attachment response header. An unauthenticated attacker can register a publisher account, upload a VSIX containing a crafted HTML payload, and induce an authenticated user to visit the resulting URL. The browser renders the file inline in the open-vsx.org origin context, enabling session token exfiltration, persistent Personal Access Token (PAT) generation, and unauthorized publication of malicious extension versions. Because Open VSX extensions are distributed to VS Code, VSCodium, Cursor, Windsurf, and compatible editors, a compromised extension update constitutes a supply chain attack against all downstream users.
3 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
The vulnerability stems from improper HTTP response headers on the /vscode/unpkg/ endpoint. User-supplied HTML files are served with Content-Type: text/html but lack both Content-Security-Policy (CSP) and Content-Disposition: attachment headers. Browsers therefore render the HTML inline within the open-vsx.org security context, permitting same-origin requests (including authenticated session cookies and tokens) to be exfiltrated by injected scripts. An attacker registers a publisher account, uploads a VSIX containing crafted HTML, and socializes the resulting URL. Upon visitation by an authenticated extension maintainer or moderator, malicious JavaScript executes with full access to the user's session and can programmatically interact with Open VSX APIs to create PATs, modify extension metadata, or push malicious versions. The supply chain risk is acute because extension distribution pipelines funnel updates to millions of editor instances.
Business impact
For Open VSX maintainers and the Eclipse Foundation, a successful attack undermines the integrity and trustworthiness of the entire extension ecosystem. For extension publishers, compromised accounts lead to loss of control over their intellectual property and user trust. For end users and organizations deploying VS Code variants, a poisoned extension update represents a persistent backdoor or data exfiltration vector embedded in development toolchains. Given that developers often run extensions with broad system permissions, a supply chain compromise can escalate to code execution on developer machines and CI/CD pipelines, with downstream impact on all software built by affected teams.
Affected systems
Open VSX Registry versions prior to 1.0.2 are affected. The vulnerability impacts all editor clients that consume Open VSX extensions, including VS Code, VSCodium, Cursor, Windsurf, and any third-party editor with Open VSX integration. Publishers and moderators with authenticated sessions on open-vsx.org are the primary targets, but end users installing affected extensions face downstream compromise risk.
Exploitability
Exploitation requires an attacker to register a free publisher account on Open VSX Registry—a low barrier to entry—and upload a VSIX containing an HTML payload. The attacker then must convince an authenticated Open VSX user (typically an extension maintainer or moderator) to click a link to the malicious HTML file. The attack does not require network-level access and relies on social engineering rather than complex exploitation. The CVSS score of 4.1 (MEDIUM) reflects the requirement for user interaction and the limited immediate scope to the affected user's own session, though the supply chain risk potential is strategically significant.
Remediation
Upgrade Open VSX Registry to version 1.0.2 or later, which applies proper HTTP security headers to the /vscode/unpkg/ endpoint. Specifically, the fix should include setting Content-Disposition: attachment for HTML files and implementing a restrictive Content-Security-Policy to prevent inline script execution. Additionally, Open VSX operators should review and tighten access controls on publisher accounts, implement rate-limiting on account creation, and consider multi-factor authentication for maintainers and moderators.
Patch guidance
Apply the update to Open VSX Registry 1.0.2 as soon as feasible. If you operate an Open VSX instance, refer to the official Eclipse Foundation release notes and deployment documentation to ensure the patch is correctly applied. If you are an extension publisher or maintainer, assume your session may have been exposed if you visited suspicious HTML links on open-vsx.org prior to the patch deployment; rotate your PATs and session tokens immediately. Monitor account activity logs for unauthorized access or extension version changes.
Detection guidance
Monitor HTTP access logs on the /vscode/unpkg/ endpoint for unusual HTML file requests, especially those followed by API calls to generate tokens or publish extensions from unexpected accounts. Search logs for Content-Disposition headers that are absent or improperly configured. Audit Open VSX accounts for creation of new PATs or changes to extension metadata in a short time window. On the client side, monitor VS Code and editor logs for unexpected extension update downloads or installations. Monitor network traffic for exfiltration of session-like strings from development machines to external hosts.
Why prioritize this
Although the CVSS score is MEDIUM (4.1), the attack pattern—combining low exploitation difficulty, user interaction, and supply chain risk—warrants prioritization for infrastructure operators and extension maintainers. A single compromised high-profile extension can poison millions of editor installations. Patch deployment should be expedited to close the window of opportunity for attackers to harvest maintainer credentials.
Risk score, explained
The CVSS 3.1 score of 4.1 reflects Attack Vector: Network, Attack Complexity: Low, Privileges Required: Low (attacker needs a free publisher account), User Interaction: Required, and Scope: Changed with impact limited to Integrity (unauthorized token generation and extension modification). The score does not fully capture the downstream supply chain and CI/CD risks posed by a compromised extension, which organizational risk models should factor in separately. Organizations with many developers relying on Open VSX extensions should consider this a higher priority within their environment.
Frequently asked questions
Can an attacker exploit this without creating a publisher account?
No. The vulnerability requires an attacker to register and authenticate as a publisher on Open VSX Registry in order to upload a VSIX file containing the malicious HTML. Unauthenticated users cannot upload extensions.
If I have a personal access token (PAT) stolen, what should I do?
Immediately revoke the compromised PAT in your Open VSX account settings and generate a new one. Review your account's recent activity and audit any extension versions published or modified while the PAT may have been exposed. If you use the same token elsewhere, rotate it across all systems. Notify users of affected extensions if you suspect unauthorized modifications.
Are users who simply install extensions from Open VSX at risk, or only maintainers?
Primarily maintainers and authenticated moderators are at risk of direct credential compromise. However, end users who install extensions become indirectly at risk if an extension maintainer's account is compromised and used to push malicious updates. Patching to 1.0.2 reduces the attack surface for initial compromise of maintainer sessions.
Do I need to patch if I don't operate an Open VSX instance?
If you host or maintain an Open VSX Registry instance (such as a private enterprise registry), patch immediately. If you are an extension publisher or end user consuming extensions from open-vsx.org, the primary mitigation is the patch deployed by the Eclipse Foundation to open-vsx.org itself. However, if you operate a mirror or fork of Open VSX, ensure you apply the same security headers independently.
This analysis is provided for informational purposes. CVSS scores, KEV status, and patch details are sourced from the official CVE record and vendor advisories; verify against the latest authoritative sources before making remediation decisions. The supply chain risks and downstream impacts described are informed by the vulnerability mechanism but should be assessed within your specific organizational context and deployment topology. No exploit code or weaponization details are included. Organizations should conduct independent risk assessments and engage vendor support for deployment-specific guidance. Source: NVD (public-domain), retrieved 2026-08-10. Analysis generated by SEC.co (claude-haiku-4-5).
Related vulnerabilities
- CVE-2026-4983MEDIUMOpen VSX Registry Stored XSS via Unsanitized SVG Icons
- CVE-2016-20070MEDIUMPrivilege Escalation & Stored XSS in WordPress Booking Calendar Contact Form 1.0.23
- CVE-2018-25384MEDIUMStored XSS in Wikidforum 2.20 Allows Authenticated Attackers to Inject Malicious Scripts
- CVE-2019-25731MEDIUMStored XSS in Zuz Music 2.1 Contact Form
- CVE-2019-25737MEDIUMStored XSS in Live Chat Unlimited 2.8.3 – Admin Session Compromise
- CVE-2019-25739MEDIUMGigToDo 1.3 Stored XSS Vulnerability in Proposal Descriptions
- CVE-2019-25742MEDIUMStored XSS in Zoner Real Estate WordPress Theme 4.1.1 – Admin Account Compromise Risk
- CVE-2019-25743MEDIUMWordPress Soliloquy Lite 2.5.6 Stored XSS Vulnerability