The Ghost in the Marketplace March 20, 2026 During routine scanning of new Open VSX submissions on March 20, we noticed an unusual spike in the volume of extensions entering our pipeline. A closer look at the data revealed 174 new publishers had appeared within hours of each other, all backed by recently created GitHub accounts. The extensions themselves appear clean, but the infrastructure behind them points to a coordinated campaign preparing for a future delivery phase. The Surge All 174 GitHub accounts were created on March 11, 2026, in a five-hour window between ~09:57 UTC and ~14:59 UTC, at a rate of roughly one account every 100 seconds. Nine days later, on March 20, those accounts began publishing extensions to Open VSX in a second burst from ~17:43 UTC to ~22:17 UTC. Every account shares the same profile: Created exactly 9 days before its first upload. At most one public repository. No commit history, no issues, no stars. No prior activity of any kind: no followers, no contributions, no indication of a real developer. We refer to these as “ghost” accounts throughout this report. Naming and Identity Patterns The publishers use two distinct naming conventions across two layers of identity. The Open VSX namespaces (the publisher names visible on the registry) are a mix of Slavic-sounding names with digit strings (olgakuznetsova717, sorokinanatalya234, firsovaoksana320) and randomized gibberish (oyoqenej151, nogiveputu258, u7ctm4z2xn). The GitHub accounts behind them follow a completely separate convention: auto-generated compound English words like FlameToneSheave, MagicStarfishBoost, and LairLightningDerrick. The use of two separate name generators suggests programmatic account creation with different tooling for the public-facing namespace and the backing GitHub identity. The 9-day gap between account creation and publishing also appears intentional, creating enough separation to avoid simple heuristics that flag accounts publishing on the same day they were created. The Staging Ground Our manual analysis and deobfuscation efforts have not uncovered explicitly malicious behavior in any of the published extensions. This is consistent with infrastructure pre-positioning, a well-documented precursor to malware distribution. By publishing a large volume of clean extensions, the threat actor allows them to age in the marketplace and accumulate downloads, building a “trust” profile that bypasses basic security checks. When a malicious update eventually ships, 174 extensions with established download histories are harder to flag than fresh ones. The extension names are also worth noting. Many clone popular developer tools: isort, bash-debug, git-graph, php-namespace-resolver. By flooding the registry with lookalikes, the threat actor increases the chance that a developer installs a counterfeit version. The targeted categories (linting, debugging, visualization, language support) are tools that typically require elevated permissions within the IDE, making them effective vectors for a future malicious payload. A Broader Pattern The Open VSX ecosystem has been under sustained pressure from multiple directions. One week before the GhostDrop publishing wave, we disclosed PackRAT, a separate campaign that abused the extensionPack field in package.json to chain benign-looking “distribution” extensions to malicious payloads. PackRAT accumulated nearly 100,000 downloads through indirection rather than volume. In December, our analysis of RustImplant documented attackers using compiled Rust binaries with anti-analysis guardrails to hide malicious logic inside native Node.js addons. Three campaigns, three different approaches: RustImplant: quality of obfuscation (compiled binary, geofencing, encrypted config) PackRAT: indirection (clean extensions funneling installs to malicious ones) GhostDrop: quantity of entry points (174 staged accounts, trust farming at scale) Attackers are diversifying their supply chain tactics. Defenders looking for only one pattern will miss the others. Conclusion & Remediation This campaign underscores the need for marketplaces to integrate meaningful account verification. 174 accounts were created in a single afternoon, sat dormant for nine days, and then published extensions to a global registry without triggering any flags. The absence of an immediate payload does not mean the absence of a threat. We recommend checking your internal developer environments for extensions published by the accounts listed at the end of this report. Disable automatic updates for extensions that are not from verified publishers. Monitor for suspicious behaviors common to malicious extensions: unusual network traffic, unauthorized credential access, and persistence mechanisms. Regular validation of detection rules and proactive threat hunting can help catch variants that evolve beyond known indicators. The dev-guard extension, built and maintained by the Yeeth Security team, adds another layer of protection for VS Code and Cursor AI users. By continuously monitoring new campaigns and pushing live updates, dev-guard helps shut down these threats before they spread across the developer community. We will continue to monitor these ghost accounts for the moment they decide to wake up. Indicators of Compromise (IOCs) Open VSX Extensions wilderdanehy.cloudformation-yaml-snippets zolotarevaviktoriya044.output-colorizer kravtsovae88.cody-testing romaskevich4.veriloghdl matushevskayao0.php-namespace-resolver deandreavrich.kcl-language-server elenaskorik590.snowflake-vsc faixmercedezmcpnnt3i.laravel-extra-intellisense seltzroxieo2t64lsk.kylin-cpp-pack carluccimerriezyiwg9.bash-debug firsovaoksana320.texlab sytnike910.vscode-peacock koshkarevay998.code-for-ibmi chekalovaolga30.cline-nightly goncharovatatyana828.builtin-notebook-renderers tchebotareva613.extension-editing enemanezhina91.kimi-code kovtunnataliya87.text-power-tools innadudar23.godot-tools okishtanova034.vscode-altimate-mcp-server irinakrupnik40.pochi kopaevaanna739.vscode-conventional-commits oksanakurinnaya39.sheetjs-demo sorokinanatalya234.git-blame alenaletuta06.vscode-test-explorer el702791.salesforcedx-vscode-core yanag748.calva yetevipe056.kylin-clangd ahoxepow64.vscode-azurefunctions oyoqenej151.salesforcedx-vscode-apex-testing xemekicariv881.salesforcedx-vscode-expanded romosumo659.microsoft-authentication qehiyesubame27.vscode-npm-dependency cheresovasvetlana58.tldraw-vscode walosivarom079.git-ui aleksandrafisyurenko65.whycode olgakotovich91.markdown-preview-github-styles vyshinskayatatyana38.hardhat-solidity mboncheva64.xasnippets dubitskayaa5.vscord egraf829.gitpod-monitor elenamarych83.vscode-bazel burovan514.i18n-ally svetlanachevychelova5.devdb tkorotchenko76.vscode-mermaid-chart evgeniyaalekseeva988.jinja oksanalevko882.markdown-language-features etamohoxisay72.gulp wakelokul066.vscode-boot-dev-pack ykiseleva077.vscode-wakatime yuliyakotova472.jake gorobetselena52.grunt savchenkoyuliya752.debug-auto-launch nemufiwozego92.cursorless xuxiqigomom401.vetur brazhenkomariya320.css-language-features vohohonozas00.roo-code-nightly ofotolazez988.console-ninja logacehefo39.catppuccin-vsc-icons hiviheyodu35.bloc akuwikam872.merge-conflict rumatiju04.vscode-language-pack-de sunevaelena43.nix-ide viktoriyaadam937.vscode-openapi yufotole71.snyk-vulnerability-scanner vrogach954.media-preview yuliyalolenko89.coderoad yuliyagrisenko81.file-bunny gerasimenkoandriana656.vscode-azureresourcegroups edrobot46.vscode-versionlens oliynik102.colab markaryanevgeniya19.excalidraw-editor sheleverelena383.vscode-graphql alinaogolenko35.cdt-gdb-vscode semenovichyuliya195.vscode-neovim davtyank791.git-graph otitenko854.pdf jewellmccullin2327975.isort u7ctm4z2xn.malloy-vscode samaraxlauridsenrqy3.tongyi-lingma yuliyabogomolova342.markdown-mermaid elizavetayakovleva57.salesforcedx-vscode-visualforce olgamelnichuk813.astro-vscode dittacathernbe.vscode-stylelint hodellkendaf.coding-copilot nogiveputu258.configuration-editing raspopinad31.gemini-coder chinellbrinton.coderabbit-vscode ikhalyavka18.cmake vtkachenko437.salesforcedx-vscode-lightning smithymardis.vscode-deno rikkestatham8960153.vscode-duplicate keeshaarnhold5nzbf.salesforcedx-vscode-apex albertinejunghans31jtv.oxc-vscode francoisebunk2cg85m.ocaml-platform larisamironenko787.metals irinadatsyuk07.superblocks khlevnyukn54.kotlin tatyanakrasnokutskaya913.vscode-postfix-ts karinadubovichenko53.kylin-cpp-pack yistomina690.code-for-ibmi ttnchalaya.kcl-language-server daryashcherbatyuk42.cloudformation-yaml-snippets olesyatulainova797.cody-testing sadlerzakai.laravel-extra-intellisense geleteytatyana48.sheetjs-demo innadenisenko153.snowflake-vsc merrylfrock3093725.veriloghdl bystrikovao52.vscode-peacock luzschnettler6675543.output-colorizer alinabondarevich50.texlab is4704153.text-power-tools yuliyasylenko81.bash-debug ovchinnikovairina691.cline-nightly nataliyasuprunenko14.php-namespace-resolver tmatsiychuk724.builtin-notebook-renderers allagrokholskaya21.vscode-altimate-mcp-server yuliyachaykovskaya17.kimi-code tkhilko21.git-blame tfostik895.pochi krivoshey302.vscode-conventional-commits ubiyabihowiy99.calva utiwoziyus462.extension-editing cathrinegomm6798038.vscode-test-explorer lysenkotatyana525.vscode-npm-dependency vefimenko167.salesforcedx-vscode-core alekseenkonatalya844.whycode igordienko495.godot-tools cherkast9.vscode-azurefunctions bashkatovam4.gulp tklienko82.kylin-clangd vasilevalyudmila252.tldraw-vscode volodinan750.salesforcedx-vscode-apex-testing mskubenich698.vscord olgakuznetsova717.microsoft-authentication khrushcheval758.hardhat-solidity rochellshivy1357619.git-ui shayastarita4322082.salesforcedx-vscode-expanded ungurovayuliya53.devdb ynikolaeva519.vscode-bazel jasongyfbxangfd.markdown-language-features xhriswarmack.i18n-ally charleskoavpmjske.gitpod-monitor anthonydlrpnlsaog.vscode-wakatime josephfwflqsgala.markdown-preview-github-styles ekaterinachayka34.jinja mikhovay82.xasnippets goncharovanatalya842.vscode-mermaid-chart oksanapolyashchenko90.grunt andrusenkooksana458.jake nsinyuk51.css-language-features idixajakah88.roo-code-nightly valerygravitz6410310.vetur anastasiyakomyurdzhu36.debug-auto-launch abramovat831.merge-conflict fitsaya902.cursorless tatyanakravchuk15.console-ninja glynisblaum5916422.vscode-language-pack-de rosalynvanaprasert2852089.catppuccin-vsc-icons angovelondaudpq6puy.nix-ide ruschakvernellvz7gdzd.colab landhamjennine580lavrp.file-bunny tavissandah15vp9ok.media-preview biscardileo3sq1uto.bloc anastasiyao673.excalidraw-editor ekaterinapolishchuk24.vscode-graphql sinyushkoanna636.coderoad melifonda7.vscode-neovim evarejagiy510.vscode-azureresourcegroups ibowitihugo32.snyk-vulnerability-scanner wogopehuzis356.vscode-openapi uniximayegu511.cdt-gdb-vscode etuqubidij861.pdf kotohitesu21.git-graph Publisher sparkfinderoven coalrectorstrike LengthColonel Axisfrommall nightwayvibrate RadianLayer41 orangevoinULTRA mistchandlergazebo AgentTestingClamp CooperUncouple JaguarPillage PlasmaButterfly guardtrailclip ShareSwordsmanRuin SoapmakerRepresent zeptostagetrap88 Passiondershout Topclicondense freestageline90 dendonormind FenceBoulderHeal LairLightningDerrick LacquerPharaohCover paintairsever OctagonWoodpecker Tameoltreasure34 gigafiremanwhisper Crystalograb Fieldterruffle Legionkyomanacle nick48459 FuseScorpionBeam Cruelshuillustrate KnitCockatooKey retrocenterspark24 TestingRadial Plateeocondense weldscreenagora73 MockingbirdTrail Frostruturbine victorsenatorbear59 MartinUpgrade rockexecutivesee Fjordshejack ConsciousnessBrawler Splitflucover93 ceilingmedicunveil MagentaJaguar Dimensionparail NestMeadowlark RollerRemember FiendJackdawSilo SentryNodePartition ChipSpiderWarm InnerPrawn98 Ultimatedenpruner SheenEmpress pondhelpplain femtopremiertag Holddrespell MagicStarfishBoost timenavigatorrage Gravityaespot freewaychameleonnode mythicnoteshed Signonrecall Winnershitram centiofficermultiply centerbytemanage BanSailmakerDitch zenithbaseshadow bansheegiraffecode HelperMenhir Pennantpholeap HemomancerRepair PrefectFlourish22 Quakedudone94 MoonWeaponsmith RestraintSound macrohelpclippers lavendertalesun StreetTsuchikage DesertYULIA232 OhmWhaleIncrease BayHorseFurnace slayerassassinjack FlameToneSheave PulverizeDirector BanMartinCode CometBureaucratEquip BitExpertMarket FountainStorkLoop DensityFletcher novabaronlast freewaylinksnap ScarletLarkConverter CableAdmiralContinue ChamberTeller peakchieftomb romchemistremain NexusRainMode Webacrossnail SolarZoneRejuvenate Masterkrasculpt Toothoiwarm33 mergegumshoerafter73 Scarletlunavault DensityLobsterHoe hypercounselorgrade Radiustensocket Needleeroven BasinMerchantMold Typhoonofrejuvenate ScarletShipperWire xxfinder071 Ally83741 BattalionFencer13 ScorpionTomb FloorWarriorPush torrentlakeflash DownloadData naturewidowplunder HideGrenadierExalt Joinpiboiler61 Crushbeyondlight wingpupachannel92 HertzCockatoo ShogunPortalShackle Tempestbroboutique51 Aquamcpincers PhotonWeaverCrush Facetzichange PatchTradesman59 QuarkScholarAmp Constrainterboil49 ProviderCorridor31 LayerHeadBorder RatDisconnect BrightCentipede UniteSenator StarfishJudge WishFlamingo RedGumshoeEmbody GladiatorBoutique14 CycloneJonin Loopdestrowel18 streetbuntingveil fieldabjurerline MortarBoatwright BorderConjurerDenote HeronFlash25 ViceroyBorder skycommercialstage PlankEchoDash NatureRunner MediatorSpeed devilmooseobelisk25 LawyerLightning ModernShinobi GravityWeaver ShinobiVitalize SoundRecapture galelieutenantglow KnotCarpenter wallarmorerbar royalversegive Kilophodoor76 BuilderBazaar Awarenesstohum Degreetreappraise44 BeigeCheetahSheave ColonyBailiff9 Flintpatouch SonicTortoiseCool Share Post on X Share on LinkedIn