TasksJacker Supply-Chain Campaign Uses Malicious VS Code Tasks and Blockchain C2

· Original article ↗

Summary

Researchers describe an active campaign attributed with medium-high confidence to DPRK-linked actors, compromising 400+ GitHub repositories through malicious VS Code tasks. Payloads steal credentials and maintain access, using blockchain C2 and newly deployed endpoints.

Key points

  • The report says attackers compromised 400+ GitHub repositories, including repositories associated with DataStax, and that at least nine newly compromised repositories remained infected as of February 20, 2026.
  • Malicious .vscode/tasks.json files use the folder-open trigger to run commands when a developer opens a cloned repository in VS Code.
  • Attackers reportedly rewrote Git history, spoofed commit metadata and force-pushed changes; a compromised DataStax service account pushed to 12 repositories across three organizations in 101 seconds.
  • The multi-stage payload steals browser and cryptocurrency credentials, SSH keys, cloud credentials, environment variables and Git tokens, and installs a persistent backdoor with remote-command capability.
  • The malware retrieves payload references through TRON and Aptos and encrypted payloads from Binance Smart Chain transactions; the report says the original C2 was taken down and new infrastructure was deployed behind shorteners and Vercel endpoints.
  • The researchers assess C2 ownership by the Polin9912 account with high confidence and DPRK affiliation with medium-high confidence; they describe the campaign as ongoing and adapting.
  • The article provides defensive steps, including disabling VS Code automatic tasks, auditing repository task files and Git history, monitoring force pushes and service-account activity, and rotating credentials.

Article Details

Attack Vectors
  • Compromised GitHub repositories contain malicious .vscode/tasks.json files configured to run commands when a developer opens the folder in VS Code.
  • Attackers rewrite Git history, spoofing commit metadata and force-pushing commits that add malicious files while obscuring their presence from pull request file listings.
  • A shell dropper downloaded from campaign infrastructure checks for Node.js, downloads a portable installation if needed, runs an obfuscated JavaScript loader, and deletes itself.
  • The loader retrieves encrypted payload references through TRON and Aptos blockchain data, fetches encrypted payloads from Binance Smart Chain transactions, and XOR-decrypts them.
  • The payload steals browser credentials, cryptocurrency wallet data, SSH keys, AWS credentials, environment variables, API keys, and Git credentials and tokens.
  • A detached backdoor maintains C2 communication and enables remote command execution.
  • The article reports that credentials stolen by TasksJacker were later used in a related fork-and-PR campaign to inject payloads into project configuration files.
Defensive Notes
  • Set VS Code's “Task: Allow Automatic Tasks In Folder” to off or prompt, and inspect .vscode/tasks.json before opening cloned repositories.
  • Compare GitHub API pushed_at timestamps with commit timestamps and investigate discrepancies greater than 24 hours.
  • Audit repositories for unexpected force pushes, commits from service accounts outside normal patterns, and files present in commits but absent from associated pull requests.
  • Review service-account push access, token age and scope; rotate credentials, with the article recommending rotation for credentials older than 90 days.
  • Monitor for Node.js running from hidden .vscode directories and for suspicious inline eval execution.
  • The article recommends monitoring the listed blockchain addresses and campaign infrastructure, while noting that blocking public blockchain API endpoints alone is not definitive.

Indicators of compromise

TypeIndicatorContext
DOMAIN260120[.]vercel[.]appOriginal TasksJacker C2 domain; the article reports it was taken down before February 12, 2026.
DOMAINalanservice[.]vercel[.]appTasksJacker Vercel endpoint identified by the article as active on February 20, 2026.
DOMAINchvsvr[.]short[.]gyTasksJacker shortener subdomain identified as a payload-distribution redirect.
DOMAINdefault-configuration[.]vercel[.]appTasksJacker Vercel endpoint identified by the article as active on February 20, 2026.
DOMAINfelixpools[.]vercel[.]appTasksJacker Vercel endpoint identified by the article as active on February 20, 2026.
DOMAINgeorgeservice77[.]vercel[.]appTasksJacker Vercel endpoint identified by the article as active on February 20, 2026.
DOMAINgurucooldown[.]short[.]gyTasksJacker shortener subdomain identified as a payload-distribution redirect.
DOMAINjameslack[.]vercel[.]appTasksJacker Vercel endpoint identified by the article as active on February 20, 2026.
DOMAINlocation-request-api[.]short[.]gyTasksJacker shortener subdomain identified as a payload-distribution redirect.
DOMAINpesncv[.]short[.]gyTasksJacker shortener subdomain identified as a payload-distribution redirect.
DOMAINvscode-settings-tasks-json[.]vercel[.]appTasksJacker Vercel endpoint identified by the article as active on February 20, 2026.
DOMAINvscodesetting-task[.]vercel[.]appTasksJacker Vercel endpoint identified by the article as active on February 20, 2026.
EMAILjacky870120@outlook[.]comContact email found in a repository associated by the article with the tracked Polin9912 account.
EMAILpolinrider@outlook[.]comEmail appearing in Git commit metadata across repositories associated by the article with the TasksJacker operator persona.

MITRE ATT&CK

Threat Actors

Malware

Vendors

Products

Tools

Countries

Related Articles