Skip to content

Back to the catalog

Socket: Open VSX Unblocks Extension IDs Used in Malware Campaign
socket.devarticle

Socket: Open VSX Unblocks Extension IDs Used in Malware Campaign

Socket documents how Open VSX unblocked three extension IDs (AlDuncanson.react-hooks-snippets, magne-sjaastad.opm-flow-editor-support, rumbledb.jsoniq-vscode) that were used by impostors in a 77-extension "evil-twin" namesquatting campaign, after their legitimate publishers reclaimed the names. The piece highlights a structural flaw in Open VSX's blocklist, a bare array of ID strings with no version/hash/date, meaning once an ID is unblocked and reused legitimately, downstream security tools relying only on current ID lists can't distinguish the deleted malware from the new legitimate release. Socket engineer John Tuckner's research found 491 such squatted Open VSX IDs impersonating popular VS Code Marketplace extensions over the past year.

TL;DR Open VSX unblocked three extension IDs reclaimed by legitimate publishers after they were used in a 77-package evil-twin malware campaign, exposing a design flaw in ID-only blocklists.
Document

What it is

Socket's follow-up (by Sarah Gooding) documenting the aftermath of the 77-extension "evil-twin" namesquatting campaign on Open VSX (originally documented by Manifold Security, packages removed by August 3). Between August 16–20, Open VSX removed three IDs from its malicious-extension list so their real owners could reclaim them: AlDuncanson.react-hooks-snippets, magne-sjaastad.opm-flow-editor-support, and rumbledb.jsoniq-vscode. The article's payload for an engineer is the specific version numbers and the precedents that let you tell malicious history from legitimate reuse.

How it works

Open VSX's public extension-control file lists malicious extensions as a bare array of ID strings — no version, hash, publisher, repo, or date. That is unambiguous while every version under an ID is malicious, but breaks when the legitimate owner reclaims the name: leaving the ID blocks the real extension, removing it un-flags the shared identifier. The Git history preserves the add/remove events, but any tool storing only the current list loses the fact that malware once used that ID.

Preconditions / Affected

Matters if your security tooling or internal inventory identifies Open VSX extensions by ID alone. The malicious artifacts were published as version 0.0.1; the legitimate reclaimed releases are magne-sjaastad.opm-flow-editor-support@0.9.0 (Aug 21), RumbleDB.jsoniq-vscode@1.6.0 (Aug 23). React Hooks Snippets was unblocked but had no legitimate Open VSX listing as of publication — the ID resolves to nothing, not a vetted package. The legitimate publishers were never compromised; attackers grabbed names established in the VS Code Marketplace but unclaimed on Open VSX.

What to do

Do not treat presence/absence on the current malicious-extension list as ground truth. Reconcile against the Git history of the control file, and key your inventory on version + file hash, not ID. When auditing, treat these known-legitimate reclamations as distinct from their 0.0.1 malware predecessors, and note the earlier precedent carbon-lang.carbon-vscode (blocked March 17, removed April 1, official extension live next day).

Caveats

  • The article explicitly flags list removals that are not reclamations: Anthropic.claude-code, juanblanco.solidity, and donebd.vscode-keypromoter were described as false positives/corrections. Two more — rbxdev.rbxdev-ls and TASKING-winIDEA.TASKING-winIDEA — were removed with no public explanation. A blocklist deletion alone does not prove a namespace was restored to its legitimate owner.
  • Socket declines to count Carbon among the three confirmed August restorations because the public record never ties it to a named campaign.
  • The scale figure is Tuckner's July 31 count: 491 squatted Open VSX IDs over the prior year (338 in 2026), of which 415 impersonated extensions in Microsoft's top 10,000. Open VSX had announced no general policy as of publication.

Organisations named here

  • evil-twin campaign
  • John Tuckner

Technologies named here

  • AlDuncanson.react-hooks-snippets
  • Open VSX
  • Socket
  • magne-sjaastad.opm-flow-editor-support
  • rumbledb.jsoniq-vscode
  • Manifold Security
  • carbon-lang.carbon-vscode
  • Anthropic Claude Code
  • juanblanco.solidity
  • donebd.vscode-keypromoter
  • rbxdev.rbxdev-ls
  • TASKING-winIDEA.TASKING-winIDEA
  • VS Code Marketplace
  • Visual Studio Code

Techniques named here

  • Namesquatting / evil-twin extension impersonation
  • ID-only blocklist ambiguity

Threat actors named here

  • Evil-twin extension campaign