Build1 distinct publisher2 min readUpdated
Open VSX's malicious list is an array of bare identifiers, so freeing an impersonated publisher also erases the record that the same name once shipped malware.
The Engineer · Build desk
Compiled by The EngineerSomething wrong?How this is made
An identifier is the weakest thing a registry can revoke. Open VSX's public extension-control file represents malicious extensions as an array of ID strings, with no version, no file hash, no publisher account, no repository, and no date attached to an entry [8]. That is sufficient while every build under a name is hostile. It stops being sufficient the day the copied project shows up holding the same name.
RumbleDB's case shows where enforcement actually sits in the pipeline. The legitimate JSONiq and XQuery extension was uploaded, then vanished from the registry a few hours later, because rumbledb.jsoniq-vscode was still on the malicious list [7]. The publish succeeded; distribution did not. Al Duncan's first attempt failed earlier and more loudly, with the registry answering that AlDuncanson.react-hooks-snippets is a known malicious extension [5].
The clock is worth reading closely. Open VSX had removed all 77 packages and added their IDs to the list by August 3 [4], and the three removals landed on August 16, 18 and 20 [1], so the names sat blocked against their own owners for 13, 15 and 17 days after the malicious artifacts were already gone [13]. Once cleared, shipping was quick: the OPM maintainer's August 16 request produced a working 0.9.0 on August 21, five days later [14], and RumbleDB's 1.6.0 went live three days after its ID came off the list [15].
Version numbers are where the ambiguity bites. The deleted impostor packages carried 0.0.1; the legitimate releases now occupying two of those names are 0.9.0 and 1.6.0 [9]. Anything that recorded only the string, and there is a lot of tooling that records only the string, cannot tell those apart. The removals are preserved in the file's Git history [9], which means the authoritative record of what was malicious is now a commit log rather than the artifact the registry serves to scanners.
None of the three publishers was compromised or involved; the attackers took names already established in Microsoft's VS Code Marketplace that had not yet been claimed on Open VSX [10]. That is the reusable part of the campaign, and it is not scarce. Socket engineer John Tuckner counted 491 Open VSX IDs claimed by attackers and researchers over the previous year in a July 31 post, 338 of them in 2026 [12], which puts roughly 69 percent of the total in that single bucket [16]. A blocklist that cannot hold two facts about one name will keep having to pick which one to keep.
Follow any of these and your For You feed starts watching them — no settings page required.
Ranked by verification strength, evidence, and original report placement.
Socket engineer John Tuckner said in a July 31 post that his records showed 491 Open VSX IDs claimed by attackers and researchers that belong to projects in the VS Code Marketplace over the previous year, including 338 in 2026.
Over a five-day period from August 16 through August 20, Open VSX unblocked three extension IDs: AlDuncanson.react-hooks-snippets, magne-sjaastad.opm-flow-editor-support, and rumbledb.jsoniq-vscode, as the legitimate publishers they impersonated moved to claim the names.
All three IDs had been used by impostors in the 77-extension evil-twin campaign documented by Manifold Security earlier in the month.
Open VSX had removed all 77 packages by August 3 and added the IDs to its malicious-extension list.
React Hooks Snippets maintainer Al Duncan requested an unblock on August 16 after his first attempt to publish to Open VSX failed with the message: AlDuncanson.react-hooks-snippets is a known malicious extension. An Open VSX maintainer apologized, confirmed the tie to the campaign, and removed the ID the same day.
The OPM Flow Editor Support maintainer requested an unblock on August 16 after a publish attempt failed with the same known-malicious message; Open VSX removed the ID on August 18, and the legitimate [email protected] was published on August 21.
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Dated registry artifacts, one outlet
Every load-bearing assertion is anchored in checkable primary material: verbatim publish-failure messages, dated maintainer unblock requests, named version strings (0.0.1, 0.9.0, 1.6.0), the structure of the public extension-control file, and a review of its full Git history. The reporting also delimits itself, excluding the Carbon Language case from its count because the public record does not explain the original listing. It is capped by being a single publisher with no registry-side statement and no independent verification of the researcher counts.
Registry actions completed, narrow scope
These are executed changes, not proposals: 77 packages removed by August 3, three IDs delisted on August 16, 18 and 20, and two legitimate releases live on August 21 and August 23. The count is small and one of three names still had no legitimate listing at publication, so real-world reach is bounded — though the cited 491 claimed IDs (338 in 2026) indicate the pattern is far larger than the three cases resolved here.
Slightly understated against structural risk
Language tracks the record closely and the piece actively deflates its own thesis, declining to count the Carbon precedent and warning that a blocklist deletion alone does not prove a namespace was restored to its owner. If anything the systemic exposure — every ID-keyed detection pipeline silently losing provenance when a name is freed — is stated more cautiously than the evidence would allow, so the small negative reflects understatement rather than overclaiming.
Vendor research on its own coverage area
The sole publisher is a software supply-chain security company writing about registry blocklist hygiene, the exact problem class its products address, and it cites its own engineer's data as the scale evidence while speaking in the corporate first person about what it will and will not count. That is a real commercial alignment. It is partly offset by the piece withholding a favourable data point (the Carbon case) and by the absence of product pitching or a named customer.
Verifiable but single-sourced
Confidence is high on the mechanics — dates, IDs, versions and file structure are all checkable and internally consistent — and low on consequence, because no downstream misclassification is demonstrated, the registry operator is not quoted, the 491/338 counts are unverified first-party records, and one of the three reclaims remained unfinished at publication.
build
Socket turns on continuous scanning for all 97,100 Firefox add-ons1 distinct publisher
build
Wrapping a web tool in VS Code: four sandbox rules, and two gaps in the published fix1 distinct publisher
build
77 linked Firefox add-ons, one pipeline: store review is a checkpoint, not a control1 distinct publisher
build
The npm audit that works because it never installs the package1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
1 article · August 23, 2026