77 Evil Twin Open VSX Extensions Exfiltrate Private Git Repository and CI Data
A wave of counterfeit Open VSX extensions has exposed how easily a familiar developer tool can become a data collection channel.
Seventy-seven packages copied the names, namespaces, and descriptions of legitimate extensions, then contacted the same newly registered domain.
The campaign appeared between July 26 and August 1, 2026. Most packages sent basic device details, but 19 contained a far more intrusive reconnaissance routine that collected repository and continuous integration information from developer workstations and build environments.
Researchers at Manifold identified the operation and found that the packages were published by accounts unrelated to extension authors.
Manifold said in a report shared with Cyber Security News (CSN) that the listings presented the activity as telemetry, a label that concealed the real reach of the code.
ciIdentity() function within extension.js collecting CI identity data (Source â Manifold)
Private repository names, project paths, branch details, and CI identifiers can reveal an organisationâs internal development work, making it useful for targeted phishing, follow-on intrusion attempts, or mapping a software supply chain.
77 Evil Twin Open VSX Extensions
The rogue packages used a simple but effective impersonation method. They reused familiar extension identities, often at version 0.0.1, while replacing the extension.js content with code designed to beacon information outward.
This mirrors the risk seen in malicious VSCode marketplace extensions , where familiar tools can mask harmful behavior.
Fifty-eight of the packages were lightweight beacons that reported a hostname and sometimes a workspace folder or editor version.
The 19 reconnaissance variants activated within seconds and gathered the hostname, operating-system username, editor details, device identifiers, location settings, workspace name, and full local path.
The more serious variants also inspected Git metadata. They pulled the host and organisation from origin and upstream remote URLs, the domain portion of the configured commit email, the current branch, and the latest commit identifier.
Notice the âtelemetryâ section on the extensionâs readme webpage (Source â Manifold)
On a build runner, CI variables could expose the full name or path of a private repository. The code checked for values for GitHub Actions, GitLab CI, Azure DevOps, Buildkite, CircleCI, Codespaces, and Gitpod.
It also listed installed extensions and read the editorâs telemetry preference, but transmitted the collected information even when that setting indicated an opt-out.
That behavior is especially troubling because the marketplace pages claimed CI values would remain on the machine.
The researchers found code sent both CI marker names and their values. Readers tracking the broader trend can see similar supply-chain exposure in trusted developer tooling attacks .
Persistence Raises Supply Chain Risk
The infrastructure was designed for persistence. Packages used multiple hosts under the same domain, retried connections for up to seven days, and treated any HTTP response as a successful delivery.
If hardcoded endpoints failed, the code could query DNS TXT records for a replacement collection address.
This matters because extension installation is increasingly automated. Devcontainer configurations, editor setup scripts, and provisioning workflows may install an extension by name without checking publisher ownership, download history, or project lineage.
The problem resembles recent Open VSX sleeper extensions , which showed how malicious packages can wait inside development ecosystems.
As of August 3, the packages had been removed from Open VSX, but removal does not erase code already placed in workstation images, build systems, or repository configuration.
Teams should search developer and CI images for matching entries in .vscode/extensions.json, .devcontainer/devcontainer.json, and .devcontainer.json, then verify the extensions installed.
Organisations should block the identified domain, pin internally mirrored packages by publisher and version, and treat unverified publisher warnings as a stopping point for automated installations.
Security teams should also alert on editor processes contacting newly registered domains shortly after startup and on DNS TXT lookups using _beacon labels.
The incident reinforces that code editor extensions deserve the same scrutiny as any other software dependency.
Reviewing runtime behavior, controlling automated installs, and validating publisher identity can reduce the chance that a copied name becomes a route into private engineering data across distributed software development teams globally.
Indicators of compromise (IoCs):-
Type Indicator Description Domain mangorbit[.]com Primary campaign domain used by all 77 identified packages Host pulse.mangorbit[.]com Beacon collection endpoint Host pulse2.mangorbit[.]com Secondary beacon collection endpoint Host api.mangorbit[.]com Beacon endpoint used by one observed sample Host pattern *.cb.mangorbit[.]com Randomised callback subdomains used by one observed sample URI path /t/<24-hex tracking id> Tracking endpoint path URI path /api/v1/metrics Metrics collection endpoint URI path /api/v1/events Event collection endpoint DNS TXT query _beacon.<domain> Mechanism used to retrieve a replacement collection URL DNS TXT response pattern base=https:// Prefix expected in the TXT-record response User-Agent vscode-ext-metrics/1.0 User-Agent used for outbound beacon traffic File name extension.js Modified extension file containing beacon and reconnaissance code Malicious extension ID lego-education.ev3-micropython  version 0.0.2 Observed counterfeit Open VSX extension Malicious extension ID better-ts-errors.better-ts-errors  version 0.0.1 Observed counterfeit Open VSX extension Malicious extension ID groksrc.ruby  version 0.0.1 Observed counterfeit Open VSX extension Malicious extension ID maptz.regionfolder  version 0.0.1 Observed counterfeit Open VSX extension Malicious extension ID mitsuhiko.insta  version 0.0.1 Observed counterfeit Open VSX extension Malicious extension ID SBSnippets.pytorch-snippets  version 0.0.1 Observed counterfeit Open VSX extension Malicious extension ID slb235.vscode-coffeelint  version 0.0.1 Observed counterfeit Open VSX extension Malicious extension ID amd.gaia-vscode  version 0.0.1 Observed reconnaissance extension Malicious extension ID artsy.artsy-studio-extension-pack  version 0.0.1 Observed reconnaissance extension Malicious extension ID configcat.configcat-feature-flags  version 0.0.1 Observed reconnaissance extension
Note:  IP addresses and domains are intentionally defanged (e.g., [.] ) to prevent accidental resolution or hyperlinking. Re-fang only within controlled threat intelligence platforms such as MISP, VirusTotal, or your SIEM .
Stop new phishing & malware before they compromise your business. Integrate live intel from 15K SOCs around the world
The post 77 Evil Twin Open VSX Extensions Exfiltrate Private Git Repository and CI Data appeared first on Cyber Security News .
cybersecuritynews.com