Poisoned Pipeline

Poisoned Pipeline / Incidents / AS35

AS35 · 2026-09

PolinRider poisons visanduma/nova-two-factor Packagist via Git

Packagist / ComposerGit / GitHubVS Code / IDE

Socket tracked PolinRider into Packagist through a compromised GitHub
developer account (LaHiRu) on the Visanduma organization, compromised
since mid-June 2026. Malicious code landed in four development versions
of visanduma/nova-two-factor (700k+ cumulative downloads): dev-main,
dev-nova4support, dev-using-inertia, and dev-nova5. No stable malicious
release was identified. Composer (and Go modules) can resolve straight
from Git, so no Packagist publishing token was required. Campaign
methods in this wave: force-pushed history, payloads in config or
.woff2 files, .vscode/tasks.json with "runOn": "folderOpen",
EtherHiding/NullReceiver dead drops, and obfuscated JS in index.php
launched via shell_exec. Primary objective remains cryptocurrency
theft plus credential stealing.

Mapped techniques

supply-chain Compromised GitHub org and Packagist dev branches

T0113 · Initial Access · Compromised user account

Malicious commits came through the LaHiRu developer account.

T0169 · Lateral Movement · Push implants across repositories

Force-pushed rewritten history; hundreds of later private-repo commits.

T0138 · Persistence · Backdoor in code

JS hidden in config / fake .woff2 files and in index.php via shell_exec.

T0210 · Persistence · Poison AI coding-agent config or workspace

"runOn": "folderOpen" in .vscode/tasks.json runs on repo open in VS Code.

T0197 · Initial Access · Use code from untrusted source

Composer/Go resolve from Git, so registry credentials were unnecessary.

T0109 · Resource Development · Publish malicious artifact

Four Packagist dev-* versions of visanduma/nova-two-factor.

T0159 · Execution · Malicious artifact execution

Clone, IDE folderOpen, or a normal build/test starts the chain.

Sources