TL; DR
React2Shell (CVE-2025-55182) ustvarja kritično Tveganje RCE čez Komponente strežnika React (RSC) in ogrodja, ki jih vključujejo, vključno z Naprej.jsKer ranljivost živi v notranjosti RSC serializacijska in deserializacijska plast, napadalci lahko pošljejo izdelano zahtevo HTTP in sprožijo neavtentificirano oddaljeno izvajanje kode, tudi če ekipe izvajajo privzete konfiguracije ogrodja. Naprej.js aplikacije so najbolj izpostavljene, ker sprejemajo in obdelujejo React Flight koristni tovori privzeto prek HTTP.
Napaka vpliva na več različic Paketi strežnika React, napadalci pa za izkoriščanje ne potrebujejo logike aplikacije po meri. Varnostni raziskovalci kažejo skoraj 100-odstotno zanesljivost, zgodnji pregledi pa razkrivajo, da so mnoga oblačna okolja ranljiva. Naprej.js primerov. Ekipe morajo takoj namestiti popravke in potrditi njihov celoten ekosistem, da se zmanjša Tveganje RCE za React2Shell (CVE-2025-55182).
Kritična ranljivost, o kateri je bilo 29. novembra poročano prek programa nagrajevanja za napake pri Meta, je sprožila nujne odzive v celotnem ekosistemu JavaScript.
Imenovani CVE-2025-55182, razkrito 3. decembra, zdaj znano kot React2Shell je ranljivost največje resnosti, ki vpliva Komponente strežnika React skupaj z ogrodji, ki jih vključujejo. Sprva je bil dodeljen ločen identifikator ranljivosti Next.js (CVE-2025-66478), vendar ga je NVD kasneje združil v primarni React CVE kot podvojen vnos.
Osnovna težava je ista, nevarna obravnava serializiranih RSC koristnih tovorov, ki jih je mogoče sprožiti prek zahteve HTTP. To zlonamernemu akterju odpre vrata, da pošlje manipulirano zahtevo HTTP, ki povzroči, da se na strežniku po tem, ko je bil deserializirano z Reactom.
Pregled CVE-2025-55182
Komponente strežnika React so globoko integrirane v sodobne ogrodja in so v mnogih primerih privzeto omogočene. Zaradi tega so lahko aplikacije izpostavljene React2Shell (CVE-2025-55182) tudi če nikoli eksplicitno ne definirajo končne točke strežniške funkcije. Implementacija RSC je še vedno prisotna in že samo to je dovolj za aktiviranje ranljivih poti kode in ustvarjanje znatne Tveganje RCE.
Napaka izhaja iz načina, kako Protokol React Flightl obdeluje določene strukturirane koristne tovore. Starejše različice so poskušale prečkati poti objektov, podane v koristnem tovoru, ne da bi preverile, ali je struktura veljavna ali pričakovana. Napadalec bi lahko manipuliral s tem postopkom in na koncu dosegel izvajanje kode na strežniku. Ni potrebna avtentikacija, posebna konfiguracija in logika, specifična za aplikacijo. Ker težava obstaja v vnaprej pripravljenih konfiguracijah, standard Uvedbe so izpostavljene brez potrebe po kakršnih koli nenavadnih pogojih.
Do izkoriščanja pride, ko napadalci pošljejo zlonamerne zahteve HTTP POST, ki zlorabljajo »vm.runInThisContext»mehanizem« prek dejanj strežnika. Medtem ko React ne razkrije neposredno ranljive končne točke, jo Next.js razkrije in ustvari pristen vektor oddaljenega napada.
Next.js sprejema koristne podatke Flight iz katere koli zahteve, jih obdela brez ustrezne validacije in jih posreduje deserializatorju Reacta. Sistem te zunanje vhode obravnava kot zaupanja vredne, kar napadalcem omogoča doseganje izvedba oddaljenega kode prek javno dostopnih končnih točk s polnimi privilegiji procesa Node.js na ciljnem strežniku.
Resnost se znatno poveča, ker privzete konfiguracije ostajajo ranljive za React2Shell (CVE-2025-55182) in iz tega izhaja Tveganje RCE. standard Aplikacija Next.js, ki jo ustvarite z create-next-app se razkrije brez potrebe po spremembah kode po meri ali konfiguracije. Varnostni raziskovalci potrjujejo skoraj 100-odstotno zanesljivost izkoriščanja in poročajo, da 39 % oblačnih okolij izvaja ranljive primerke, medtem ko 44 % vseh okolij izvaja javno izpostavljene aplikacije Next.js, na katere vpliva React2Shell.
Razumevanje izpostavljenosti React2Shellu
Ranljive različice zajemajo več izdaj:
| Sestavina | Prizadete različice |
|---|---|
| react-server-dom-webpack | 19.0, 19.1.0, 19.1.1, 19.2.0 |
| react-server-dom-parcel | 19.0, 19.1.0, 19.1.1, 19.2.0 |
| react-server-dom-turbopack | 19.0, 19.1.0, 19.1.1, 19.2.0 |
Ker veliko ogrodji v jedru vgrajujejo podporo za RSC, aplikacije pogosto podedujejo ranljivo kodo, ne da bi se tega zavedale. Vsako ogrodje ali ponudnik paketov, ki dobavlja te pakete, lahko aplikacijo izpostavi virusu React2Shell (CVE-2025-55182) in njegovemu tveganju RCE. To vključuje:
- Next.js (usmerjevalnik aplikacij)
- Predogled RSC usmerjevalnika React
- Vtičnik Vite RSC
- Vtičnik RSC za pakete
- SDK za Redwood
- Vaku
- Razstava
Next.js je še posebej prizadet, ker privzeto uporablja končne točke, povezane z RSC, prek HTTP. Različice, ki se začnejo z ... 14.3.0 gradnje Canary, skupaj z večino 15.x in zgodaj 16.x izdaje, vsebujejo ranljivo implementacijo. Vsakdo, ki uporablja canary 14.3.0-kanarček.77 ali kasneje bi moral vrniti se k stabilna 14.x vejo, dokler ni objavljena popravljena različica za Canary.
Popravljene različice Next.js vključujejo:
| Sestavina | Popravljene različice |
|---|---|
| Naprej.js | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7 |
Javna dokazila o nameri in zanesljivo zaznavanje
Po razkritju ranljivosti so začeli krožiti številni domnevni dokazi o konceptih. Mnogi od njih so bili bodisi netočni bodisi so temeljili na napačnih predpostavkah. Avtor prvotne ranljivosti, Lachlan Davidson, je to javno potrdil na react2shell da se dokazila o delovanju (PoC), ki krožijo na GitHubu, ne ujemajo z izkoriščanjem, ki je bilo zasebno deljeno z vzdrževalci React/Next.js, in podal svoje lastno potrdilo o sodelovanju.
Glavna težava pri zgodnjih javnih poskusih je njihovo nezmožnost prepoznavanja, da izkoriščanje uspeva proti standard Uvedbe Next.js brez potrebe po posebni logiki aplikacije ali funkcijah na strani strežnika.
Varnostni raziskovalci iz več organizacij so poudarili, da odkrivanje ranljivosti zahteva več kot le ugotavljanje prisotnosti RSC. Ekipa Assetnote je objavila zanesljiva metoda odkrivanja in skener sposoben potrditi težavo brez uporabe logike izkoriščanja. Metasploit bo kmalu imel na voljo izkoriščanje tudi za to ranljivost.
Pristop zaznavanja izkorišča način, kako React Server obravnava reference lastnosti objektov z uporabo ločil dvopičja znotraj ReactFlightClientConfigBundlerWebpack.js/requireModule() funkcija. Ko ranljive različice obdelajo posebej strukturiran večdelni koristni tovor, ki poskuša prečkati neobstoječe poti vgnezdenih objektov, sprožijo predvidljive odzive na napake. Diagnostična zahteva pošlje referenčni vzorec, kot je `$1:a:a` seznanjeno s praznim objektom. Ranljive implementacije poskušajo to razrešiti kot dostop do vgnezdene lastnosti na nedoločeni vrednosti, kar povzroči izjemo. Strežnik vrne stanje 500 z značilnim vzorcem zgoščevanja napak v telesu odgovora.
export function requireModule<T>(metadata: ClientReference<T>): T { let moduleExports = __webpack_require__(metadata[ID]); if (isAsyncImport(metadata)) { if (typeof moduleExports.then !== 'function') { // This wasn't a promise after all. } else if (moduleExports.status === 'fulfilled') { // This Promise should've been instrumented by preloadModule. moduleExports = moduleExports.value; } else { throw moduleExports.reason; } } if (metadata[NAME] === '*') { // This is a placeholder value that represents that the caller imported this // as a CommonJS module as is. return moduleExports; } if (metadata[NAME] === '') { // This is a placeholder value that represents that the caller accessed the // default property of this if it was an ESM interop module. return moduleExports.__esModule ? moduleExports.default : moduleExports; } return moduleExports[metadata[NAME]]; } Takojšnji ukrepi za organizacije, ki se soočajo z virusom React2Shell (CVE-2025-55182) in tveganjem RCE
Izvedite celovit pregled vaše kodne baze in nameščenih aplikacij za iskanje ranljivih različic paketov. Posebno pozornost posvetite neposrednim odvisnostim paketov strežnika React, implementacijam RSC na ravni ogrodja (Next.js, Waku, Redwood itd.), aplikacijam, zgrajenim z orodji `create-next-app` ali podobnimi orodji za gradnjo, in aplikacijam v vsebnikih, ki lahko vsebujejo zastarele osnovne slike.
Analiza sestave programske opreme (SCA) orodja, kot so Xygeni's SCA lahko samodejno odkrije prizadete odvisnosti v celotnem inventarju programske opreme.
Takojšnja poprava:
Posodobite na popravljene različice, kot so React (19.0.1, 19.1.2, 19.2.1), Next.js (15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7) in vsi paketi ogrodja, ki vključujejo RSC. Te posodobitve uvajajo strogo preverjanje veljavnosti za ravnanje s koristnim bremenom RSC in preprečujejo nevarno razmejevanje referenc lastnosti, ki omogoča izkoriščanje.
Avtomatizirana orodja za sanacijo, kot so Xygenijeva funkcija samodejnega popravljanja, lahko pospeši postopek v velikih kodnih bazah.
Izvedite začasne zaščite WAF:
Medtem ko se popravki širijo skozi vašo uvedbo pipeline, aktivirajte pravila požarnega zidu spletnih aplikacij za takojšnjo zaščito. Večji ponudniki storitev v oblaku so izdali nabore pravil za nujne primere, CloudflareSamodejna zaščita za vse ravni, ko je promet React posredovan prek posrednika, kot tudi AWS, Akamai, Fastly, Google Cloud imeti na voljo podobna obrambna pravila. Te kontrole omogočite takoj, da ustvarite zaščitno plast med prehodnim obdobjem.
Spremljajte sumljiv promet HTTP:
Konfigurirajte beleženje in opozarjanje za kazalnike poskusov izkoriščanja: napačno oblikovani ali nepričakovani koristni tovori protokola RSC Flight, nenavadni vzorci napak 500 na končnih točkah RSC, zahteve POST s sumljivimi glavami `Next-Action` ali `Next-Router-State-Tree`, ponavljajoče se zahteve za poti `/_next/` z večdelnimi koristnimi tovori
Preverite seznam materialov za programsko opremo:
Številni ogrodji pregledno združujejo odvisnosti RSC, zaradi česar so nevidne pri pregledih odvisnosti na površinski ravni. Preglejte svoje celotno SBOM da se zagotovi: da ni več tranzitivnih odvisnosti od ranljivih paketov strežnika React, da posodobitve ogrodja niso nenamerno uvedle starejših implementacij RSC.
Sklepne misli
React2Shell se uvršča med najresnejše ranljivosti ekosistema JavaScript v zadnjih letih, ne zato, ker bi bila ranljivost zapletena, temveč zato, ker RSC tako globoko prodira skozi današnja orodja. Zdaj, ko so popravki na voljo v celotnem ekosistemu, morajo ekipe čim prej uvesti nadgradnje v produkcijo.
Če vaša aplikacija neposredno ali posredno uporablja funkcije strežnika React, morate to ranljivost obravnavati kot popravek najvišje prioritete.






