„React2Shell“ – CVE-2025-55182 – RCE rizika

„React2Shell“: CVE-2025-55182 ir „Next.js“ RCE rizika

Lt; DR

„React2Shell“ (CVE-2025-55182) sukuria kritinį RCE rizika per „React“ serverio komponentai (RSC) ir juos įtvirtinančios sistemos, įskaitant Kitas.jsNes pažeidžiamumas slypi viduje RSC serializacijos ir deserializacijos sluoksniu, užpuolikai gali siųsti sukurtą HTTP užklausą ir ją suaktyvinti neautentifikuotas nuotolinis kodo vykdymas, net kai komandos naudoja numatytąsias sistemos konfigūracijas. Kitas.js paraiškos yra labiausiai matomos, nes jos priima ir apdoroja Reaktyvus skrydis pagal numatytuosius nustatymus naudingosios apkrovos per HTTP.

Šis trūkumas paveikia kelias versijas React serverio paketai, ir užpuolikams nereikia specialios programos logikos, kad galėtų ja pasinaudoti. Saugumo tyrėjai rodo beveik 100 % patikimumą, o ankstyvieji nuskaitymai rodo, kad daugelis debesijos aplinkų yra pažeidžiamos. Kitas.js atvejų. Komandos privalo nedelsdamos pataisyti ir patvirtinti visą jų ekosistemą, kad sumažėtų „React2Shell“ (CVE-2025-55182) RCE rizika.

Lapkričio 29 d. per „Meta“ klaidų paieškos programą pranešta kritinė spraga paskatino skubius veiksmus visoje „JavaScript“ ekosistemoje.

Paskirta CVE-2025-55182, atskleista gruodžio 3 d., dabar vadinama React2Shell yra itin pavojingas pažeidžiamumas, kuris daro įtaką React serverio komponentai kartu su juos integruojančiomis sistemomis. Iš pradžių buvo priskirtas atskiras „Next.js“ pažeidžiamumo identifikatorius (CVE-2025-66478), tačiau vėliau NVD jį sujungė su pagrindiniu „React“ CVE kaip pasikartojantį įrašą.

Pagrindinė problema yra ta pati – nesaugus serializuotų RSC naudingųjų apkrovų, kurias galima suaktyvinti per HTTP užklausą, tvarkymas. Tai atveria kelią kenkėjiškam veikėjui siųsti manipuliuojamą HTTP užklausą, dėl kurios serveryje paleidžiamas savavališkas „JavaScript“ kodas po to, kai jis buvo... deserializuotas naudojant „React“.

CVE-2025-55182 Apžvalga

„React Server“ komponentai yra giliai integruoti į šiuolaikines sistemas ir daugeliu atvejų yra įjungti pagal numatytuosius nustatymus. Dėl šios priežasties programos gali būti veikiamos „React2Shell“ (CVE-2025-55182) net jei jie niekada aiškiai neapibrėžia serverio funkcijos galinio taško. RSC įgyvendinimas vis dar egzistuoja ir vien to pakanka, kad aktyvuotų pažeidžiamus kodo kelius ir sukurtų reikšmingą RCE rizika.

Trūkumas kyla dėl to, kaip „React Flight“ protokolasl apdoroja tam tikrus struktūrinius naudinguosius krovinius. Senesnės versijos bandė pereiti objektų kelius, pateiktus naudingojoje apkrovoje, nepatikrindamos, ar struktūra yra galiojanti arba laukiama. Užpuolikas galėjo manipuliuoti šiuo procesu ir galiausiai pasiekti kodo vykdymą serveryje. Nereikia autentifikavimo, jokios specialios konfigūracijos ir jokios konkrečiai programai skirtos logikos. Kadangi problema egzistuoja jau paruoštose naudoti konfigūracijose, standard diegimai yra prieinami be jokių neįprastų sąlygų.

Išnaudojimas įvyksta, kai užpuolikai siunčia kenkėjiškas HTTP POST užklausas, kurios piktnaudžiauja „vm.runInThisContext„mechanizmą per serverio veiksmus“. Nors „React“ tiesiogiai neatskleidžia pažeidžiamo galinio taško, „Next.js“ tai daro, sukurdamas tikrą nuotolinės atakos vektorių. 

„Next.js“ priima „Flight“ naudingąją apkrovą iš bet kurios užklausos, apdoroja ją be tinkamo patvirtinimo ir perduoda „React“ deserializatoriui. Sistema šiuos išorinius įvestis traktuoja kaip patikimus, todėl užpuolikai gali pasiekti nuotolinis kodo vykdymas per viešai prieinamus galinius taškus su visomis „Node.js“ proceso teisėmis tiksliniame serveryje. 

Rizika gerokai padidėja, nes numatytosios konfigūracijos išlieka pažeidžiamos „React2Shell“ (CVE-2025-55182) ir gautas RCE rizika. standard „Next.js“ programa, kurią kuriate naudodami create-next-app pažeidžia save nereikalaujant jokio pasirinktinio kodo ar konfigūracijos pakeitimų. Saugumo tyrėjai patvirtina beveik 100 % išnaudojimo patikimumą ir praneša, kad 39 % debesijos aplinkų veikia pažeidžiami atvejai, o 44 % visų aplinkų veikia viešai prieinamos „Next.js“ programos, kurias paveikė React2Shell.

„React2Shell“ poveikio supratimas

Pažeidžiamos versijos apima kelis leidimus:

KomponentasPaveiktos versijos
react-server-dom-webpack19.0, 19.1.0, 19.1.1, 19.2.0
react-server-dom-part19.0, 19.1.0, 19.1.1, 19.2.0
react-server-dom-turbopack19.0, 19.1.0, 19.1.1, 19.2.0

Kadangi daugelyje sistemų RSC palaikymas yra integruotas į pagrindinę struktūrą, programos dažnai paveldi pažeidžiamą kodą to nesuvokdamos. Bet kuri sistema ar paketų kūrėja, teikianti šiuos paketus, gali paveikti programą „React2Shell“ (CVE-2025-55182) ir sukelti jos RCE riziką. Tai apima:

  • Next.js (programos maršrutizatorius)
  • React Router RSC peržiūra
  • Vite RSC įskiepis
  • Siuntos RSC įskiepis
  • Redwood SDK
  • Waku
  • Paroda

„Next.js“ yra ypač paveiktas, nes pagal numatytuosius nustatymus jis naudoja su RSC susijusius galinius taškus per HTTP. Versijos, prasidedančios raide 14.3.0 „canary“ versijos, kartu su dauguma 15.x ir anksti 16.x leidimuose yra pažeidžiamas įgyvendinimas. Kiekvienas, naudojantis „canary“ 14.3.0-canary.77 arba vėliau turėtų grįžti prie stabilus 14.x šaka, kol bus paskelbta pataisyta „canary“ versija.

Pataisytos Next.js versijos įtraukti:

KomponentasPataisytos versijos
Kitas.js15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7

Vieši PoC ir patikimas aptikimas

Po pažeidžiamumo atskleidimo pradėjo plisti daugybė tariamų koncepcijos įrodymų. Daugelis jų buvo netikslūs arba pagrįsti klaidingomis prielaidomis. Pirminis pažeidžiamumo autorius Lachlanas Davidsonas viešai patvirtino react2shell kad cirkuliuojantys „GitHub“ saugumo spragų rinkiniai nesutampa su spragomis, kuriomis privačiai pasidalyta su „React“ / „Next.js“ prižiūrėtojais ir kurios buvo pateiktos jo savo PoC

Pagrindinė ankstyvųjų viešųjų bandymų problema yra nesugebėjimas pripažinti, kad išnaudojimas yra sėkmingas prieš standard „Next.js“ diegimai nereikalaujant konkrečios programos logikos ar serverio funkcijų.

Įvairių organizacijų saugumo tyrėjai pabrėžė, kad pažeidžiamumui aptikti reikia daugiau nei vien nustatyti, ar yra RSC. „Assetnote“ komanda paskelbė patikimas aptikimo metodas ir skaitytuvas galintis patvirtinti problemą nenaudojant jokios išnaudojimo logikos. „Metasploit“ netrukus turės prieinamas išnaudojimas dėl šio pažeidžiamumo. 

Aptikimo metodas naudoja tai, kaip „React Server“ tvarko objektų ypatybių nuorodas naudodamas dvitaškių skirtukus „ReactFlightClientConfigBundlerWebpack.js/requireModule()“ funkcija. Kai pažeidžiamos versijos apdoroja specialiai struktūrizuotą daugiadalį naudingąją apkrovą, kuri bando pereiti neegzistuojančius įdėtųjų objektų kelius, jos sukelia nuspėjamus klaidų atsakymus. Diagnostikos užklausa siunčia nuorodos šabloną, pvz. `$1:a:a` suporuotas su tuščiu objektu. Pažeidžiami diegimai bando tai išspręsti kaip įdėtosios ypatybės prieigą prie neapibrėžtos reikšmės, todėl gaunama išimtis. Serveris grąžina 500 būseną su išskirtiniu klaidų santraukos šablonu atsakymo tekste. 

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]]; }  

Neatidėliotini veiksmai organizacijoms, susiduriančioms su „React2Shell“ (CVE-2025-55182) ir RCE rizika

Atlikite išsamų savo kodo bazės ir įdiegtų programų nuskaitymą siekiant rasti pažeidžiamas paketų versijas. Atkreipkite ypatingą dėmesį į tiesiogines „React“ serverio paketų priklausomybes, „Framework“ lygio RSC diegimus („Next.js“, „Waku“, „Redwood“ ir kt.), programas, sukurtas naudojant „create-next-app“ ar panašius pastolių kūrimo įrankius, ir konteinerizuotas programas, kuriose gali būti pasenusių bazinių atvaizdų.

Programinės įrangos sudėties analizė (SCA) įrankiai kaip Ksigenis SCA gali automatiškai aptikti paveiktas priklausomybes visame programinės įrangos inventoriuje. 

Pataisykite nedelsiant:

Atnaujinimai į pataisytas versijas, tokias kaip „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) ir visus karkasinius paketus, kuriuose yra RSC. Šie atnaujinimai įveda griežtą RSC naudingosios apkrovos tvarkymo patvirtinimą ir užkerta kelią nesaugiam ypatybių nuorodų išbraukimui, kuris leidžia išnaudoti spragas. 

Automatiniai taisymo įrankiai, pvz. „Xygeni“ automatinio taisymo funkcija, gali paspartinti procesą didelėse kodų bazėse.

Įdiegti laikinas WAF apsaugas:

Kol pataisymai plinta diegimo metu pipeline, aktyvuokite žiniatinklio programų užkardos taisykles, kad būtų užtikrinta neatidėliotina apsauga. Pagrindiniai debesijos paslaugų teikėjai išleido avarinių taisyklių rinkinius, CloudflareAutomatinė visų lygių apsauga, kai „React“ srautas yra tarpinio serverio pagalba, taip pat AWS, Akamai, Fastly, Google Cloud turėti panašias gynybos taisykles. Įjunkite šiuos valdiklius nedelsdami, kad pereinamuoju laikotarpiu būtų sukurtas apsauginis sluoksnis.

Stebėti įtartiną HTTP srautą:

Konfigūruokite žurnalavimą ir įspėjimus apie išnaudojimo bandymų indikatorius: netinkamai suformuoti arba netikėti RSC Flight protokolo naudingieji duomenys, neįprasti 500 klaidų modeliai RSC galiniuose taškuose, POST užklausos su įtartinomis „Next-Action“ arba „Next-Router-State-Tree“ antraštėmis, pasikartojančios užklausos į „/_next/` kelius su daugiadaliais naudingaisiais duomenimis.

Patikrinkite savo programinės įrangos medžiagų sąrašą:

Daugelyje sistemų RSC priklausomybės yra skaidriai sujungiamos, todėl jos nematomos paviršinio lygio priklausomybių apžvalgose. Išnagrinėkite visą savo SBOM siekiant užtikrinti: nebėra jokių tranzityvių priklausomybių nuo pažeidžiamų „React“ serverio paketų, platformų atnaujinimai netyčia neįvedė senesnių RSC diegimų.

Baigiamosios mintys

„React2Shell“ yra viena rimčiausių „JavaScript“ ekosistemos pažeidžiamumų pastaraisiais metais ne todėl, kad pažeidžiamumo išnaudojimas yra sudėtingas, o todėl, kad RSC taip giliai įsiskverbia į šiuolaikinius įrankius. Dabar, kai pataisymai prieinami visoje ekosistemoje, komandos turi kuo greičiau įdiegti atnaujinimus gamybinėje versijoje.

Jei jūsų programa naudoja „React“ serverio funkcijas, tiesiogiai ar netiesiogiai, šią pažeidžiamumą turite laikyti prioritetiniu taisymu.

sca-tools-software-composition-analyses-tools
Prioritetizuoti, pašalinti ir apsaugoti savo programinės įrangos rizikas
Gaukite nemokamą paskyrą.
Nebūtina kreditinės kortelės.

Apsaugokite savo programinės įrangos kūrimą ir tiekimą

su „Xygeni“ produktų rinkiniu