top of page

Naliehavé bezpečnostné upozornenie: kritická neautentizovaná zraniteľnosť RCE v React (CVE-2025-55182)

ree

TL;DR Očakáva sa, že skupiny používajúce ransomware veľmi rýchlo využijú túto kritickú zraniteľnosť v React (CVSS 10.0) na získanie počiatočného prístupu. Táto zraniteľnosť umožňuje vzdialené spustenie kódu aj pri neautentizovaných útokoch a jej potenciálny vplyv je porovnateľný s Log4j.


3. decembra 2025 bola v ekosystéme React odhalená kritická zraniteľnosť vzdialeného spustenia kódu (RCE), čo okamžite vyvolalo núdzový stav v organizáciách. Hlavná zraniteľnosť (CVE-2025-55182) pochádza z logiky protokolu React „Flight“. Hoci sa framework Next.js považuje za primárny vektor útoku v podnikových prostrediach – hlavne kvôli predvolenému používaniu App Router a React Server Components (RSC) – nie je to jediný možný vstupný bod. Chyba sa šíri aj do iných súvisiacich frameworkov a bundlerov, najmä Vite, čo výrazne ovplyvňuje širší ekosystém.


Táto zraniteľnosť (CVSS 10.0) umožňuje neautentifikovaným vzdialeným útočníkom vykonávať ľubovoľné príkazy na serveri prostredníctvom špeciálne vytvorených HTTP požiadaviek obsahujúcich odkazy na škodlivé objekty. Na rozdiel od zraniteľností, ktoré vyžadujú špecifické nesprávne konfigurácie, táto chyba spočíva v mechanizme analýzy požiadaviek priamo v jadre knižnice, čím vystavuje riziku akúkoľvek verejne dostupnú aplikáciu Next.js (verzie 15.x, 16.x a 14.x Canary).


Hoci kód proof-of-concept (PoC) ešte nie je k dispozícii, očakávame, že skupiny Ransomware-as-a-Service (RaaS) a sprostredkovatelia počiatočného prístupu (IAB) túto zraniteľnosť veľmi rýchlo využijú na získanie prístupu do podnikových sietí, akonáhle bude PoC uvoľnený. Na elimináciu rizika je potrebné prijať okamžité opatrenia.


Poznámka k súvisiacim zraniteľnostiam: Zatiaľ čo CVE-2025-55182 ovplyvňuje samotnú knižnicu React, Next.js pôvodne mal samostatnú zraniteľnosť uvedenú pod CVE-2025-66478, ktorá bola následne zamietnutá ako duplicitná.


Prečo musíte konať hneď teraz


Nové zraniteľnosti v okrajových zariadeniach, ako napríklad React2Shell, slúžia ako „východiskový bod“ pre rýchle získanie počiatočného prístupu. Ako ukazuje priložený pracovný postup, útoky zvyčajne začínajú masívnou vlnou automatizácie do 24 hodín od zverejnenia PoC. Po nasadení webshellov, ktoré umožňujú preniknutie do siete, preberajú kontrolu tímy ľudských operátorov pripojené k skupinám RaaS. Táto manuálna fáza môže začať v priebehu hodín alebo týždňov, v závislosti od hodnoty cieľa a aktuálnej pracovnej záťaže útočníkov. Ide o štandardný postup ransomwaru pre rok 2025, ktorý je zodpovedný za najhorší mesiac v histórii ransomwaru.


ree

Dve fázy útoku ransomware iniciované kompromitovaním zariadení na okraji siete.



Je potrebné okamžite konať.


Organizácie by mali túto situáciu považovať za núdzovú. Rozdiel medzi automatickým nasadením shellu a manuálnym vniknutím je vaša príležitosť.


Zmiernenie rizika: Okamžite opravte postihnuté systémy alebo zablokujte prevádzku.

Monitorovanie: Pozorne sledujte bočné pohyby pochádzajúce z DMZ.

Dohľad: Buďte ostražití voči zverejneným indikátorom kompromitácie (IOC).


Túto situáciu musíte považovať za núdzovú. Využite krátke časové okno na aktualizáciu svojich systémov, blokovanie škodlivého prevádzky a monitorovanie DMZ, či nedochádza k nejakému bočnému pohybu, než začne manuálna fáza útoku.


Prehľad React2Shell


CVE-2025-55182 je logická chyba v protokole „Flight“, ktorý je mechanizmom, ktorý React používa na komunikáciu medzi komponentmi servera a klienta. Táto chyba ovplyvňuje predvolené konfigurácie široko používaných rámcov, najmä Next.js (verzie 15.x, 16.x a niektoré verzie Canary 14.x).


Na rozdiel od zraniteľností, ktoré vyžadujú špecifické nesprávne konfigurácie, táto chyba sa nachádza priamo v jadrovej knižnici, ktorá spracováva požiadavky. Ak aplikácia používa React Server Components – čo je predvolené nastavenie pre Next.js „App Router“ – je zraniteľná voči neautentifikovanému zneužitie z verejného internetu.


Nezabezpečená deserializácia


V moderných architektúrach, ako je RSC, server vykresľuje jednotlivé komponenty a odosiela ich do prehliadača klienta. Aby to bolo možné, komplexné dátové štruktúry (objekty) musia byť konvertované na textový tok, ktorý je možné prenášať prostredníctvom HTTP. Tento proces sa nazýva serializácia. Keď server prijme odpoveď alebo požiadavku, musí z tohto textového toku znovu zostaviť pôvodné objekty; tento proces sa nazýva deserializácia. Proces konverzie textu späť na objekty je všeobecne považovaný za jednu z najnebezpečnejších tried softvérových zraniteľností („nebezpečná deserializácia“, klasifikovaná ako CWE-502). Zraniteľnosť React2Shell sa nachádza v balíku react-server, konkrétne v spôsobe, akým spracováva odkazy na objekty počas deserializácie.


Na pochopenie tejto zraniteľnosti je tiež potrebné pochopiť Event Loop – interný mechanizmus JavaScriptu na správu úloh na pozadí (asynchrónne operácie).


Keď server používa príkaz await, v skutočnosti odovzdá úlohu Event Loop so správou: „Pozastav ma a prebuď ma, keď bude táto operácia dokončená.“ Aby sa overilo, že objekt je skutočne platnou asynchrónnou úlohou, Event Loop postupuje podľa prísneho postupu: vyhľadá funkciu .then() a potom ju vykoná.


Event Loop predpokladá, že spustenie .then() je bezpečný, štandardizovaný spôsob registrácie spätného volania pre výsledok. Práve túto automatizáciu zneužíva táto zraniteľnosť. Útočník pripojí nebezpečný systémový príkaz k vlastnosti .then, čím oklame Event Loop, aby spustil škodlivý kód práve v momente, keď sa snaží zaregistrovať asynchrónnu úlohu.


files = { 

    "0": (None, '["$1"]'), 

    "1": (None, '{"object":"foo","name":"$2:fooName"}'), 

    "2": (None, '{"fooName":"bar"}'), 


Server to považuje za bežné dáta. Je to bezpečné a na serveri React sa to deserializuje takto:

{ object: ‘foo’, name: ‘bar’ } 


Scenár zneužitia


Útočník túto zraniteľnosť využíva na odkazovanie na interný systémový nástroj – Function Constructor (ktorý vytvára a vykonáva kód z jednoduchého textového reťazca) – a priraďuje ho k špeciálnej vlastnosti .then.


let maliciousObject = { 

  // The attacker forces the "then" property to be the system's Code Builder 

  then: Function  

}; 


Server sa automaticky pokúsi „vyriešiť“ tento objekt, pretože vyzerá ako sľub (obsahuje vlastnosť .then).


Tento príklad používa vstavaný Function Constructor, aby ľahko demonštroval tento princíp. Hoci táto konkrétna technika umožňuje útočníkovi spustiť systémový nástroj, nemusí to nevyhnutne viesť k vzdialenému spusteniu kódu (RCE), pretože chýba „viazanie argumentov“ (schopnosť odovzdať konkrétne príkazy funkcii). Jasne však ukazuje samotný mechanizmus zraniteľnosti. Pri skutočnom útoku by útočníci použili iné nástroje (napríklad modul vm v Node.js), ktoré sa dajú reťaziť a umožňujú odovzdávanie škodlivých argumentov, čím dosiahnu úplné RCE.


Zatiaľ čo základný exploit pravdepodobne spôsobí zrútenie servera (DoS), pokročilejší payload môže túto manipuláciu s prechodom využiť na únik z rozsahu objektu. Odkazovaním na globálne objekty dostupné v prostredí Node.js môže útočník spúšťať príkazy shellu priamo na serveri.


Spravodajské varovanie


Zaznamenali sme rýchly nárast počtu zavádzajúcich a nebezpečných PoC, ktoré kolujú vo verejných repozitároch a agregátoroch zraniteľností. Bezpečnostné tímy musia byť veľmi opatrné.


  • Riziko 1: Falošne negatívne výsledky (neplatná logika)

    Mnoho skriptov, ktoré sú v obehu, sa spolieha na to, že vývojár aplikácie explicitne odhalí nebezpečné funkcie (napr. vm#runInThisContext, child_process#exec, fs#writeFile). Nie je to však platný test pre CVE-2025-55182. Skutočná zraniteľnosť sa týka analýzy požiadaviek v jadre knižnice a nevyžaduje tieto manuálne odhalenia. Testovanie s týmito neplatnými skriptami bude mať za následok „neúspešný exploit“, čo môže tímy zavádzať do omylu, že sú bezpečné.

  • Riziko 2: Prevádzková bezpečnosť (Malware)

    Útočníci aktívne nahrávajú do úložísk falošné skripty PoC obsahujúce škodlivé dáta (napr. programy na krádež informácií, backdoory alebo ransomware). Nikdy nespúšťajte neoverený kód z GitHubu alebo odkazy zo sociálnych sietí bez toho, aby ste ich najskôr skontrolovali. Pred spustením vždy skontrolujte kód akéhokoľvek nástroja alebo skenera tretej strany.


Ak chcete úplne zabrániť spúšťaniu skriptov tretích strán, môžete použiť bezpečnú sondu curl z časti „Odporúčania“, ktorá bezpečne testuje podpis chyby parseru bez spúšťania kódu alebo rizika infikovania malvérom.


Odporúčania


Čas medzi zverejnením a masovým zneužitím sa skracuje. Prosím, okamžite vykonajte nižšie uvedené opatrenia.


1. Oprava kritických komponentov (priorita 0)

Okno na zmiernenie rizika sa zatvára. Je nevyhnutné okamžite aktualizovať jadro knižnice React aj rámec Next.js na bezpečné verzie uvedené nižšie. Tieto opatrenia riešia ako zraniteľnosť v samotnom React (CVE-2025-55182), tak aj jej vplyv na implementácie v Next.js.


ree

Poznámka: Opatrenia špecifické pre jednotlivé platformy boli nasadené spoločnosťami Vercel, Netlify, Cloudflare a ďalšími. Samostatne hostované inštancie (napr. Docker, AWS, Azure) však naďalej zostávajú plne vystavené riziku a musia byť opravené ručne.


2. Skontrolujte stav zraniteľnosti


Na otestovanie servera použite nasledujúci príkaz curl. Tento krok overuje výskyt konkrétnej chyby analýzy, ktorú vráti zraniteľná implementácia 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"]' 


  • Zraniteľný: Vráti chybu 500 Internal Server Error obsahujúci E{"digest"}.

  • Opravené/Bezpečné: Vráti chybu 400 Bad Request alebo ignoruje neplatný kľúč.


3. Implementácia núdzových pravidiel WAF

Ak nemôžete opravu nainštalovať ihneď, nakonfigurujte svoj Web Application Firewall (WAF) tak, aby blokoval konkrétne vzory útokov.


  • Pravidlo blokovania: Odmietnuť požiadavky multipart/form-data, kde kľúče formulára obsahujú oddeľovače dvojbodky (:) aj referenčné znaky ($). Tento vzor je charakteristický pre exploit payload používaný na manipuláciu s logikou prechádzania getOutlinedModel().


4. Sieťové obmedzenia

Po úspešnom kompromise by obrancovia mali očakávať buď vytvorenie C2 pripojenia prostredníctvom webshellu, alebo nasadenie kryptomineru. Prvé je kritickým indikátorom bezprostredného bočného pohybu útočníka, zatiaľ čo druhé ovplyvňuje predovšetkým systémové zdroje. Hoci štandardná dĺžka bočného pohybu je v priemere dva týždne, pokročilí útočníci, ako je Akira, túto dobu výrazne skracujú.


  • Obmedzenia odchádzajúceho prevádzky: Nakonfigurujte filtrovanie odchádzajúceho prevádzky tak, aby blokovalo všetky odchádzajúce pripojenia z webových serverov, s výnimkou nevyhnutných rozhraní API uvedených v zozname povolených (napr. databázy, služby tretích strán). Tým sa preruší pripojenie „reverse shell“ späť k útočníkovi.

  • Segmentácia: Izolujte a monitorujte DMZ, aby ste zabránili bočnému pohybu v prípade kompromitácie webového servera. Prevádzkovatelia ransomwaru zvyčajne využívajú túto počiatočnú oporu na preniknutie do vnútornej infraštruktúry.


5. Predpokladajte prienik

Ak bol váš neopravený server vystavený verejnému internetu pred 3. decembrom 2025, vykonajte vyšetrovanie s cieľom zistiť príznaky kompromitácie. Hoci zatiaľ nebolo potvrdené žiadne skutočné zneužitie, nespoliehajte sa na absenciu verejne dostupného PoC. Hoci masové zneužitie zvyčajne nasleduje po uverejnení kódu PoC, sofistikovaní útočníci môžu okamžite vyvinúť súkromné exploity.


Komentáre


bitdefender-lb-footer-banner.png
Bitdefender_logo-white.png
map.png

Copyright © 1997 - 2023 Bitdefender. All rights reserved

IS4 security SK s.r.o.
Country Partner Bitdefender ČR/SK
Karadžičova 16, 821 08 Bratislava
Slovenská republika


      +421 907 727 354
      info@is4security.sk
bottom of page