Naléhavé bezpečnostní upozornění: kritická neautentizovaná RCE zranitelnost v Reactu (CVE-2025-55182)
- Bitdefender

- před 1 dnem
- Minut čtení: 6
Aktualizováno: před 12 hodinami

TL;DR Očekává se, že ransomwarové skupiny velmi rychle zneužijí tuto kritickou zranitelnost v Reactu (CVSS 10.0) k získání počátečního přístupu. Tato zranitelnost umožňuje vzdálené spuštění kódu i při neautentizovaných útocích a její potenciální dopad je srovnatelný s Log4j.
Dne 3. prosince 2025 byla v ekosystému Reactu zveřejněna kritická zranitelnost typu Remote Code Execution (RCE), která okamžitě vyvolala nouzovou situaci napříč organizacemi. Hlavní zranitelnost (CVE-2025-55182) pochází z logiky protokolu React 'Flight'. Ačkoliv je framework Next.js v podnikovém prostředí považován za primární vektor útoku – zejména kvůli výchozímu použití App Routeru a React Server Components (RSC) – nejde o jediný možný vstupní bod. Chyba se šíří i do dalších navazujících frameworků a bundlerů, zejména Vite, což významně zasahuje širší ekosystém.
Tato zranitelnost (CVSS 10.0) umožňuje neautentizovaným vzdáleným útočníkům spustit libovolné příkazy na serveru prostřednictvím speciálně upravených HTTP požadavků, obsahujících odkazy na škodlivé objekty. Na rozdíl od zranitelností, které vyžadují specifické chybné konfigurace, spočívá tato chyba v mechanismu parsování požadavků přímo v jádru knihovny, což vystavuje riziku jakoukoli veřejně dostupnou aplikaci Next.js (verze 15.x, 16.x a 14.x Canary).
Ačkoli kód proof-of-concept (PoC) zatím není dostupný, předpokládáme, že skupiny provozující Ransomware-as-a-Service (RaaS) a zprostředkovatelé počátečního přístupu (IAB) tuto zranitelnost velmi rychle zneužijí k získání přístupu do firemních sítí, jakmile bude PoC zveřejněn. Je nutné přijmout okamžitá opatření k eliminaci rizika.
Poznámka k souvisejícím zranitelnostem: Zatímco CVE-2025-55182 ovlivňuje samotnou knihovnu React, pro Next.js byla původně vedena samostatná zranitelnost pod označením CVE-2025-66478, která však byla následně zamítnuta jako duplicitní.
Proč musíte jednat hned
Nové zranitelnosti edge zařízení, jako například React2Shell, slouží jako „výchozí bod“ pro rychlé získání počátečního přístupu. Jak ukazuje přiložený workflow, útoky obvykle začínají masivní vlnou automatizace do 24 hodin od zveřejnění PoC. Po nasazení webshellů, které umožní průnik do sítě, přebírají kontrolu lidské operátorské týmy napojené na RaaS skupiny. Tato manuální fáze může začít během několika hodin nebo až po týdnech – v závislosti na hodnotě cíle a aktuálním vytížení útočníků. To je standardní ransomware postup pro rok 2025, který stojí za nejhorším ransomware měsícem v historii.

„Dvě fáze ransomwarového útoku zahájeného kompromitací zařízení na okraji sítě.
Je nutné okamžitě jednat
Organizace by měly tuto situaci považovat za nouzovou. Rozdíl mezi automatickým nasazením shellu a manuálním průnikem je vaší příležitostí.
Snížení rizika: Okamžitě opravte postižené systémy nebo zablokujte provoz.
Monitorování: Pečlivě sledujte laterální pohyb vycházející z DMZ.
Sledování: Buďte v pozoru ohledně zveřejněných indikátorů kompromitace (IOC).
Tuto situaci musíte považovat za nouzovou. Využijte krátké okno k aktualizaci systémů, blokaci škodlivého provozu a monitorování DMZ pro případný laterální pohyb, než začne manuální fáze útoku.
Přehled React2Shell
CVE-2025-55182 je logická chyba v rámci protokolu "Flight", což je mechanismus, který React používá pro komunikaci mezi serverovými a klientskými komponentami. Tato chyba ovlivňuje výchozí konfigurace široce používaných frameworků, zejména Next.js (verze 15.x, 16.x a některé Canary buildy 14.x).
Na rozdíl od zranitelností, které vyžadují konkrétní nesprávnou konfiguraci, se tato chyba nachází přímo v základní knihovně, která zpracovává requesty. Pokud aplikace využívá React Server Components – což je výchozí nastavení pro Next.js "App Router" – je vystavena riziku neautentizovaného zneužití z veřejného internetu.
Nezabezpečená deserializace
V moderních architekturách, jako je RSC, vykresluje server jednotlivé komponenty a odesílá je do klientského prohlížeče. Aby to bylo možné, musí být komplexní datové struktury (objekty) převedeny do textového streamu, který lze přenést přes HTTP. Tento proces se nazývá serializace. Když server obdrží odpověď nebo požadavek, musí z tohoto textového streamu znovu sestavit původní objekty; tomu se říká deserializace. Proces převodu textu zpět na objekty je široce považován za jednu z nejnebezpečnějších tříd softwarových zranitelností („Insecure Deserialization“, klasifikováno jako CWE‑502). Zranitelnost React2Shell se nachází v balíčku react-server, konkrétně v tom, jak zpracovává objektové reference během deserializace.
Pro pochopení této zranitelnosti je nutné porozumět také Event Loopu – internímu mechanismu JavaScriptu pro správu úloh běžících na pozadí (asynchronních operací).
Když server používá příkaz await, ve skutečnosti předává úlohu Event Loopu se sdělením: „Pozastav mě a probuď, až tato operace skončí.“ Aby Event Loop ověřil, zda je objekt skutečně platnou asynchronní úlohou, řídí se striktním postupem: hledá funkci .then() a tu následně provede.
Event Loop předpokládá, že spuštění .then() je bezpečný, standardizovaný způsob registrace callbacku na výsledek. Právě tento automatismus zranitelnost zneužívá. Útočník připojí nebezpečný systémový příkaz k vlastnosti .then, čímž Event Loop oklame a donutí ho spustit škodlivý kód právě ve chvíli, kdy se snaží registrovat asynchronní úlohu.
files = {
"0": (None, '["$1"]'),
"1": (None, '{"object":"foo","name":"$2:fooName"}'),
"2": (None, '{"fooName":"bar"}'),
}
Server to považuje za obyčejná data. Je to bezpečné a na serveru React se to deserializuje následovně:
{ object: ‘foo’, name: ‘bar’ }
Scénář zneužití
Útočník využije tuto zranitelnost k odkazu na interní systémový nástroj – Function Constructor (který vytváří a spouští kód z jednoduchého textového řetězce) – a přiřadí jej ke speciální vlastnosti .then.
let maliciousObject = {
// The attacker forces the "then" property to be the system's Code Builder
then: Function
};
Server se automaticky pokouší tento objekt „vyřešit“, protože vypadá jako Promise (obsahuje vlastnost .then).
Tento příklad využívá vestavěný Function Constructor k jednoduché demonstraci principu. Ačkoli tato konkrétní technika umožňuje útočníkovi spustit systémový nástroj, nemusí okamžitě vést k vzdálenému spuštění kódu (Remote Code Execution - RCE), protože jí chybí “argument binding“ (schopnost předat funkci konkrétní příkazy). Jasně však ukazuje samotný mechanismus zranitelnosti.V reálném útoku by útočníci použili jiné nástroje (například modul vm v Node.js), které lze řetězit a umožňují předávat škodlivé argumenty – a tím dosáhnout plného RCE.
Zatímco základní zneužití pravděpodobně způsobí pád serveru (DoS), pokročilejší payload dokáže tuto traversal manipulaci zneužít k úniku z rozsahu objektu. Odkazem na globální objekty dostupné v prostředí Node.js, může útočník spouštět spouštět příkazy shellu přímo na serveru.
Zpravodajské varování
Zaznamenali jsme rychlý nárůst počtu zavádějících a nebezpečných PoC, které kolují ve veřejných repozitářích a agregátorech zranitelností. Bezpečnostní týmy musí být velmi opatrné.
Riziko 1: Falešně negativní výsledky (neplatná logika)
Mnoho kolujících skriptů spoléhá na to, že vývojář aplikace explicitně odhalí nebezpečné funkce (např. vm#runInThisContext, child_process#exec, fs#writeFile). To však není platný test pro CVE‑2025‑55182. Skutečná zranitelnost se týká parsování požadavků v rámci jádra knihovny a nevyžaduje tyto ruční odhalení. Testování těmito neplatnými skripty povede k „neúspěšnému exploitu“, což může týmy mylně přesvědčit, že jsou v bezpečí.
Riziko 2: Provozní bezpečnost (Malware)
Útočníci aktivně vkládají do repozitářů falešné PoC skripty obsahující škodlivé payloady (např. info-stealery, backdoory nebo ransomware). Nikdy nespouštějte neověřený kód z GitHubu nebo odkazů ze sociálních sítí bez předchozí kontroly. Vždy auditujte kód jakéhokoli třetího nástroje či scanneru před jeho spuštěním.
Chcete-li se zcela vyhnout spouštění skriptů třetích stran, můžete použít bezpečnou sondu curl z části „Doporučení“, která bezpečně testuje podpis chyby parseru, aniž by spouštěla kód nebo riskovala infekci malwarem.
Doporučení
Doba mezi zveřejněním a masovým zneužitím se krátí. Okamžitě proveďte níže uvedená opatření.
1. Oprava kritických komponent (priorita 0)
Okno pro zmírnění rizika se uzavírá. Je nezbytné okamžitě aktualizovat jak jádro knihovny React, tak framework Next.js na níže uvedené bezpečné verze. Tato opatření řeší jak zranitelnost v samotném Reactu (CVE-2025-55182), tak její dopad na implementace v Next.js.

Poznámka: Opatření specifická pro jednotlivé platformy byla nasazena společnostmi Vercel, Netlify, Cloudflare a dalšími. Samostatně hostované instance (např. Docker, AWS, Azure) však zůstávají plně vystaveny riziku a musí být opraveny ručně.
2. Ověřte stav zranitelnosti
Použijte následující příkaz curl k otestování vašeho serveru. Tento krok ověřuje výskyt konkrétní chyby parsování, vrácenou zranitelnou implementací protokolu "Flight".
# This probe attempts to trigger the parser error without executing code.
curl -v -k -X POST "http://localhost:3000/" \
-H "Next-Action: 1337" \
-F '1="{}"' \
-F '0=["$1:a:a"]'
Zranitelné: Vrací chybu 500 Internal Server Error obsahující E{"digest"}.
Opravené/Bezpečné: Vrací chybu 400 Bad Request nebo ignoruje neplatný klíč.
3. Implementujte pravidla nouzového WAF
Pokud nelze okamžitě provést záplatu, nakonfigurujte svůj Web Application Firewall (WAF) tak, aby blokoval specifické vzorce útoků.
Pravidlo blokování: Odmítnout požadavky multipart/form-data, kde klíče formuláře obsahují jak oddělovače dvojtečky (:) tak referenční značky ($). Tento vzor je charakteristický pro exploit payload používaný k manipulaci s logikou procházení getOutlinedModel().
4. Síťové omezení
Po úspěšném kompromitování by obránci měli očekávat buď navázání C2 spojení prostřednictvím webshellu, nebo nasazení kryptomineru. První případ představuje kritický indikátor blížícího se laterálního pohybu útočníka, zatímco druhý primárně ovlivňuje systémové zdroje. Zatímco standardní doba laterálního pohybu je v průměru dva týdny, pokročilí útočníci, jako je Akira, tuto dobu výrazně zkracují.
Omezení odchozího provozu: Nakonfigurujte filtrování odchozího provozu tak, aby byly blokovány všechny odchozí připojení z webových serverů, s výjimkou nezbytných API uvedených v seznamu povolených (např. databáze, služby třetích stran). Tím se přeruší připojení „reverzního shellu“ zpět k útočníkovi.
Segmentace: Izolujte a monitorujte DMZ, abyste zabránili laterálnímu pohybu v případě napadení webového serveru. Provozovatelé ransomwaru obvykle využívají tento počáteční opěrný bod k proniknutí do vnitřní infrastruktury.
5. Předpokládejte průnik
Pokud byl váš neaktualizovaný server vystaven veřejnému internetu před 3. prosincem 2025, proveďte šetření zaměřené na známky kompromitace. I když dosud nebylo potvrzeno zneužití v reálném provozu, nespoléhejte se na absenci veřejně dostupného PoC. Přestože masové zneužití obvykle následuje po zveřejnění PoC kódu, sofistikovaní útočníci mohou vyvinout soukromé exploity okamžitě.



Komentáře