Blog Bezpečnost Za hranice inovací
Kompletní forenzní analýza útoku „s1ngularity“ na Nx
Největší supply-chain útok roku 2025 odkrývá novou éru kybernetických hrozeb. Poprvé v historii útočníci systematicky zneužili vývojářské AI asistenty. Toto je kompletní technická rekonstrukce.
Jaroslav Urbánek, zakladatel TECHNOMATONu 29. srpna 2025 7 min čtení Aktualizováno 22. září 2026
Text vyšel a popisuje stav k tomuto dni.
Milí čtenáři,
včera večer jsem prošel forenzní analýzu jednoho z nejsofistikovanějších supply-chain útoků, jaké jsem kdy viděl. Nx, build systém používaný více než 70 procenty firem z Fortune 500, byl kompromitován způsobem, který mění naše chápání bezpečnostních hrozeb.
Co mě nejvíc znepokojuje? Útočníci poprvé v historii systematicky zneužili AI vývojářské asistenty – Claude, Gemini a Amazon Q – jako součást svého malware. Nástroje, které denně používáme k psaní kódu, se staly nevědomými komplici v krádeži dat z tisíců firem.
Co se přesně stalo a jak se bránit?

Executive Summary
Mezi 26. a 27. srpnem 2025 došlo ke kompromitaci populárního build systému Nx prostřednictvím supply-chain útoku. Útočník využil zranitelnost v GitHub Actions workflow k získání npm publikačního tokenu a následně distribuoval škodlivé verze Nx balíčků. Malware běžící v postinstall fázi zneužil lokální AI CLI nástroje (Claude, Gemini, Amazon Q) k automatizovanému průzkumu souborového systému. Data byla exfiltrována do veřejných GitHub repozitářů pojmenovaných „s1ngularity-repository”. Npm odstranilo kompromitované verze ve 02:44 UTC, GitHub skryl škodlivé repozitáře kolem 09:00 UTC. Incident vedl k okamžitému zavedení povinné dvoufaktorové autentizace a přechodu na Trusted Publisher model.
Proč tento útok mění pravidla hry
Nx není jen další JavaScript framework. Podle vlastních dat jej využívá více než 70 procent firem z Fortune 500 a týdně zaznamenává miliony stažení. Když se něco pokazí v Nx, dopad pocítí tisíce vývojářských týmů po celém světě současně.
Co dělá tento incident výjimečným, není jen jeho rozsah. Poprvé v historii dokumentovaných supply-chain útoků útočníci systematicky zneužili AI vývojářské asistenty jako součást svého malware. Claude, Gemini a Amazon Q – nástroje navržené k pomoci vývojářům – se staly nevědomými komplici v jednom z nejsofistikovanějších útoků letošního roku.
Během pouhých čtyř hodin mezi první publikací škodlivého kódu (22:32 UTC) a jeho odstraněním z npm (02:44 UTC) útočníci protlačili osm verzí Nx napříč verzovacími řadami 20.x a 21.x. Celkem bylo kompromitováno 19 verzí napříč osmi balíčky. To není náhoda – je to precizně naplánovaná operace.
Technická anatomie útoku
Vektor vstupu: Když GitHub Actions se stane zbraní
Kořenová příčina útoku spočívala v zranitelném GitHub Actions workflow, který obsahoval bash injection zranitelnost v PR titulu. Útočník využil kombinaci této zranitelnosti s použitím pull_request_target triggeru, který má zvýšená oprávnění, k spuštění publikační pipeline. Odtud bylo již snadné exfiltrovat npm token a získat kontrolu nad publikováním balíčků.
Škodlivý kód: Co přesně dělal
Po instalaci kterékoliv z kompromitovaných verzí se spustil postinstall skript obsahující modifikovaný soubor telemetry.js. Malware nejprve provedl kontrolu operačního systému – na Windows se jednoduše ukončil, zatímco na Linux a macOS pokračoval v destruktivní činnosti.
Primární funkce malware zahrnovala sběr GitHub a npm tokenů, SSH klíčů, environmentálních proměnných a dokonce i kryptografických peněženek. Veškerá citlivá data byla ukládána do dočasných souborů a připravována k exfiltraci.
AI jako nástroj útočníka
Nejznepokojivější částí útoku bylo zneužití lokálních AI CLI nástrojů. Malware se pokoušel spustit:
- Claude s příznakem
--dangerously-skip-permissions - Gemini s příznakem
--yolo - Amazon Q s kombinací
q chat --trust-all-tools --no-interactive
Tyto příkazy měly za cíl využít AI k rekurzivnímu procházení souborového systému a vytvoření kompletního inventáře dostupných souborů, který byl následně uložen do /tmp/inventory.txt. AI nástroje tak nevědomky pomáhaly útočníkům identifikovat nejcennější data k odcizení.
Exfiltrace: Skrytí na očích
Místo tradičních command & control serverů útočníci zvolili geniálně jednoduchou metodu – vytváření veřejných GitHub repozitářů přímo v účtech obětí. Tyto repozitáře pojmenované s1ngularity-repository s náhodným suffixem obsahovaly soubor results.b64 s dvojitě nebo trojitě zakódovanými ukradenými daty.
Během aktivního okna útoku byly pozorovány tisíce takových repozitářů. GitHub začal tyto repozitáře skrývat z vyhledávání kolem 09:00 UTC, ale škoda již byla napáchána.
Sabotáž jako třešnička na dortu
Jako by krádež dat nestačila, malware přidal do souborů ~/.bashrc a ~/.zshrc řádek sudo shutdown -h 0. Při každém otevření nového terminálu by se tak systém okamžitě vypnul – efektivní denial-of-service útok na vývojářskou stanici.
Časová osa incidentu
Průběh útoku lze rekonstruovat minutu po minutě:
26. srpna 2025:
- 22:32 UTC – První škodlivá verze (nx@21.5.0) publikována na npm
- 23:15 UTC – Další vlna škodlivých verzí začíná zaplavovat npm
27. srpna 2025:
- 00:30 UTC – První GitHub issue reportující podezřelé chování
- 00:37 UTC – Poslední dvě škodlivé verze (21.8.0, 20.12.0) publikovány
- 02:44 UTC – npm odstraňuje všechny kompromitované verze Nx
- 03:52 UTC – Přístup kompromitovaného npm účtu je zrušen
- 09:00 UTC – GitHub začíná skrývat s1ngularity repozitáře
- 15:57 UTC – npm vynucuje 2FA a migruje Nx na Trusted Publisher
Rozsah škod podle čísel
GitGuardian ve své analýze identifikoval 1346 exfiltračních repozitářů obsahujících 2349 unikátních tajemství a přístupových tokenů. Wiz Research dokonce uvádí více než 1000 stále platných GitHub tokenů a přibližně 20000 uniklých souborů.
Nejvíce znepokojující je fakt, že mnoho vývojářů si útoku vůbec nevšimlo. Nx Console pro VS Code ve verzích 18.63.x až 18.65.x automaticky spouštěl npx nx@latest --version při každé aktivaci – stačilo tedy otevřít editor a systém byl kompromitován.
Okamžitá náprava – co dělat právě teď
Detekce kompromitace
Nejprve zjistěte, zda váš systém byl zasažen. Spusťte následující příkazy:
# Kontrola nainstalovaných verzí Nx
npm ls nx || pnpm ls nx || yarn why nx
# Hledání stop malware na systému (Linux/macOS)
ls -l /tmp/inventory.txt /tmp/inventory.txt.bak 2>/dev/null
grep -n "shutdown -h 0" ~/.bashrc ~/.zshrc 2>/dev/null || true
Zkontrolujte svůj GitHub účet a hledejte repozitáře začínající na s1ngularity-repository. Projděte také audit logy vaší organizace.
Odstranění a obnova
Pokud jste byli zasaženi, postupujte systematicky:
# Kompletní vyčištění a reinstalace
rm -rf node_modules && npm cache clean --force
npm uninstall nx && npm install nx@latest
Vyčistěte soubory ~/.bashrc a ~/.zshrc od škodlivých řádků obsahujících shutdown příkaz. Odstraňte všechny soubory /tmp/inventory.txt*.
Rotace všech přístupových údajů
Toto je kritický krok, který nesmíte vynechat. Rotujte okamžitě:
- Všechny GitHub Personal Access Tokeny a OAuth aplikace
- npm publikační tokeny
- SSH klíče na všech systémech
- API klíče všech služeb
- Kryptografické peněženky přesuňte na nové adresy
Systémová opatření pro budoucnost
Na úrovni organizace
Zavedení povinné dvoufaktorové autentizace pro všechny vývojáře již není volitelné – je to nutnost. Migrace na Trusted Publisher (OIDC) model eliminuje potřebu dlouhodobých npm tokenů, které jsou častým terčem útoků.
Zvažte implementaci „cooldown” pravidla – nové verze závislostí nesmí být instalovány dříve než 24-48 hodin po publikaci. StepSecurity již přidal automatickou kontrolu pro pull requesty, která na toto upozorňuje.
Zabezpečení AI nástrojů
AI vývojářské asistenty potřebují okamžitou pozornost. Implementujte sandboxing s principem nejmenších oprávnění, explicitně blokujte nebezpečné příznaky jako --dangerously-skip-permissions nebo --yolo. Veškeré interakce s AI nástroji by měly být logovány a monitorovány.
Monitoring a detekce
Nasazení EDR/XDR řešení na vývojářské stanice již není luxus, ale nutnost. Tyto systémy dokáží detekovat anomálie během npm install a identifikovat podezřelé procesy spouštěné během instalace balíčků.
Poučení z incidentu
Tento útok demonstruje několik kritických slabin současného ekosystému:
Především se ukázalo, že staré větve v repozitářích s vulnerabilními workflow představují tikající bombu. Nx měl zranitelný workflow ve starších větvích, které nebyly aktualizovány.
Důvěra v automatizované systémy bez odpovídajících kontrol je nebezpečná. GitHub Actions s elevated permissions v kombinaci s možností bash injection vytváří perfektní bouři pro útočníky.
AI nástroje, navržené k zvýšení produktivity, se mohou snadno stát vektorem útoku. Jejich schopnost automatizovaně procházet a analyzovat kód je dvojsečná zbraň.
Co nás čeká dále
npm a Nx reagovaly rychle a razantně. Povinná 2FA, migrace na Trusted Publisher a invalidace všech existujících tokenů jsou kroky správným směrem. Otázkou zůstává, zda ostatní kritické projekty v npm ekosystému následují jejich příklad.
Supply-chain bezpečnost už v EU upravuje Cyber Resilience Act (akt o kybernetické odolnosti, nařízení (EU) 2024/2847), přijatý v roce 2024 a v platnosti od 10. prosince 2024. Jeho povinnosti se ale uplatní až později: hlášení aktivně zneužívaných zranitelností a závažných incidentů od 11. září 2026, hlavní povinnosti od 11. prosince 2027. Tento incident bude nepochybně použit jako argument pro přísnější kontroly.
Na závěr
Útok „s1ngularity” na Nx představuje milník v evoluci supply-chain útoků. Kombinace sofistikovaných technik, zneužití AI nástrojů a masivní rozsah dopadu ukazují, že současné bezpečnostní praktiky nestačí.
Každý vývojářský tým musí přehodnotit své bezpečnostní postupy. Nejde jen o technická opatření – jde o změnu kultury, kde bezpečnost není překážkou produktivity, ale její nedílnou součástí.
Zdroje a další čtení
Tato analýza vychází z oficiálních forenzních reportů a primárních zdrojů. Pro technické detaily doporučuji:
🔍 Kompletní forenzní analýza: https://www.stepsecurity.io/blog/supply-chain-security-alert-popular-nx-build-system-package-compromised-with-data-stealing-malware
Oficiální zdroje:
- https://github.com/nrwl/nx/security/advisories/GHSA-cxm3-wv7p-598c
- https://nx.dev/blog/s1ngularity-postmortem
- https://github.blog/security
Technické analýzy: