Chatd.ai Logo
Chatd.ai
Güvenlik9 Aralık 2025

React2Shell Tehdidi: Next.js ve React Sunucu Bileşenlerinde Kritik RCE Açığı (CVSS 10.0)

Burak DemirözBurak Demiröz
5 min read
React2Shell Tehdidi: Next.js ve React Sunucu Bileşenlerinde Kritik RCE Açığı (CVSS 10.0)

Giriş

Modern web geliştirme dünyasında React Server Components (RSC) ile tanışalı çok olmadı. Ancak Aralık 2025'te keşfedilen bir güvenlik açığı, bu yeni teknolojinin ne kadar dikkatli kullanılması gerektiğini acı bir şekilde hatırlattı. "React2Shell" olarak adlandırılan bu açık, React ve Next.js uygulamalarında Uzaktan Kod Çalıştırma (RCE) tehlikesi yaratıyor.

Açık Nasıl Keşfedildi?

Güvenlik araştırmacısı Lachlan Davidson, 29 Kasım 2025'te React ekibine bildirdiği bu kritik zafiyeti ortaya çıkardı. Meta'nın hata ödül programı kapsamında rapor edilen sorun, tam 10.0 CVSS skoru ile en kritik seviyede değerlendirildi.

CVE-2025–55182 (React): React 19.x sürümlerindeki RSC paketlerinde (react-server-dom-webpack vb.) bulunan "Güvensiz Deserileştirme" (Insecure Deserialization) zafiyetidir. Flight protokolü üzerinden gelen kötü niyetli HTTP istekleri, sunucu tarafında yetkisiz kod çalıştırılmasına olanak tanır.

CVE-2025–66478 (Next.js): Next.js'in App Router mimarisindeki aynı zafiyetin yansımasıdır. Next.js 15.x ve 16.x serileri, React'ın bu savunmasız protokolüne bağımlı olduğu için doğrudan RCE riskine maruz kalır.

App Router Nedir ve Neden Önemli?

Next.js 13 ile tanıtılan App Router, React Server Components'ı Next.js'e entegre eden yeni bir yönlendirme sistemidir. Geleneksel Pages Router'dan farklı olarak, app klasörü içinde çalışır ve sunucu bileşenlerini varsayılan olarak kullanır. Bu mimari, daha iyi performans ve SEO için sunucu tarafında render yapılmasına olanak tanır.

Ancak işte sorun da tam burada başlıyor. App Router, React Server Components'ı kullandığı için Flight protokolüne bağımlıdır. Bu yüzden Next.js 13+ sürümlerinde App Router kullanan projeler otomatik olarak bu güvenlik açığının hedefi haline geliyor.

Problem Nerede?

React Server Components, React 18 ile kavramsal olarak tanıtıldı ancak üretimde yaygın kullanımı React 19.x ve Next.js App Router ile gerçekleşti. İstemci ve sunucu arasındaki veri akışını "Flight" adı verilen özel bir protokol üzerinden yönetiyor. İşte tam da bu protokolde, güvenli olmayan deserializasyon nedeniyle ciddi bir güvenlik açığı ortaya çıktı.

Sunucu tarafındaki react-server paketi, özelleştirilmiş ve bozuk HTTP isteklerini doğru doğrulayamıyor. Sonuç? Saldırgan kontrollü veriler sunucuda istenmeyen kod parçalarının çalışmasına neden olabiliyor. Çoğu senaryoda bu saldırı herhangi bir kimlik doğrulama gerektirmeden, doğrudan RSC endpoint'lerine gönderilen isteklerle gerçekleştirilebilir.

Aşağıdaki kavramlar, React2Shell saldırısının nasıl zincirleme şekilde kritik bir RCE'ye dönüştüğünü görselde adım adım göstermektedir:

  • Web Client: Kullanıcının tarayıcısı veya uygulaması. Normalde yalnızca sayfa talep ederken, bu senaryoda sunucuya özel olarak hazırlanmış zararlı bir istek gönderiyor.
  • Corrupted RSC / Flight Payload: React Server Components'ın kullandığı Flight protokolüne ait bozulmuş veya manipüle edilmiş veri. Normal veri gibi görünür ama sunucu iç mantığını etkilemek için hazırlanmıştır.
  • Next.js App Router + React Server Components: Next.js'in sunucu tarafında çalışan yönlendirme ve render sistemi. Sayfaların hangi bileşenlerle üretileceğine karar verir ve RSC verilerini işler.
  • Unsafe Deserialization: Sunucuya gelen verinin güvenli şekilde doğrulanmadan nesneye dönüştürülmesi. Saldırganın kontrol ettiği içerik, uygulama içinde aktif hale gelebilir.
  • Validation Failure: Sunucunun gelen isteğin beklenen formatta olup olmadığını yeterince kontrol edememesi. Bu hata, açığın kullanılmasını mümkün kılar.
  • Insecure Object Handling: Sunucu tarafında oluşturulan nesnelerin güvenli sınırlar içinde tutulmaması. Beklenmeyen davranışların tetiklenmesine yol açar.
  • Payload Execution Triggered: Zararlı veri, sunucu içindeki iş akışını etkileyerek istenmeyen kodların çalıştırılmasını tetikler.
  • Remote Code Execution (RCE): En kritik sonuç. Saldırgan, uzaktaki bir sistemde kendi kodunu çalıştırabilecek seviyede kontrol elde edebilir.

App Router kullanıyorsanız, RSC kullanıyorsunuz = Risk altındasınız.

Kimler Risk Altında?

React 19.x Ekosistemi:

  • 19.0.0, 19.1.0, 19.1.1 ve 19.2.0 sürümleri
  • RSC paketleri (react-server-dom-webpack, react-server-dom-parcel, vb.)

Next.js:

  • 15.x ve 16.x serileri
  • 14.3.0-canary.77 ve sonraki canary sürümleri
  • App Router kullanan projeler

Diğer Etkilenenler: React Server Components kullanan React Router, Waku, RedwoodSDK, Parcel ve Vite RSC eklentisi gibi araçlar da risk altında.

Tehlike Ne Kadar Ciddi?

Durum hiç iç açıcı değil. AWS ve Wiz gibi güvenlik ekipleri, açığın yayınlanmasından saatler sonra aktif saldırılar tespit ettiklerini bildirdi. Çin kaynaklı "Earth Lamia" ve "Jackpot Panda" tehdit grupları, bu açığı hızla istismar etmeye başladı. Proof-of-Concept kodlarının kamuya açıklanmasıyla birlikte durum daha da kritik hale geldi.

Bu diyagram, React Server Components mimarisinde Flight protokolü üzerinden gerçekleşebilen unsafe deserialization zincirinin, uzaktan kod çalıştırmaya (RCE) nasıl evrildiğini göstermektedir.

Çözüm: Hemen Güncelleyin!

Bu açık için geçici bir çözüm yok. Tek yol: yamalı sürümlere geçmek.

Next.js için güncellemeler:

  • npm install next@15.0.5 # 15.0.x serisi
  • npm install next@15.1.9 # 15.1.x serisi
  • npm install next@15.2.6 # 15.2.x serisi
  • npm install next@15.3.6 # 15.3.x serisi
  • npm install next@15.4.8 # 15.4.x serisi
  • npm install next@15.5.7 # 15.5.x serisi
  • npm install next@16.0.7 # 16.0.x serisi

React için: React projelerinde doğrudan RSC kullanıyorsanız, 19.0.1, 19.1.2 veya 19.2.1 sürümlerine yükseltin.

Otomatik güncelleme aracı:

npx fix-react2shell-next

Vercel'in sunduğu bu araç, proje sürümlerinizi otomatik olarak analiz edip uygun yamalara yükseltebiliyor.

Hemen Yapılması Gerekenler

  • Kullandığınız paketlerin sürümlerini kontrol edin
  • Next.js App Router kullanıyorsanız hemen güncelleyin
  • RSC kullanan React projelerinizi yamalayın
  • WAF kuralları gibi ek güvenlik önlemleri alın (ama bunlar asıl çözüm değil)
  • Güncelleme yapana kadar mümkünse uygulamanızı internete açmayın

Sonuç

React2Shell, modern web geliştirme ekosisteminde güvenliğin ne kadar kritik olduğunu bir kez daha gösterdi. RSC kullanan tüm projeler için güncelleme zorunludur, seçenek değildir. Bu açığı kapatmak için vakit kaybetmeyin; sunucunuz tamamen ele geçirilebilir.

Güvenlik, sonradan düşünülecek bir konu değil. Özellikle de saldırganlar saatler içinde harekete geçiyorken.

Görseller Hakkında

Bu makalede kullanılan tüm görseller, teknik kavramları daha anlaşılır kılmak amacıyla Banana Pro tarafından üretilmiştir. Görseller, herhangi bir gerçek sistem veya canlı saldırı anını temsil etmemekte olup, eğitsel ve açıklayıcı amaçlarla hazırlanmıştır.

Resmi Güvenlik Duyuruları:

Güvenlik Araştırma Raporları:

Keşif ve PoC:

Bu makale, yukarıdaki resmi güvenlik duyuruları ve araştırma raporları ışığında hazırlanmıştır.

Medium'da Okuyun

Bu makalenin tam versiyonunu Medium'da okuyabilirsiniz:

Medium'da Devamını Oku →

Etiketler

#React#Next.js#Güvenlik#RCE#React2Shell#CVE-2025-55182#CVE-2025-66478#WebSecurity