astro.config.mjs Supply Chain Attack via Blockchain C2
2026-06-12 • Safe Dep •
A malicious PR against Egonex-AI/Understand-Anything hid an obfuscated loader inside `homepage/astro.config.mjs`, causing `astro build`, `astro dev`, or `astro preview` to execute the payload on developer and CI systems. The loader restored `require` in an ESM config, beaconed to hardcoded HTTP C2 hosts, decrypted and evaluated a bot client, and independently resolved second-stage JavaScript through a TRON-to-Aptos-to-BSC blockchain dead-drop relay. SafeDep linked the payload to DPRK-attributed PolinRider based on matching cryptographic and infrastructure fingerprints, including the Tron dead drop, XOR key, decoder markers, and propagation artifacts. The attack expands PolinRider's developer-focused supply-chain activity into an upstream PR-review vector designed to hide malicious build-time code in horizontal whitespace.
Indicators of Compromise
| Type | Value | First Seen | Last Seen |
|---|---|---|---|
| URL | http://23.27.202.27:27017/$/boot | 2026-06-12 | 2026-06-12 |
| URL | http://198.105.127.210/$/boot | 2026-06-12 | 2026-06-12 |
| URL | http://166.88.54.158/$/boot | 2026-06-12 | 2026-06-12 |
| IPv4 | 166.88.54.158 | 2026-04-24 | 2026-06-12 |
| IPv4 | 198.105.127.210 | 2026-03-05 | 2026-06-12 |
| IPv4 | 23.27.202.27 | 2025-10-20 | 2026-06-12 |
| WALLET | 0xbe037400670fbf1c32364f7629759… | 2026-05-31 | 2026-05-31 |
| WALLET | TMfKQEd7TJJa5xNZJZ2Lep838vrzrs7… | 2026-05-31 | 2026-05-31 |
| DOMAIN | api.trongrid.io | 2025-10-27 | 2026-05-31 |
| DOMAIN | fullnode.mainnet.aptoslabs.com | 2025-10-27 | 2026-05-31 |
| DOMAIN | bsc-dataseed.binance.org | 2025-10-27 | 2026-04-11 |
| DOMAIN | bsc-rpc.publicnode.com | 2025-10-27 | 2026-04-11 |