Veri Diyotu Aracılığıyla Günlükler, Uyarılar ve Telemetri Verilerinin Gönderilmesi

Nasıl Yapılır?
Site çevirileri için yapay zeka kullanıyoruz ve doğruluk için çaba göstersek de her zaman %100 kesin olmayabilir. Anlayışınız için teşekkür ederiz.

React2Shell (CVE-2025-55182): React Server Kritik Uzak Kod Yürütme Açığı

Yazan Loc Nguyen, Penetration Test Team Lead
Bu Gönderiyi Paylaş

CVE-2025-55182, React Server 'ta bulunan ve CVSS puanı 10,0 olan (mümkün olan en yüksek ciddiyet derecesi) kritik bir kimlik doğrulama öncesi uzaktan kod yürütme güvenlik açığıdır. OPSWAT Burs Programı kapsamında, bursiyerlerimiz bu güvenlik açığına ilişkin kapsamlı bir teknik analiz gerçekleştirerek React Flight deserialization protokolündeki temel nedenini, tam istismar zincirini ve modern web ekosistemindeki yaygın etkisini inceledi. Bu blog yazısı, bulgularımızı savunma uzmanları için uygulanabilir kılavuzlarla birlikte sunmaktadır.

React, modern web ve mobile önemli bir kısmını destekleyen, dünyanın en yaygın olarak kullanılan ön uç kütüphanelerinden biri haline gelmiştir. Stack Overflow geliştirici anketleri, React'i sürekli olarak en iyi web çerçeveleri arasında sıralamaktadır ve React'in küresel çapta profesyonel geliştiricilerin %40'ından fazlası tarafından kullanıldığı görülmektedir. Bu büyümeye paralel olarak, React ekibi React 19'un temel bir özelliği olarak React Server (RSC) Server tanıttı. Bu, render mantığını istemciden sunucuya taşıyan bir paradigma değişikliğidir ve optimize edilmiş performans ile sunucu tarafı ve istemci tarafı kodları arasında daha sıkı bir entegrasyon sağlar.

Ancak bu mimari gelişme, kritik öneme sahip yeni bir saldırı yüzeyi ortaya çıkardı. 29 Kasım 2025 tarihinde, güvenlik araştırmacısı Lachlan Davidson, React’ın sunucu tarafındaki deserializasyon mantığındaki bir güvenlik açığını Meta’nın Hata Ödül Programı’na bildirdi. 3 Aralık 2025 tarihinde CVE-2025-55182 olarak kamuoyuna açıklanan bu güvenlik açığı, tek bir özel olarak hazırlanmış HTTP isteği yoluyla kimlik doğrulaması gerektirmeyen uzaktan kod yürütülmesine olanak tanıyor. CWE-502 (Güvenilmeyen Verilerin Deserializasyonu) olarak sınıflandırılan bu güvenlik açığı, kimlik doğrulama, kullanıcı etkileşimi veya özel uygulama yapılandırması gerektirmez; üretim için oluşturulmuş varsayılan bir create-next-app dağıtımı anında istismar edilebilir.

Şekil 1: CVE-2025-55182 (kaynak: NVD)

Etkisi anında ve şiddetli oldu. Açıklamanın yapılmasından sonraki 48 saat içinde, gerçek ortamda çok sayıda istismar kampanyası gözlemlendi. The Shadowserver Foundation’a göre, 77.000’den fazla genel IP adresi potansiyel olarak savunmasız olarak tespit edildi. Cloudflare telemetrisi, açıklamanın ardından bir hafta içinde 582 milyondan fazla istismar girişimi kaydetti; saldırı yoğunluğu saatte ortalama 3.500 benzersiz kaynak IP'ye ulaştı ve eşzamanlı saldırı yapan IP sayısı 16.585 ile zirveye ulaştı. Wiz Research, bulut ortamlarının %39'unda güvenlik açığı bulunan örnekler bulunduğunu bildirdi. CISA, bu güvenlik açığını 5 Aralık 2025 tarihinde Bilinen Sömürülen Güvenlik Açıkları (KEV) kataloğuna ekledi.

Saldırganlar dikkate değer bir hız ve çeşitlilikle hareket etti. Trend Micro, Cobalt Strike işaretçileri, Sliver implantları, Nezha izleme ajanı, Hızlı Ters Proxy (FRP) tünelleri ve TruffleHog ile Gitleaks gibi açık kaynaklı kimlik bilgisi toplama araçlarını silah haline getiren yeni bir “Secret-Hunter” yükünü kullanan, “emerald” ve “nuts” botnet kampanyaları da dahil olmak üzere çok sayıda kampanyayı belgeledi. Google Threat Intelligence , MINOCAT tünelcisi, SNOWLIGHT indiricisi, COMPOOD arka kapısı ve HISONIC arka kapısı dahil olmak üzere özel araçlar kullanan, Çin bağlantılı belirgin tehdit kümelerini (UNC6600, UNC6586, UNC6588, UNC6603) tespit etti. Bu gruplar, İran bağlantılı aktörler ve kripto para madenciliği kampanyaları yürüten finansal amaçlı gruplarla birlikte hareket ediyordu. AWS, tam kavram kanıtı kodu kamuya açık hale gelmeden önce, 4 Aralık gibi erken bir tarihte istismar kodunu deneyen Çin bağlantılı grupları belgeledi.

React Server Hakkında

React, Meta ve geniş bir açık kaynak topluluğu tarafından geliştirilen, kullanıcı arayüzleri oluşturmaya yönelik bir JavaScript kütüphanesidir. React 19 ile tanıtılan React Server (RSC), React uygulamalarının render işlemini gerçekleştirme biçiminde temel bir değişimi temsil eder. Tamamen tarayıcıda çalışan geleneksel istemci bileşenlerinin aksine, sunucu bileşenleri sunucuda çalışır ve istemciye aktarılan UI'nin serileştirilmiş bir temsilini üretir. Bu tasarım, tarayıcıya gönderilen JavaScript miktarını azaltır, etkileşim süresini iyileştirir ve veritabanları ve dosya sistemleri gibi sunucu tarafı kaynaklarına doğrudan erişim sağlar.

Şekil 2: React Server (RSC)

RSC, istemci ile sunucu arasında verileri kodlamak ve iletmek için “Flight” adlı özel bir serileştirme protokolünü kullanır. Bir istemci bir Server (eski adıyla Server ) çağırdığında, tarayıcı işlev argümanlarını Flight formatını kullanarak yapılandırılmış bir HTTP isteği halinde paketler. Sunucu bu yükü serileştirir, istenen işlevi yürütür ve sonucu istemciye geri gönderir. İstemci ile sunucu arasındaki bu sıkı bağlantı (mimari açıdan zarif olsa da), CVE-2025-55182'nin gösterdiği gibi, serileştirme mantığındaki herhangi bir kusurun anında ve felaketle sonuçlanabilecek sonuçlara yol açabileceği anlamına gelir.

Bu güvenlik açığı yalnızca React'i değil, onun üzerine inşa edilmiş tüm çerçeve ekosistemini de etkiliyor. Next.js (ayrı bir güvenlik uyarısı olan CVE-2025-66478 ile bildirilmiş, ancak daha sonra yinelenen bir rapor olduğu gerekçesiyle reddedilmiştir), React Router, Waku, Parcel’in RSC eklentisi, Vite’nin RSC eklentisi ve RedwoodSDK bu güvenlik açığından etkilenmektedir. Çerçeve içinde RSC desteği etkinleştirilmişse, Server açıkça tanımlamayan uygulamalar bile bu güvenlik açığına maruz kalabilir.

Teknik Arka Plan

Bu güvenlik açığını incelemeden önce, istismar zincirinin temelini oluşturan üç temel kavram şunlardır: JavaScript’in thenable nesnelerle olan await davranışı, prototip zinciri taraması ve React Flight protokolünün parça tabanlı veri modeli.

JavaScript’teki await ve Thenable Nesneleri

await operatörü, beklenen ifadenin sonuçlanmasına kadar asenkron bir işlevin yürütülmesini askıya alır. await, yerel bir Promise ile karşılaştığında, sonuçlanmasını bekler ve yerine getirilmiş değeri döndürür. Ancak await, yerel bir Promise gerektirmez; “thenable” olarak bilinen ve .then() yöntemine sahip herhangi bir nesne, Promise benzeri bir yapı olarak değerlendirilir.

await, bir thenable ile karşılaştığında, sistem tarafından sağlanan resolve ve reject geri çağırma işlevlerini aktararak nesnenin .then() yöntemini çağırır. Resolve’a aktarılan değer, await ifadesinin sonucu olur. Önemli olan nokta, çözülen değerin kendisi bir thenable ise, o iç içe geçmiş nesnenin .then() yöntemi, bir temel değere veya yerleşik bir Promise'a ulaşılana kadar yinelemeli olarak çağrılır. Bu yinelemeli çözümleme davranışı, CVE-2025-55182'nin istismar edilmesinde merkezi bir rol oynar.

Prototip Zincir Taraması

Her JavaScript nesnesi, __proto__ özelliği aracılığıyla erişilebilen prototipine bir iç bağlantı barındırır. Bir nesnenin özelliğine erişildiğinde, JavaScript motoru önce nesnenin kendi özelliklerini kontrol eder. Özellik bulunamazsa, motor, özellik bulunana veya zincir undefined değerinde sona erene kadar prototip zincirini tarar; bu sırada her bir __proto__ bağlantısını yukarı doğru izler.

Bir saldırgan, bu miras mekanizmasını istismar ederek bir nesnenin amaçlanan kapsamının ötesindeki özelliklere erişebilir. Özellik erişim yollarına __proto__'yu dahil ederek, saldırgan uygulamanın asla açığa çıkarmayı amaçlamadığı dahili yöntemlere ve yapıcı işlevlere ulaşabilir. JavaScript'te obj.__proto__.constructor.constructor ifadesi, bir dize girdisinden rastgele işlevler oluşturabilen ve bunları çalıştırabilen küresel Function yapıcı işlevini döndürür.

React Uçuş Protokolü ve Parça Tabanlı Veri Modeli

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.

Aşağıdaki gibi tanımlanmış bir Server ele alalım:

Şekil 3: Server örneği

İlgili HTTP isteği, her biri bir anahtar ve bir değerden oluşan birden fazla form alanı içerir: 0 numaralı alan, "$W1" ve "$K2" gibi referansların bulunduğu argüman dizisini içerirken, 1 ve 2_* numaralı alanlar bu referansların karşılık geldiği verileri içerir. Sunucu, her alanı geldiği sırayla işler ve ara sonuçları “chunk” adı verilen nesnelerde saklar.

Şekil 4: Örnek Server çağrıldığında oluşturulan ilgili multipart/form-data HTTP isteği

Bir chunk, dört temel özelliğe sahip bir thenable nesnesidir: status (çözümleme durumu), value (saklanan veriler), reason (hata bilgileri) ve _response (üst yanıt nesnesine bir geri referans). Sunucu await chunk ile karşılaştığında, chunk'ın .then() yöntemi çağrılır. Chunk'ın durumu INITIALIZED ise, resolve geri çağrısı chunk.value değerini alır. Durum PENDING, BLOCKED veya CYCLIC ise, geri çağrılar daha sonra yürütülmek üzere kuyruğa alınır.

Şekil 5: Serileştirme işlemi sırasında Chunk nesnesinin durumu

Chunk 0 genellikle çağrılan Server için argüman dizisini temsil eder. Tüm form alanları alındıktan ve tüm dahili referanslar çözümlendikten sonra, chunk_0.value tamamen oluşturulmuş argüman dizisini içerir ve bu dizi daha sonra hedef işlevine aktarılır.

Uçtan Uca İstek İşleme (Next.js → React Uçuş Verilerinin Serileştirilmesinden Çıkarılması)

Aşağıda, Next.js'in normal koşullarda gelen bir Server isteğini HTTP katmanından React Flight serileştirme motoruna kadar nasıl işlediği anlatılmaktadır.

Şekil 6: Next.js Server istek işleme genel bakışı

handleAction() işlevi - Next.js

Bir Server çağrıldığında, istek handleAction işlevine girer. Bu işlev, meta verileri doğrular, başlıkları ve CSRF belirteçlerini kontrol eder ve isteğin geçerli bir getirme işlemi olduğunu teyit eder. Ardından, çok parçalı form gövdesini ayrıştırmak için busboyStream adlı bir akış oluşturulur. decodeReplyFromBusboy işlevi, olay yayıcılarını bu akışa bağlar ve ham veriler alındıkça React Serverserileştirme kaldırma işleyici işlevlerini tetikler. decodeReplyFromBusboy işlevinin dönüş değeri chunk_0'dır; await operatörü bunu çözümler ve birleştirilmiş değerini çağrılan Server iletir.

Şekil 7: handleAction işlevi

getChunk işlevi, belirtilen bir ID'ye karşılık gelen parçayı döndürür. Eğer bu parça henüz mevcut değilse, ya bir ResolvedModelChunk (response._formData'da veri zaten mevcutsa) ya da bir PendingChunk (o ID için henüz veri gelmemişse) oluşturur.

Şekil 8: getChunk işlevi

decodeReplyFromBusboy işlevi chunk_0 değerini döndürdüğünde, bu parça hâlâ PENDING durumundadır. await operatörü, chunk_0.then() işlevini çağırır ve resolve ile reject geri çağırma işlevlerini geçici olarak chunk_0.value ve chunk_0.reason değişkenlerinde saklar. Bu geri çağırma işlevleri, referans çözümleme işlemi tamamlandığında wakeChunk işlevi tarafından yeniden etkinleştirilir.

Şekil 9: wakeChunk işlevi

Serileştirme Çözme Süreci - React Server

busboyStream, tam bir ham veri alanı aldığında, 'field' olay yayıcısını tetikler, resolveField işlevini çağırır ve deserializasyonu başlatır; bu işlem, ham form verilerini tam olarak oluşturulmuş JavaScript nesnelerine dönüştürür. Aşağıdaki işlevler bu süreci yönetir.

resolveField(yanıt, anahtar, değer)

Şekil 10: resolveField işlevi

Anahtar ve değer, response._formData nesnesine eklenir. Ardından işlev, anahtarla eşleşen ID’ye karşılık gelen parçayı alır. Bu parça halihazırda mevcutsa, onu yeniden oluşturmak için resolveModelChunk işlevi çağrılır. Bu ertelenmiş çözümleme, bir değerin ham verileri henüz ulaşmamış alanlara referanslar içerebilmesi nedeniyle gereklidir; bu durumda React Server , bu referansları daha sonra işlemek üzere özel resolve ve reject geri çağırma işlevlerine sahip bir PendingChunk Server .

resolveModelChunk(parça, değer, kimlik)

Şekil 11. resolveModelchunk işlevi

resolveModelChunk, RESOLVED_MODEL durumuna sahip bir ResolvedModelChunk oluşturur ve ham verileri bu nesneye aktarır. Ardından, initializeModelChunk aracılığıyla parçayı yeniden oluşturur ve wakeChunk işlevini çağırarak kuyrukta bekleyen tüm resolve ve reject geri çağırma işlevlerini tetikler; böylece nesnenin veya referansın çözümlenmesi işlemi tamamlanır.

modeliYükle(parça)

Şekil 12: initializeModelChunk işlevi

initializeModelChunk, parçanın durumunu CYCLIC olarak değiştirir — bu, referans çözümlemenin devam ettiğini gösterir — ve serileştirmenin tersine çevrilmesini başlatır. JSON.parse işlevini kullanarak chunk.value nesnesinden ham bir JavaScript nesnesi oluşturur, ardından bu nesneyi reviveModel işlevine aktarır.

reviveModel(yanıt, üst nesne, üst anahtar, değer, referans)

Şekil 13: reviveModel işlevi

reviveModel, ayrıştırılan nesne içindeki her bir bileşeni özyinelemeli olarak işler. Bir dize değeriyle karşılaştığında, bunu işlemek için parseModelString işlevini çağırır.

parseModelString(yanıt, nesne, anahtar, değer, referans)

Şekil 14. parseModelString işlevi

parseModelString, farklı kodlanmış türleri işlemek için dize önekine göre ayrıştırma yapar. $ ile başlayan referanslar için, parçalar arası referansı çözümlemek üzere getOutlinedModel işlevi çağrılır.

getOutlinedModel(yanıt, referans, üst nesne, anahtar, harita)

Şekil 15: getOutlinedModel işlevi

getOutlinedModel, referansı “:” ayırıcısına göre bölerek bir özellik erişim yolu oluşturur, ardından hedef parça nesnesinde bu yolu tarayarak referans verilen değeri döndürür. Aşağıdaki Güvenlik Açığı Analizinde ayrıntılı olarak açıklandığı üzere, bu özellik adları üzerinde doğrulama yapılmaması, güvenlik açığının tam olarak bulunduğu noktadır.

Güvenlik Açığı Analizi

Temel Neden

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].

Şekil 16: getOutlinedModel() işlevinde yetersiz girdi doğrulama

En önemli güvenlik açığı, bu özellik adlarının hiçbir zaman doğrulanmamasıdır. Sunucu, istenen özelliklerin nesnenin kendi özellikleri mi yoksa miras alınan prototip özellikleri mi olduğunu doğrulamaz. Bu nedenle bir saldırgan, prototip zincirini geçmek ve kullanıcı tarafından kontrol edilen girdilerden asla erişilmemesi gereken dahili yöntemlere ulaşmak için özellik yoluna __proto__ ekleyebilir. Örneğin, $1:__proto__:then referansı, Chunk.prototype.then olarak çözümlenir; bu, saldırganın daha sonra kontrol ettiği argümanlarla çağırabileceği bir işlevdir.

Şekil 17: Kötü niyetli girdi yoluyla prototip taraması

Savunmasız Kod

Saldırı zinciri, React’ın Flight serileştirme mantığındaki iki farklı kod yolundan yararlanıyor.

İlki, parçaların (chunk) thenable olarak nasıl davranacağını belirleyen Chunk.prototype.then'dir. INITIALIZED durumundaki bir parçaya await uygulandığında, resolve(chunk.value) çağrılır. Eğer chunk.value'nin kendisi bir thenable ise (yani .then() yöntemine sahip bir nesne), await operatörü chunk.value.then()'i özyinelemeli olarak çağırır. Bu özyinelemeli çözümleme, bir saldırganın yürütmeyi rastgele bir işlevine yönlendirebilmesini sağlayan mekanizmadır.

İkincisi ise parseModelString() işlevi içindeki $B (blob) önek işleyicisidir:

Şekil 18: parseModelString işlevindeki $B (blob)

$B durumunda, işlev response._formData.get(response._prefix + id) çağrısını gerçekleştirir. Hem _formData.get hem de _prefix, yığın içinde depolanan _response nesnesinin özellikleridir. Saldırgan, prototip zincirini tarayarak bu özellikleri kontrol ederek, bu çağrıyı yeniden yönlendirebilir ve argüman olarak rastgele bir kod kullanarak global Function yapıcı işlevini çalıştırabilir.

İstismar

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.

Şekil 19: Global Function oluşturucu

Bu durumun gerçek hayattaki olası etkisini göstermek amacıyla, araştırma ekibimiz, çeşitli güvenlik araştırma ekiplerinin bağımsız olarak belgelediği analizlerle uyumlu bir kavram kanıtı yükü geliştirdi. Bu güvenlik açığı istismarı iki aşamada gerçekleşir:

1. Aşama - Sahte parçayı oluşturun:

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.

Bu noktada 1 numaralı alan henüz alınmadığından, React Server bekleyen referansı işlemek için Server resolve ve reject geri çağırma işlevleri oluşturur.

2. Aşama - Tetikleyici çözüm:

"$@0" değerini içeren (yani 0 numaralı parçaya doğrudan bir referans olan) 1 numaralı alan iletildiğinde, bekleyen parça çözümlenir ve doğrudan sahte parçaya yönlendirilir. Bu durum wakeChunk işlevini tetikler; bu işlev, kuyrukta bekleyen geri çağırmaları işler ve referans çözümleme sırasında prototip zinciri taramasını başlatır. Sahte yığın tamamen çözümlendiğinde, wakeChunk tekrar çağrılır. Sahte yığın için çözümleme geri çağrısı, örtük Node.js çözümleme işlevi olduğundan, yığının .then() yöntemini çağırır ve değerini çözümler; sonuçta Function yapıcı aracılığıyla enjekte edilen kötü amaçlı kodu oluşturur ve yürütür.

Bu istismarın gerçekleştirilmesi için tek bir HTTP isteği yeterlidir:

Şekil 20. Kötü niyetli istek

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.

Saldırı başarılı olursa, saldırgan sunucuda Node.js'in tam yürütme ortamına erişim elde eder; bu erişim, kabuk komutlarının yürütülmesi için `child_process` işlevine erişim, veritabanı kimlik bilgileri ve API içeren ortam değişkenleri, yerel dosya sistemi ve yatay hareket imkanı sağlayan bulut meta veri uç noktalarını da kapsar.

Kavram Kanıtı

Araştırmacılarımız, create-next-app komutuyla oluşturulan ve üretim ortamı için derlenen standart bir Next.js uygulamasını kullanarak, varsayılan yapılandırmada herhangi bir değişiklik yapmadan bu güvenlik açığını kontrollü bir laboratuvar ortamında yeniden canlandırdı. Bu canlandırma, yukarıda açıklanan tek istekli istismar yükünün güvenilir bir şekilde uzaktan kod yürütme sağladığını doğruladı.

Şekil 21. Güvenlik açığı bulunan Next.js web uygulaması
Şekil 22. Saldırgan, güvenlik açığı bulunan Next.js sunucusunu ele geçiriyor

Kontrollü bir deneme, güvenlik açığı bulunan bir Next.js sunucusuna ağ erişimi olan bir saldırganın, herhangi bir kimlik bilgisi girmeden veya uygulama düzeyinde kimlik doğrulama denetimlerini tetiklemeden, child_process.exec() aracılığıyla ters kabuk oluşturmak, ortam değişkenlerini okumak ve yerel dosya sistemine erişmek dahil olmak üzere, istediği Node.js kodunu çalıştırabileceğini gösterdi. Next-Action başlığı için kabul edilen rastgele değer, bu kusurun kimlik doğrulama öncesi niteliğini daha da teyit ediyor: sunucu, herhangi bir eylem araması veya yetkilendirme kontrolü gerçekleştirmeden önce yükü işliyor ve serileştiriyor.

Hafifletme

React ekibi, güvenlik açığının kamuoyuna duyurulduğu gün olan 3 Aralık 2025'te yamalar yayınladı. Düzeltilmiş sürümler React 19.0.1, 19.1.2 ve 19.2.1 olarak kullanıma sunuldu. Yama, getOutlinedModel() ve reviveModel() işlevlerine sıkı özellik doğrulama ekleyerek, Flight yüklerindeki kullanıcı kontrollü referans yollarından miras alınan prototip özelliklerinin (__proto__, constructor ve prototype dahil) çözümlenmesini açıkça engelliyor.

Kuruluşlar aşağıdaki acil önlemleri almalıdır:

  1. Uygun olanı seçerek npm install react-server-dom-webpack@latest, react-server-dom-parcel@latest veya react-server-dom-turbopack@latest komutunu çalıştırarak React paketlerini yamalı bir sürüme (19.0.1, 19.1.2 veya 19.2.1) yükseltin.
  2. Çerçeve bağımlılıklarını güncelleyin - Next.js, React Router, Waku ve diğer etkilenen çerçeveler ilgili yamaları yayınladı. Sürüm özelinde güncelleme yolları hakkında bilgi almak için React ekibinin duyurusuna bakın.
  3. Yalnızca barındırma sağlayıcılarının aldığı önlemlere güvenmeyin – Vercel gibi sağlayıcılar, güvenlik açığının ortaya çıkmasının ardından geçici WAF kuralları uygulamaya koymuş olsa da, bunlar geçici çözümler olup, altta yatan paketlere yama uygulanmasının yerini tutmaz.
  4. Next-Action başlıklarını içeren ve gövdelerinde $@ veya __proto__ kalıpları bulunan multipart/form-data formatındaki POST istekleri için sunucu günlüklerini denetleyin ve uygulama günlüklerinde beklenmedik child_process veya execSync çağrılarını izleyin.

OPSWAT ile riskleri azaltma

MetaDefender™ platformunun özel bir teknolojisi olan OPSWAT , CVE-2025-55182 gibi güvenlik açıklarına karşı savunma sağlamak için gerekli görünürlük ve kontrolü sunar. Bu güvenlik açığı açık kaynaklı npm paketlerinde (react-server-dom-webpack, react-server-dom-parcel, react-server-dom-turbopack) bulunduğundan, kuruluşların etkili bir düzeltme işlemi gerçekleştirebilmesi için öncelikle bu bileşenlerin altyapılarının neresinde dağıtıldığını tam olarak belirlemesi gerekir.

Şekil 23. SBOM, CVE-2025-55182'yi tespit ediyor

OPSWAT , kullanımdaki tüm yazılım bileşenleri, kütüphaneler, kapsayıcılar ve bağımlılıkların kapsamlı bir envanterini oluşturur. Güvenlik açığı bulunan React paketlerini içeren uygulamaları veya kapsayıcı görüntülerini tararken, sistem CVE-2025-55182'yi otomatik olarak "Kritik" olarak işaretler ve mevcut düzeltilmiş sürümler hakkında bilgi sunar; böylece güvenlik ekipleri, istismar gerçekleşmeden önce öncelik belirleyip düzeltme işlemlerini gerçekleştirebilir.

OPSWAT , hem tek tek uygulamaları ve konteyner görüntülerini taramak için MetaDefender 'da hem de tüm geliştirme yaşam döngüsü boyunca iş akışı düzeyinde görünürlük sağlamak için MetaDefender Software Chain™'de kullanılabilir. Bu iki çözüm bir araya geldiğinde, güvenlik ekiplerinin şunları yapmasını sağlar:

  • Güvenlik açığı bulunan bileşenleri hızla tespit edin - Hangi uygulamaların ve kapsayıcıların güvenlik açığı bulunan sürümlerdeki react-server-dom-* paketlerini içerdiğini anında belirleyin ve hiçbir dağıtımın gözden kaçmamasını sağlayın.
  • Proaktif yama uygulamasını sağlayın - Yeni güvenlik bildirimleri yayınlandıkça, açık kaynak bağımlılıklarını sürekli olarak izleyerek güncel olmayan veya güvenli olmayan paketleri tespit edin ve güvenlik açığına maruz kalma süresini azaltın.
  • Yasal uyumluluğu ve tedarik zinciri şeffaflığını sağlayın - Tüm yazılım bileşenleri ve bunların bilinen güvenlik açıklarına ilişkin denetlenebilir bir kayıt tutarak yasal gereklilikleri yerine getirin.

CVE-2025-55182 güvenlik açığının istismar edilme hızı ve boyutu – sadece ilk haftada 582 milyondan fazla girişim – reaktif yama uygulamasının artık yeterli olmadığını açıkça ortaya koyuyor. Elinizde ne olduğunu, bunların nerede çalıştığını ve ne zaman güvenlik açığına maruz kalabileceğini bilmek, proaktif savunmanın temelini oluşturur. Bu görünürlük, SBOM ile başlar.

Referanslar

OPSWAT ile Güncel Kalın!

En son şirket güncellemelerini almak için bugün kaydolun, hikayeler, etkinlik bilgileri ve daha fazlası.