ReversingLabs Details PromptMink Supply-Chain Campaign Targeting AI Coding Agents

· Original article ↗

Summary

ReversingLabs describes PromptMink, a malicious npm and PyPI supply-chain campaign attributed to Famous Chollima, tracing its evolving payloads from obfuscated JavaScript to Rust add-ons and detailing secret theft, project exfiltration and SSH backdoors.

Key points

  • ReversingLabs found that the malicious npm package @validate-sdk/v2 was added to an autonomous crypto trading agent in a commit co-authored by Claude Opus; the package stole secrets from its environment.
  • The campaign used legitimate-looking first-layer packages as bait to introduce replaceable second-layer malicious packages, allowing the operators to swap payloads after detection or removal.
  • PromptMink payloads evolved from obfuscated JavaScript to a PyPI package, Node Single Executable Applications and compiled Rust N-API add-ons.
  • Payloads searched for .env and .json files and collected system and user information; later versions also compressed and exfiltrated project source code and added SSH public keys for remote access.
  • ReversingLabs attributed the campaign to North Korean-linked Famous Chollima based on infrastructure, targeting and operational patterns. Its researchers identified more than 300 package versions across 60 unique packages over seven months.
  • The researchers recommend analyzing dependencies, supplying coding agents with curated threat intelligence and monitoring CI/CD pipelines.

Article Details

Attack Vectors
  • Malicious first-layer npm packages posed as useful cryptocurrency utilities and imported disposable second-layer packages containing the payload; typosquatting and names resembling legitimate packages were used to make them convincing.
  • A malicious dependency was added to the openpaw-graveyard crypto trading agent in a commit co-authored by Claude Opus, according to the article.
  • Payloads evolved from obfuscated JavaScript to a PyPI package, JavaScript bundled with Node executables as SEA binaries, and compiled Rust N-API addons.
  • Payloads recursively searched for .env and .json files, collected system and user information, and in later versions compressed and exfiltrated entire projects and source code.
  • Payloads added attacker SSH public keys to victim machines to enable remote access: Linux support was described first, with Windows support added in a later Rust payload.
  • Binary embedding and obfuscation were used to make malicious code harder to detect and less visible to tools that parse source files.
Defensive Notes
  • Perform detailed static analysis of all project dependencies, including transitive dependencies and binary payloads.
  • Provide LLM coding agents with curated threat intelligence about packages and their dependencies before they recommend or add components.
  • Use CI/CD integrations to monitor pipelines and GitHub Actions for malicious dependencies and build risks.
  • Use manual analyst review alongside automated detections; the article identifies Spectra Assure Community as a source of package analysis and workflow integrations.
  • Exercise caution when accepting LLM-generated edits that introduce new dependencies.

Indicators of compromise

TypeIndicatorContext
DOMAINapi-sub[.]jrodacooker[.]devListed by ReversingLabs as a C2 domain used in the campaign.
DOMAINapi[.]bensaru[.]siteListed by ReversingLabs as a C2 domain used in the campaign.
DOMAINapi[.]fivefingerz[.]devListed by ReversingLabs as a C2 domain used in the campaign.
DOMAINapi[.]mywalletsss[.]storeListed by ReversingLabs as a C2 domain used in the campaign.
DOMAINapi[.]soladify[.]funListed by ReversingLabs as a C2 domain used in the campaign.
DOMAINblxrbn[.]comListed by ReversingLabs as a C2 domain used in the campaign.
DOMAINchangelog[.]restListed by ReversingLabs as a C2 domain used in the campaign.
DOMAINclob-polymarket[.]comListed by ReversingLabs as a C2 domain used in the campaign.
DOMAINghostraper[.]topListed by ReversingLabs as a C2 domain used in the campaign.
DOMAINlog[.]pricesheet[.]inkListed by ReversingLabs as a C2 domain used in the campaign.
DOMAINlogger[.]clob[.]healthListed by ReversingLabs as a C2 domain used in the campaign.
DOMAINmywalletsss[.]storeListed by ReversingLabs as a C2 domain used in the campaign.
DOMAINnavigatorshub[.]comListed by ReversingLabs as a C2 domain used in the campaign.
DOMAINpolblxpnl[.]spaceListed by ReversingLabs as a C2 domain used in the campaign.
DOMAINpolygon-rpc[.]comListed by ReversingLabs as a C2 domain used in the campaign.
DOMAINpolymarket-clob[.]comListed by ReversingLabs as a C2 domain used in the campaign.
DOMAINrpc-amoy[.]polygon[.]technologyListed by ReversingLabs among the campaign's C2 domains.
DOMAINvalidator[.]unoDedicated campaign domain used by PromptMink for exfiltration.
DOMAINwinstonjs[.]siteListed by ReversingLabs as a C2 domain used in the campaign.
IPV445[.]61[.]161[.]146Listed by ReversingLabs as C2 infrastructure used in the PromptMink campaign.
IPV445[.]8[.]22[.]144Listed by ReversingLabs as C2 infrastructure used in the PromptMink campaign.
IPV445[.]8[.]22[.]52Listed by ReversingLabs among the campaign's C2 IP addresses.
SHA1ae4fe9f9a4f099de9132eb3346abcdd96dbeb39dSHA-1 listed as an indicator for the malicious scraper-npm 1.0.4 PyPI package.
SHA1e79ce589913bb8c5743bf0e55e075e2260c7a915SHA-1 listed among the malicious PyPI package indicators for scraper-npm 1.0.4.

MITRE ATT&CK

Threat Actors

Malware

Vendors

Products

Tools

Industries

Related Articles