Next.js ve React App Router Güvenlik Açığı: CVE-2025-55182 Rehberi

Modern JavaScript ekosistemini sarsan en kritik zafiyetlerden biriyle karşı karşıyayız.
3 Aralık 2025’te React ekibi, App Router ve React Server Components (RSC) kullanan Next.js projelerini doğrudan ilgilendiren kritik bir güvenlik açığını duyurdu: CVE-2025-55182. Bu açık, belirli React 19 ve RSC paket kombinasyonlarında yetkisiz uzaktan kod çalıştırma (unauthenticated Remote Code Execution – RCE) seviyesinde risk oluşturuyor.
Next.js App Router, son yıllarda çok hızlı benimsenen, özellikle React Server Components ile birlikte kullanıldığında hem performans hem de DX tarafında ciddi avantajlar sağlayan bir mimari. Ancak bu olay, her yeni mimarinin beraberinde yeni saldırı yüzeyleri getirdiğini acı bir şekilde hatırlatıyor.
Bu yazıda:
- Açığın temelde ne olduğu,
- Hangi React + Next.js kombinasyonlarını etkilediği,
- Kendi projemde nasıl teşhis ettiğim,
- Ve projeni adım adım nasıl güvenli hale getirebileceğin
üzerinden, özet ve uygulamaya dönük bir dille geçeceğiz.
React2Shell Açığı Nedir? (CVE-2025-55182)
Toplulukta bu zafiyet çoğunlukla "React2Shell" olarak anılıyor. Sebebi oldukça net: React Server Components tarafındaki bir deserialization hatası, saldırganın özel hazırlanmış bir HTTP isteğiyle sunucuda rastgele kod çalıştırmasına izin verebiliyor.
Yani saldırgan, belirli bir RSC endpoint’ine uygun formatta payload göndererek, adeta sunucuda “shell açar gibi” komut çalıştırabiliyor.
Açığı tetikleyen temel bileşenler şunlar:
- React 19 ekosistemi
- Aşağıdaki RSC paketleri: -
- App Router kullanan ve RSC aktif olan Next.js projeleri
react-server-dom-webpack
- react-server-dom-parcel
- react-server-dom-turbopack
Sorunun kaynağı, bu paketlerin 19.0.0, 19.1.0, 19.1.1, 19.2.0 civarındaki sürümlerinde yer alan güvensiz RSC deserialization mantığı. Bu mantık doğru şekilde izole edilmediği için, belirli bir payload ile sonuçta RCE elde edilebiliyor.
React ekibi, farkına vardıktan sonra RSC paketleri için 19.0.1, 19.1.2, 19.2.1 gibi yamalanmış sürümler yayımladı.
Hangi Projeler Risk Altında?
Tabloya bakarken gereksiz karmaşadan kaçınalım ve doğrudan pratik senaryolar üzerinden gidelim.
React 18.x kullanan projeler
- Genel durumda bu CVE’den doğrudan etkilenmiyor.
- Problemli RSC sürümleri React 19 serisiyle birlikte geliyor.
- Yani React 18 + klasik SSR/CSR veya sınırlı RSC kullanımında, bu spesifik açık tipik olarak tetiklenemiyor.
React 19.0.0 – 19.2.0 arası kullanan projeler
- RSC paketlerinin kırılgan olduğu aralık tam olarak burası.
- Eğer projende App Router + RSC aktif ve React sürümün bu aralıkta ise, yüksek risk altındasın.
Next.js 15 / 16 kullanıp patch almamış projeler
- Modern Next.js App Router projeleri varsayılan olarak RSC ile birlikte çalışıyor.
- Next ekibi bu açık için resmi bir security advisory yayımladı ve belirli sürümleri "patched" olarak işaretledi.
- Bu sürümlerin öncesindeki 15.x ve 16.x versiyonları riskli kabul ediliyor.
Patch’li Next.js sürümleri
Aşağıdaki Next.js sürümleri, React tarafındaki yamalarla uyumlu ve advisory’de güvenli olarak işaretlenmiş durumda:
15.0.515.1.915.2.615.3.615.4.815.5.716.0.7
Özet risk kombinasyonu
Riskli tabloyu şöyle düşünebilirsin:
- App Router kullanan bir Next.js projesi
- React 19’un problemli sürümleri (
19.0.0–19.2.0) - Yukarıdaki patch’li Next 15/16 sürümlerinin dışında kalan bir Next.js versiyonu
- Ve RSC endpoint’lerinin dışarıya açık olduğu bir prod ortamı
Bu şartlar sağlanıyorsa, saldırganın yetkisiz RCE elde etme ihtimali gerçek ve ciddiye alınması gereken bir risk.
Kendi Projemde Nasıl Teşhis Ettim?
Bu yazıyı okuduğun sitenin kendisi, Next.js App Router ile çalışan bir portfolio ve blog projesi. Açık duyurulur duyurulmaz yaptığım ilk şey, gerçekten etkilenip etkilenmediğimi netleştirmek oldu.
Terminalde şu komutu çalıştırdım:
npm ls next react react-dom
Çıktı özetle şöyleydi:
next: 15.5.7react: 18.3.1react-dom: 18.3.1
Buradan şu sonuçlara ulaştım:
- Next.js tarafında 15.5.7 kullanıyorum. Bu, Next’in resmi advisory’sinde "patched" olarak listelenen sürümlerden biri.
- React tarafında ise 18.3.1 kullanıyorum; yani React 19 serisine geçmemiş durumdayım.
- Ek olarak dependency ağacında
react-server-dom-webpackgibi paketlerin, React 19’un riskli sürümleriyle birlikte gelmediğini de kontrol ettim.
Bu kombinasyonla, CVE-2025-55182 özelinde projemin güvende olduğunu söyleyebildim. Elbette bu, projenin “tamamen kurşun geçirmez” olduğu anlamına gelmiyor; yalnızca bu spesifik RCE zafiyetinin beni etkilemediğini gösteriyor.
Projeni Kontrol Etmek İçin Pratik Checklist
Kendi projen için benzer bir analiz yapmak istiyorsan, aşağıdaki adımlar genelde yeterli oluyor.
1. React sürümünü kontrol et
Terminalde:
npm ls react react-dom
Eğer aşağıdakilerden birini görüyorsan:
19.0.019.1.019.1.119.2.0
RSC paketlerinin kırılgan olduğu aralıktasın. Bu durumda hem React hem de ilgili RSC paketlerini güncellemen gerekiyor.
2. Next.js sürümünü kontrol et
npm ls next
Projen Next 15 veya 16 kullanıyorsa ve sürümün şu listede yoksa:
15.0.515.1.915.2.615.3.615.4.815.5.716.0.7
patch almamış olma ihtimalin yüksek. Resmi advisory, bu sürümleri özellikle güvenli olarak işaretliyor.
3. RSC paketlerini tara
Ek olarak aşağıdaki komutlarla RSC paketlerini kontrol edebilirsin:
npm ls react-server
npm ls react-server-dom-webpack
npm ls react-server-dom-turbopack
Bu paketlerin problemli sürümlerine sahipsen, mutlaka yamalı versiyonlara yükseltmelisin.
Çözüm: Projeni Nasıl Güvene Alırsın?
1) Next.js’i patch’li sürüme yükselt
Eğer 15.x hattındaysan örneğin:
npm install next@15.5.7
16.x hattındaysan:
npm install next@16.0.7
Ardından klasik kontrol adımları:
npm run lint
npm run build
Deploy’dan önce build’in temiz geçtiğinden emin ol.
2) React 19 kullanıyorsan güncelle
React tarafında da yamalanmış 19.x sürümlerini kullanman gerekiyor. Advisory’de bahsedilen güvenli RSC sürümleri 19.0.1, 19.1.2, 19.2.1 civarında.
Bu yüzden şu tarz bir komutla en güncel yamalı 19.x’e çıkabilirsin:
npm install react@19.2.1 react-dom@19.2.1
3) Versiyon aralıklarını sabitle
Bir diğer kritik nokta, package.json içindeki versiyon aralıkları.
Örneğin:
"next": "^15.5.7"
yerine:
"next": "15.5.7"
kullanmak, gelecekte npm update veya temiz kurulum sırasında beklemediğin bir minor sürüme geçmeni engeller. Aynı yaklaşımı React için de uygulayabilirsin.
Sonrasında lock file’ı yenilemek için, kullandığın paket yöneticisine göre şu tarz bir akış izleyebilirsin:
rm -rf node_modules package-lock.json pnpm-lock.yaml yarn.lock
npm install
Bu Olay Bize Ne Öğretiyor?
Bu güvenlik açığı benim açımdan üç önemli dersi tekrar masaya koydu:
1. Framework güncellemeleri sadece feature değil, güvenlik için de kritik. Özellikle React ve Next gibi hızlı gelişen ekosistemlerde, patch sürümlerini ertelemek ciddi sonuçlar doğurabiliyor.
2. Versiyon aralıkları hem konfor hem risk getiriyor.
^ ve ~ ile başlayan sürümler, bazen hiç fark etmeden kırılgan bir minor sürüme geçmene neden olabiliyor.
3. App Router ve RSC gibi yeni mimariler ekstra dikkat istiyor. Yeni mimariler güçlü; ama aynı zamanda daha taze oldukları için daha fazla güvenlik incelemesine ihtiyaç duyuyorlar.
Next.js Geliştiricileri İçin Güçlü Bir Uyarı
CVE-2025-55182, modern web uygulamalarının ne kadar karmaşık hale geldiğini ve bu karmaşıklığın güvenlik tarafında nasıl yeni riskler üretebildiğini çok net gösteriyor. App Router ve React Server Components, doğru yapılandırıldığında güçlü bir mimari avantaj sağlıyor; ancak bu güç, beraberinde ciddi bir güvenlik sorumluluğu da getiriyor.
Eğer Next.js ile App Router kullanıyorsan:
- React ve Next sürümlerini kontrol et,
- Resmi advisory’de belirtilen patch sürümlerine geç,
package.jsoniçindeki versiyon aralıklarını gözden geçir,- Ve mümkünse projeni düzenli aralıklarla güvenlik taramasından geçir.
Ben kendi projemde bu adımların tamamını uyguladım ve şu an için bu spesifik açıktan etkilenmediğimi biliyorum. Ama bu, güvenlik gündemini bırakabileceğim anlamına gelmiyor; tam tersine, bundan sonra da yeni özelliklere bakarken daha sık şu soruyu soracağım:
> "Bu özellik bana ne kadar yeni saldırı yüzeyi açıyor?"
Aynı soruyu senin de kendi projelerin için düzenli olarak sorman, muhtemelen en ucuz güvenlik yatırımı olacaktır.



