Naplófájlok, riasztások és telemetriai adatok továbbítása adatdiódán keresztül

Tudja meg, hogyan
A helyszíni fordításokhoz mesterséges intelligenciát használunk, és bár törekszünk a pontosságra, nem biztos, hogy mindig 100%-os pontosságúak. Megértését nagyra értékeljük.

React2Shell (CVE-2025-55182): Kritikus távoli kódfuttatás Server React Server

By Loc Nguyen, behatolástesztelési csoportvezető
Ossza meg ezt a bejegyzést

A CVE-2025-55182 egy kritikus, hitelesítés előtti távoli kódfuttatási sebezhetőség Server React Server , amelynek CVSS-pontszáma 10,0 – ez a lehetséges legmagasabb súlyossági besorolás. Az OPSWAT Fellowship Program keretében ösztöndíjasaink átfogó technikai elemzést végeztek erről a sebezhetőségről, megvizsgálva annak kiváltó okát a React Flight deserializációs protokollban, a teljes kihasználási láncot, valamint annak széles körű hatását a modern webes ökoszisztémára. Ez a blogbejegyzés bemutatja eredményeinket, valamint gyakorlati útmutatást nyújt a védelemmel foglalkozók számára.

A React a világ egyik legelterjedtebb front-end könyvtárává vált, amely a modern webes és mobile jelentős részét támogatja. A Stack Overflow fejlesztői felmérései következetesen a Reactot sorolják a legjobb webes keretrendszerek közé, amelynek használata világszerte meghaladja a professzionális fejlesztők 40%-át. Ezzel a növekedéssel párhuzamosan a React csapata bevezette Server React Server (RSC) Server a React 19 egyik alapvető jellemzőjeként – ez egy paradigmaváltás, amely a renderelési logikát a kliensről a szerverre helyezi át, lehetővé téve az optimalizált teljesítményt és a szerveroldali és kliensoldali kódok szorosabb integrációját.

Ez az architektúrafejlesztés azonban egy kritikus új támadási felületet hozott magával. 2025. november 29-én Lachlan Davidson biztonsági kutató jelentette a Meta Bug Bounty programjának a React szerveroldali deszerializációs logikájában található sebezhetőséget. A 2025. december 3-án CVE-2025-55182 kóddal nyilvánosságra hozott hiba lehetővé teszi a hitelesítés nélküli távoli kódfuttatást egyetlen, speciálisan kialakított HTTP-kérés révén. A CWE-502 (megbízhatatlan adatok deszerializálása) kategóriába sorolt sebezhetőség nem igényel hitelesítést, felhasználói beavatkozást vagy speciális alkalmazáskonfigurációt – a termelésre készített alapértelmezett create-next-app telepítés azonnal kihasználható.

1. ábra: CVE-2025-55182 (forrás: NVD)

A hatás azonnali és súlyos volt. A nyilvánosságra hozatalt követő 48 órán belül számos támadási kampányt észleltek a valós környezetben. A Shadowserver Foundation adatai szerint több mint 77 000 nyilvános IP-címet azonosítottak potenciálisan sebezhetőként. A Cloudflare telemetriai adatai szerint a nyilvánosságra hozatalt követő héten több mint 582 millió kihasználási kísérletet rögzítettek, az támadások intenzitása átlagosan óránként több mint 3500 egyedi forrás-IP-cím volt, a csúcsérték pedig 16 585 egyidejű támadó IP-cím volt. A Wiz Research jelentése szerint a felhőalapú környezetek 39%-a tartalmazott sebezhető példányokat. A CISA 2025. december 5-én felvette a sebezhetőséget a Known Exploited Vulnerabilities (KEV) katalógusába.

A támadók figyelemre méltó gyorsasággal és sokszínűséggel jártak el. A Trend Micro több kampányt is dokumentált – köztük az „emerald” és a „nuts” botnet-kampányokat –, amelyek során Cobalt Strike jeladókat, Sliver implantátumokat, a Nezha felügyeleti ügynököt, Fast Reverse Proxy (FRP) alagutakat, valamint egy újszerű „Secret-Hunter” hasznos terhet vetettek be, amely olyan nyílt forráskódú hitelesítőadat-gyűjtő eszközöket használt fegyverként, mint a TruffleHog és a Gitleaks. Threat Intelligence Google Threat Intelligence azonosított néhány, Kínához kapcsolódó fenyegetési klasztert (UNC6600, UNC6586, UNC6588, UNC6603), amelyek speciális eszközöket – többek között a MINOCAT alagútképzőt, a SNOWLIGHT letöltőt, a COMPOOD hátsóajtót és a HISONIC hátsóajtót – vetettek be, valamint iráni kapcsolattal rendelkező szereplőket és pénzügyi motivációjú csoportokat, amelyek kriptovaluta-bányászati kampányokat folytattak. Az AWS már december 4-én dokumentálta, hogy a Kínához kapcsolódó csoportok kísérleteztek a kihasználási kóddal, még mielőtt a teljes proof-of-concept kód nyilvánosan elérhetővé vált volna.

A React szerverkomp Server ensekről

A React egy felhasználói felületek készítésére szolgáló JavaScript-könyvtár, amelyet a Meta és egy széles körű nyílt forráskódú közösség tart karban. A React 19-ben bevezetett React Server (RSC) alapvető változást jelent a React-alkalmazások renderelésének kezelésében. A hagyományos, teljes egészében a böngészőben futó klienskomponensekkel ellentétben a szerverkomponensek a szerveren futnak, és a felhasználói felület sorosított ábrázolását állítják elő, amelyet a kliensnek továbbítanak. Ez a kialakítás csökkenti a böngészőbe továbbított JavaScript mennyiségét, javítja az interaktivitás eléréséhez szükséges időt, és közvetlen hozzáférést biztosít a szerveroldali erőforrásokhoz, például adatbázisokhoz és fájlrendszerekhez.

2. ábra: React Server (RSC)

Az RSC a „Flight” nevű egyedi sorosítási protokollt használja az adatok kódolására és továbbítására az ügyfél és a szerver között. Amikor egy ügyfél meghív egy Server (korábban Server néven ismert), a böngésző a Flight formátumot felhasználva strukturált HTTP-kérésbe csomagolja a függvény argumentumait. A szerver deszerializálja ezt a hasznos adatot, végrehajtja a kért funkciót, és visszaküldi az eredményt az ügyfélnek. Ez a szoros kapcsolat az ügyfél és a szerver között (bár architektúrájában elegáns) azt jelenti, hogy a deszerializációs logika bármely hibája azonnali és katasztrofális következményekkel járhat, ahogyan azt a CVE-2025-55182 is bizonyítja.

A biztonsági rés nem csupán magát a React-et érinti, hanem az arra épülő keretrendszerek teljes ökoszisztémáját is. A Next.js (amely külön tanácsadást kapott, CVE-2025-66478, amelyet később duplikátumként elutasítottak), a React Router, a Waku, a Parcel RSC-bővítménye, a Vite RSC-bővítménye és a RedwoodSDK mind érintettek. Még azok az alkalmazások is sebezhetőek lehetnek, amelyek nem határoznak meg kifejezetten Server , ha az RSC-támogatás engedélyezve van a keretrendszerben.

Műszaki háttér

A sebezhetőség vizsgálata előtt három alapvető fogalom képezi a kihasználási lánc alapját: a JavaScript „await” viselkedése a „thenable” objektumokkal, a prototípuslánc bejárása, valamint a React Flight protokoll darabokra osztott adatmodellje.

A JavaScript await parancsa és a Thenable objektumok

Az await operátor felfüggeszti az aszinkron függvény végrehajtását mindaddig, amíg a várt kifejezés ki nem ért. Ha az await natív Promise-ra bukkan, megvárja annak lezárását, majd visszaadja a teljesített értéket. Az await azonban nem feltétlenül igényel natív Promise-t – bármely .then() metódussal rendelkező objektumot, az úgynevezett „thenable”-t, Promise-szerű konstrukciónak tekint.

Amikor az `await` egy `thenable` objektumra bukkan, meghívja az objektum `.then()` metódusát, átadva a rendszer által biztosított `resolve` és `reject` visszahívásokat. A `resolve`-nak átadott érték lesz az `await` kifejezés eredménye. Fontos, hogy ha a feloldott érték maga is thenable, akkor a beágyazott objektum .then() metódusát rekurzívan hívja meg, amíg el nem éri egy primitív értéket vagy egy lezárt Promise-t. Ez a rekurzív feloldási viselkedés központi szerepet játszik a CVE-2025-55182 kihasználásában.

Láncbejárás prototípusa

Minden JavaScript-objektum belső hivatkozást tart fenn a prototípusára, amely a __proto__ tulajdonságon keresztül érhető el. Amikor egy objektum valamely tulajdonságához hozzáférünk, a JavaScript-motor először az objektum saját tulajdonságait ellenőrzi. Ha a tulajdonság nem található meg, a motor végigjárja a prototípusláncot – az egyes __proto__ hivatkozásokon felfelé haladva –, amíg meg nem találja a tulajdonságot, vagy a lánc az undefined értéknél véget nem ér.

Egy támadó kihasználhatja ezt az öröklődési mechanizmust, hogy az objektum tervezett hatókörén túlmutató tulajdonságokhoz férjen hozzá. Azáltal, hogy a tulajdonságok elérési útvonalába beépíti a __proto__ elemet, a támadó olyan belső metódusokhoz és konstruktorokhoz juthat hozzá, amelyeket az alkalmazás soha nem szánt nyilvánosságra hozásra. A JavaScriptben az obj.__proto__.constructor.constructor kifejezés a globális Function konstruktort adja vissza, amely karakterlánc-bemenetből tetszőleges függvényeket hozhat létre és futtathat.

A React Flight Protocol és a darabokra bontott adatmodell

When a client invokes a Server Function, the browser sends an HTTP POST request with a multipart/form-data body. Each form field contains a numbered “chunk” of serialized data. The Flight protocol uses special string prefixes to encode data types: $<id> references the resolved value of another chunk, $@<id> references the raw chunk object itself, $W<id> represents a Set, $K<id> represents FormData, and $B<id> triggers the blob handler.

Vegyünk egy olyan Server , amelyet az alábbiak szerint definiáltak:

3. ábra: Példa Server

A megfelelő HTTP-kérés több űrlapmezőt tartalmaz, amelyek mindegyike egy kulcsból és egy értékből áll: a 0. mező tartalmazza az argumentumtömböt olyan hivatkozásokkal, mint például „$W1” és „$K2”, míg az 1. és a 2.* mezők azokat az adatokat tartalmazzák, amelyekre ezek a hivatkozások utalnak. A szerver az egyes mezőket érkezésük sorrendjében dolgozza fel, és a közbenső eredményeket „chunkok” nevű objektumokban tárolja.

4. ábra: A példakénti Server meghívásakor generált, megfelelő multipart/form-data HTTP-kérés

A chunk egy thenable objektum, amelynek négy fő tulajdonsága van: status (a feldolgozás állapota), value (a tárolt adat), reason (hibainformáció) és _response (visszautalás a szülő válaszobjektumra). Amikor a szerver találkozik egy await chunk-kal, a chunk .then() metódusa meghívásra kerül. Ha a chunk állapota INITIALIZED, a resolve callback megkapja a chunk.value értéket. Ha az állapot PENDING, BLOCKED vagy CYCLIC, a callbackok sorba kerülnek későbbi végrehajtásra.

5. ábra: A Chunk objektum állapota a deszerializálás során

A chunk_0 általában a meghívott Server argumentumtömbjét jelenti. Miután az összes űrlapmező beérkezett és az összes belső hivatkozás feloldódott, a chunk_0.value a teljesen összeállított argumentumtömböt tartalmazza, amelyet ezután átadnak a célfüggvénynek.

A kérelem teljes feldolgozása (Next.js → React Flight deszerializálás)

Az alábbiakban bemutatjuk, hogyan dolgozza fel a Next.js normál körülmények között a beérkező Server -kérelmet, az HTTP-rétegtől kezdve a React Flight deszerializációs motorig.

6. ábra: A Next.js Server kérelemkezelésének áttekintése

handleAction() függvény – Next.js

Amikor egy Server meghívnak, a kérés a `handleAction` függvénybe kerül. Ez a függvény ellenőrzi a metaadatokat, a fejléceket és a CSRF-tokeneket, valamint meggyőződik arról, hogy a kérés érvényes lekérdezési művelet. Ezután létrehozásra kerül egy busboyStream nevű stream a többrészes űrlap testének elemzéséhez. A decodeReplyFromBusboy függvény eseménykibocsátókat köt ehhez a streamhez, ami a nyers adatok fogadásakor elindítja a React Serverdeszerializációs kezelőfüggvényeit. A decodeReplyFromBusboy visszatérési értéke chunk_0; az await operátor ezt feloldja, és az összeállított értéket átadja a meghívott Server .

7. ábra: handleAction függvény

A getChunk függvény visszaadja az adott azonosítóhoz tartozó darabot. Ha az adott darab még nem létezik, akkor létrehoz egy ResolvedModelChunk objektumot (ha már vannak adatok a response._formData-ban), vagy egy PendingChunk objektumot (ha még nem érkeztek adatok az adott azonosítóhoz).

8. ábra: a getChunk függvény

Amikor a decodeReplyFromBusboy a chunk_0 értéket adja vissza, a blokk még mindig PENDING állapotban van. Az await operátor meghívja a chunk_0.then() metódust, és ideiglenesen elmenti a resolve és a reject visszahívásokat a chunk_0.value és a chunk_0.reason változókba. Ezeket a visszahívásokat a wakeChunk függvény aktiválja újra, miután a hivatkozás feloldása befejeződött.

9. ábra: wakeChunk függvény

Deszerializációs folyamat – React Server

Amikor a busboyStream egy teljes nyers adatmezőt kap, elindítja a „field” eseménykibocsátót, meghívja a resolveField függvényt, és elindítja a deszerializálást – vagyis a nyers űrlapadatok teljes értékű JavaScript-objektumokká történő átalakítását. Ezt a folyamatot a következő függvények irányítják.

resolveField(response, key, value)

10. ábra: resolveField függvény

A kulcs és az érték hozzáadódik a response._formData tárgyhoz. A függvény ezután lekérdezi azt a blokkot, amelynek azonosítója megegyezik a kulccsal. Ha az adott blokk már létezik, akkor a resolveModelChunk függvényt hívja meg annak újbóli létrehozásához. Erre a késleltetett feloldásra azért van szükség, mert az érték hivatkozásokat tartalmazhat olyan mezőkre, amelyek nyers adatai még nem érkeztek meg; ilyen esetben a React Server egy PendingChunk objektumot egyéni resolve és reject visszahívásokkal, hogy később kezelje ezeket a hivatkozásokat.

resolveModelChunk(chunk, value, id)

11. ábra. A resolveModelchunk függvény

A resolveModelChunk létrehoz egy ResolvedModelChunk objektumot RESOLVED_MODEL állapotban, és beilleszti a nyers adatokat. Ezután az initializeModelChunk segítségével rekonstruálja a darabot, majd a wakeChunk hívásával elindítja a sorba állított resolve és reject visszahívásokat, ezzel befejezve az objektum vagy hivatkozás feloldását.

initializeModelChunk(chunk)

12. ábra: initializeModelChunk függvény

Az initializeModelChunk a blokk állapotát CYCLIC-re állítja – jelezve, hogy a hivatkozások feloldása folyamatban van –, majd megkezdi a deszerializálást. A JSON.parse segítségével a chunk.value értékből létrehoz egy nyers JavaScript-objektumot, majd ezt az objektumot átadja a reviveModel függvénynek.

reviveModel(válasz, szülőobjektum, szülőkulcs, érték, hivatkozás)

13. ábra: reviveModel függvény

A reviveModel rekurzív módon feldolgozza az elemzett objektum minden egyes elemét. Ha karakterláncértékre bukkan, a parseModelString függvényt hívja meg annak feldolgozására.

parseModelString(response, obj, key, value, reference)

14. ábra: parseModelString függvény

A parseModelString a karakterlánc előtagja alapján választja ki a megfelelő kezelőt a különböző kódolási típusokhoz. A $ karakterrel kezdődő hivatkozások esetében a getOutlinedModel függvényt hívja meg a darabok közötti hivatkozás feloldásához.

getOutlinedModel(response, reference, parentObject, key, map)

15. ábra: getOutlinedModel függvény

A getOutlinedModel a „:” elválasztójel alapján felbontja a hivatkozást, hogy létrehozza a tulajdonság elérési útját, majd végigjárja ezt az utat a célobjektumon, hogy visszaadja a hivatkozott értéket. Amint az alábbi sebezhetőségi elemzésben részletesen kifejtésre kerül, éppen ezeknek a tulajdonságneveknek az érvényesítésének hiánya jelenti a sebezhetőség pontos forrását.

Sebezhetőségi elemzés

Alapvető ok

CVE-2025-55182 originates from insufficient input validation in the getOutlinedModel() function within React’s server-side Flight reply handler (ReactFlightReplyServer.js). When a chunk reference includes a property path - such as $<id>:<prop1>:<prop2> - the function resolves it by traversing the specified properties on the target chunk object, computing the result as chunk[prop1][prop2].

16. ábra: A getOutlinedModel() függvényben nem megfelelő bemeneti érvényesítés

A kritikus hiba abban rejlik, hogy ezeket a tulajdonságneveket soha nem ellenőrzik. A szerver nem ellenőrzi, hogy a kért tulajdonságok az objektum saját tulajdonságai-e, vagy örökölt prototípus-tulajdonságok. Egy támadó ezért beillesztheti a __proto__-t a tulajdonság útvonalába, hogy végigjárja a prototípus-láncot, és elérje azokat a belső módszereket, amelyekhez soha nem szabadna hozzáférni a felhasználó által vezérelt bemenetből. Például a $1:__proto__:then hivatkozás a Chunk.prototype.then-re oldódik fel – egy olyan függvényre, amelyet a támadó ezután vezérelt argumentumokkal hívhat meg.

17. ábra: A prototípus rosszindulatú bemeneti adatokkal történő feltörése

Sebezhető kód

A támadási lánc a React Flight deszerializációs logikájának két különböző kódútvonalát használja ki.

Az első a Chunk.prototype.then, amely szabályozza, hogy a chunkok hogyan viselkednek thenable-ként. Ha az await operátort egy INITIALIZED állapotú chunkra alkalmazzuk, akkor a resolve(chunk.value) metódus hívódik meg. Ha a chunk.value maga is egy thenable (vagyis egy .then() metódussal rendelkező objektum), akkor az await operátor rekurzívan meghívja a chunk.value.then() metódust. Ez a rekurzív feloldás az a mechanizmus, amelyen keresztül egy támadó a végrehajtást egy tetszőleges függvényre irányíthatja át.

A második a parseModelString() függvényben található $B (blob) előtag-kezelő:

18. ábra: $B (blob) a parseModelString függvényben

A $B esetben a függvény a response._formData.get(response._prefix + id) hívást hajtja végre. Mind az _formData.get, mind az _prefix a darabon belül tárolt _response objektum tulajdonságai. A támadó a prototípuslánc végigjárásával manipulálva ezeket a tulajdonságokat átirányíthatja ezt a hívást, hogy a globális Function konstruktort hívja meg tetszőleges kóddal argumentumként.

Kihasználás

Through prototype chain traversal, an attacker reaches the global Function constructor via the path <any_object>.constructor.constructor. Because Chunk.prototype.then is a function, the path $1:constructor:constructor resolves to the global Function constructor, which accepts a string and returns a callable function containing that code.

19. ábra: A Global Function konstruktor

A gyakorlati alkalmazás lehetséges hatásainak bemutatására ösztöndíjasaink egy olyan koncepcióbizonyító kódot állítottak össze, amely összhangban áll több biztonsági kutatócsoport függetlenül dokumentált elemzéseivel. A támadás két szakaszban zajlik:

1. lépés – A hamis blokk létrehozása:

The object delivered in field 0 acts as a fake chunk. Its then property is set to Chunk.prototype.then via the reference path $1:__proto__:then, allowing the Flight deserialization engine to invoke prototype-level behavior on this attacker-constructed object. The _response._formData.get property is pointed at the global Function constructor via $1:constructor:constructor, and _response._prefix is set to the malicious JavaScript code. The value field contains the string {"then": "$B0"}, instructing the blob handler to invoke itself on the same chunk when resolved. The status field is set to resolved_model so that initializeModelChunk is triggered when .then() is called, causing value to be parsed and the blob handler to fire.

Mivel az 1. mezőt ekkor még nem kapta meg, a React Server létrehoz egy resolve és egy reject visszahívást a függőben lévő hivatkozás kezelésére.

2. szakasz – A kiváltó ok megoldása:

Amint az 1. mező – amely a „$@0” értéket, azaz a 0. darabra mutató nyers hivatkozást tartalmazza – átadásra kerül, a függőben lévő darab feloldódik, és közvetlenül a hamis darabra mutat. Ez elindítja a wakeChunk metódust, amely feldolgozza a sorba állított visszahívásokat, és a hivatkozás feloldása során elindítja a prototípuslánc bejárását. Miután a hamis chunk teljesen feloldódott, a wakeChunk újra meghívásra kerül. Mivel a hamis chunk feloldási visszahívása a Node.js implicit feloldási függvénye, ez meghívja a chunk .then() metódusát, és feloldja annak értékét – végül a Function konstruktoron keresztül létrehozza és végrehajtja a beépített rosszindulatú kódot.

A teljes támadáshoz csupán egyetlen HTTP-kérésre van szükség:

20. ábra: Rosszindulatú kérés

Replacing {{COMMAND}} with any JavaScript code executes it on the server. The reason: -1 field prevents a toString() error during processing. The Next-Action header may contain any arbitrary value - even x - because the vulnerable deserialization occurs before the server validates the requested Server Function. This is what makes the vulnerability pre-authentication: the payload is processed during the deserialization phase, before any application-level authentication or authorization logic is reached.

A támadás sikeres kihasználása esetén a támadó teljes Node.js-végrehajtási környezetet szerez a szerveren, beleértve a shell-parancsok végrehajtásához szükséges child_process-hez való hozzáférést, az adatbázis-hitelesítő adatokat és API tartalmazó környezeti változókat, a helyi fájlrendszert, valamint az oldalirányú mozgást lehetővé tevő felhőalapú metaadat-végpontokat.

Koncepció igazolása

Kutatóink egy ellenőrzött laboratóriumi környezetben sikerült reprodukálniuk a biztonsági rést egy olyan szabványos Next.js-alkalmazás segítségével, amelyet a create-next-app paranccsal generáltak és termelésre kész állapotba hoztak – az alapértelmezett konfigurációban semmilyen módosítást nem végezve. A reprodukció megerősítette, hogy a fent leírt, egyetlen kérésre épülő támadási kód megbízhatóan képes távoli kódvégrehajtást eredményezni.

21. ábra: Sebezhető Next.js webalkalmazás
22. ábra: A támadó feltörte a sebezhető Next.js-kiszolgálót

A kontrollált bemutató során kiderült, hogy egy támadó, aki hálózati hozzáféréssel rendelkezik egy sebezhető Next.js-kiszolgálóhoz, tetszőleges Node.js-kódot futtathat – ideértve a child_process.exec() segítségével történő reverse shell létrehozását, a környezeti változók kiolvasását és a helyi fájlrendszerhez való hozzáférést –, anélkül, hogy bármilyen hitelesítő adatot megadna, vagy alkalmazásszintű hitelesítési ellenőrzéseket váltana ki. A Next-Action fejlécben elfogadott tetszőleges érték tovább erősíti a hiba hitelesítés előtti jellegét: a szerver feldolgozza és deszerializálja a hasznos adatot, mielőtt bármilyen műveletkeresést vagy engedélyezési ellenőrzést végrehajtaná.

Enyhítés

A React-csapat 2025. december 3-án – azaz a sebezhetőség nyilvánosságra hozatalának napján – kiadta a javításokat. A hibajavított verziók a React 19.0.1, 19.1.2 és 19.2.1 verziószámok alatt érhetők el. A javítás szigorú tulajdonság-érvényesítést ad hozzá a getOutlinedModel() és a reviveModel() függvényekhez, kifejezetten blokkolva az örökölt prototípus-tulajdonságok – beleértve a __proto__, a constructor és a prototype tulajdonságokat – feloldását a felhasználó által vezérelt hivatkozási útvonalakból a Flight hasznos adataiban.

A szervezeteknek haladéktalanul meg kell tenniük a következő intézkedéseket:

  1. Frissítsd a React-csomagokat egy javított verzióra (19.0.1, 19.1.2 vagy 19.2.1) az alábbi parancsok futtatásával: npm install react-server-dom-webpack@latest, react-server-dom-parcel@latest vagy react-server-dom-turbopack@latest (a helyzetednek megfelelően).
  2. A keretrendszer-függőségek frissítése – A Next.js, a React Router, a Waku és az egyéb érintett keretrendszerek már kiadták a megfelelő javításokat. A verzió-specifikus frissítési útmutatásokat a React-csapat tanácsadó közleményében találja.
  3. Ne támaszkodjon kizárólag a tárhelyszolgáltatók által hozott védelmi intézkedésekre – bár olyan szolgáltatók, mint a Vercel, a biztonsági rés nyilvánosságra kerülése után ideiglenes WAF-szabályokat vezettek be, ezek csupán átmeneti megoldások, és nem helyettesítik az alapul szolgáló csomagok frissítését.
  4. Ellenőrizze a szerver naplóit az olyan POST-kérelmek tekintetében, amelyek Next-Action fejléccel rendelkeznek, testük pedig multipart/form-data típusú, és tartalmaznak $@ vagy __proto__ mintákat, valamint figyelje az alkalmazásnaplókban a child_process vagy execSync függvények váratlan meghívásait.

Kockázatcsökkentés OPSWAT segítségével

OPSWAT , a MetaDefender™ platform saját fejlesztésű technológiája, biztosítja a szükséges átláthatóságot és ellenőrzést az olyan sebezhetőségek elleni védekezéshez, mint a CVE-2025-55182. Mivel ez a hiba nyílt forráskódú npm-csomagokban (react-server-dom-webpack, react-server-dom-parcel, react-server-dom-turbopack) található, a szervezeteknek először teljes leltárt kell készíteniük arról, hogy ezek a komponensek hol vannak telepítve az infrastruktúrájukban, mielőtt hatékony javításra lenne lehetőség.

23. ábra: Az SBOM észleli a CVE-2025-55182 biztonsági rést

OPSWAT átfogó leltárt készít az összes használt szoftverkomponensről, könyvtárról, konténerről és függőségről. Amikor olyan alkalmazásokat vagy konténerképeket vizsgál, amelyek sebezhető React-csomagokat tartalmaznak, a rendszer automatikusan „Kritikus” minősítéssel jelöli meg a CVE-2025-55182 biztonsági rést, és útmutatást nyújt a rendelkezésre álló javított verziókról, lehetővé téve a biztonsági csapatok számára, hogy prioritásokat állapítsanak meg és orvosolják a problémát, mielőtt a rést kihasználnák.

OPSWAT mind MetaDefender – az egyes alkalmazások és konténerképek vizsgálatához –, mind MetaDefender Software Chain™-ben – a teljes fejlesztési életciklusra kiterjedő, folyamatok szintjén történő átláthatóság biztosításához – elérhető. Ezek együttesen lehetővé teszik a biztonsági csapatok számára, hogy:

  • A sebezhető összetevők gyors felkutatása – Azonnal azonosítsa, mely alkalmazások és konténerek tartalmaznak sebezhető verziójú react-server-dom-* csomagokat, így biztosítva, hogy egyetlen telepítés se maradjon figyelmen kívül.
  • Gondoskodjon a proaktív frissítésről – Folyamatosan figyelje a nyílt forráskódú függőségeket, hogy az új biztonsági figyelmeztetések megjelenésekor felismerje az elavult vagy biztonsági kockázatot jelentő csomagokat, ezzel csökkentve a sebezhetőség időtartamát.
  • A szabályozási előírások betartása és az ellátási lánc átláthatósága – Teljesítse a szabályozási követelményeket azáltal, hogy minden szoftverkomponensről és azok ismert sebezhetőségeiről ellenőrizhető nyilvántartást vezet.

A CVE-2025-55182 sebezhetőség kihasználásának sebessége és mértéke – csupán az első héten több mint 582 millió kísérlet történt – jól mutatja, miért nem elegendő már a reaktív javítás. A proaktív védelem alapja, hogy tudjuk, milyen szoftverekkel rendelkezünk, hol futnak azok, és mikor válnak sebezhetővé. Ez a átláthatóság az SBOM-mal kezdődik.

Hivatkozások

Maradjon naprakész az OPSWAT oldalon!

Iratkozzon fel még ma, hogy értesüljön a vállalat legfrissebb híreiről, történetekről, eseményinformációkról és sok másról.