Next.js ve React App Router Güvenlik Açığı: CVE-2025-55182 Neyi Tehdit Ediyor?

Next.js ve React ekosistemini etkileyen kritik RCE açığı CVE-2025-55182 nedir, kimleri etkiler ve projelerimizi nasıl koruyabiliriz? İşte net çözüm.

Monday, December 8, 2025 at 11:43 PM
Next.js ve React App Router Güvenlik Açığı: CVE-2025-55182 Neyi Tehdit Ediyor?

Modern JavaScript ekosisteminin en kritik zafiyetlerinden biri

3 Aralık 2025’te React ekibi, App Router ve React Server Components (RSC) kullanan modern Next.js projelerini ilgilendiren kritik bir güvenlik açığını duyurdu: CVE-2025-55182. Bu açık, özellikle React 19 ve belirli RSC paketlerini kullanan projelerde, yetkisiz uzaktan kod çalıştırma (unauthenticated Remote Code Execution – RCE) seviyesinde bir risk oluşturuyor.

Next.js App Router, son yıllarda hızla benimsenen bir mimari. React Server Components ile birlikte kullanıldığında hem performans hem DX tarafında güçlü bir kombinasyon sunuyor. Ancak bu olay, yeni mimarilerin aynı zamanda yeni saldırı yüzeyleri de açtığını bize tekrar hatırlatmış oldu.

Bu yazıda:

  • Açığın temel olarak ne olduğunu,

  • Hangi React + Next.js kombinasyonlarını etkilediğini,

  • Kendi projemde bunu nasıl kontrol ettiğimi,

  • Ve adım adım nasıl güvenli hale gelebileceğinizi

özet, pratik ve uygulanabilir bir dille anlatıyorum.

React2Shell Açığı Nedir? (CVE-2025-55182)

Topluluk içinde bu zafiyet genelde “React2Shell” olarak anılıyor. Nedeni basit: React Server Components tarafındaki bir deserialization problemi, saldırganın belirli bir HTTP isteği ile sunucuda rastgele kod çalıştırmasına izin verebiliyor. Yani saldırgan, uygun şekilde hazırlanmış bir payload göndererek “shell açar gibi” sunucuda komut çalıştırabiliyor.

Açığı tetikleyen temel bileşenler şunlar:

  • React 19 ekosistemi

  • Aşağıdaki RSC paketleri:

    • react-server-dom-webpack

    • react-server-dom-parcel

    • react-server-dom-turbopack

  • App Router kullanan ve RSC aktif olan Next.js projeleri

Sorun, bu paketlerin 19.0.0, 19.1.0, 19.1.1, 19.2.0 civarındaki sürümlerinde ortaya çıkıyor. Bu sürümlerde, RSC protokolündeki deserialization mantığı güvenli değil ve bu da RCE ile sonuçlanabiliyor.

React ekibi, bu durumu fark ettikten sonra RSC paketleri için 19.0.1, 19.1.2, 19.2.1 gibi yamalı sürümleri yayınladı.

Hangi Projeler Risk Altında?

  • React 18.x kullanan projeler

    • Genel durumda bu CVE’den etkilenmiyor. RSC’nin problemli 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 doğrudan tetiklenemiyor.

  • React 19.0.0 – 19.2.0 arası kullanan projeler

    • RSC paketlerinin kırılgan olduğu sürümler bu aralıkta.

    • Eğer App Router + RSC aktif ve bu aralıkta bir React sürümü kullanıyorsan, yüksek risk altındasın.

  • Next.js 15 / 16 kullanıp patch almamış projeler

    • Next.js App Router projeleri, RSC ile birlikte çalışıyor.

    • Next ekibi, bu açık için resmi bir advisory yayınladı ve belirli sürümleri “patched” olarak işaretledi. Bunların öncesindeki 15.x ve 16.x sürümleri riskli kabul ediliyor.

  • Patch’li Next.js sürümleri (15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7)

    • Bu sürümler, React tarafındaki yamalarla uyumlu olacak şekilde güncellendi.

    • Next ekibi, advisory’de özellikle bu sürümlerin güvenli olduğunu belirtiyor.

Özetle riskli kombinasyon şöyle görünüyor:

  • App Router kullanan bir Next.js projesi

  • React 19’un problemli sürümleri (19.0.0–19.2.0)

  • Patch almamış bir Next 15/16 sürümü

  • Ve RSC endpoint’lerinin dışarıya açık olduğu bir deploy ortamı

Bu şartlar sağlanıyorsa, saldırganın yetkisiz RCE elde etme şansı var.

Kendi Projemde Nasıl Teşhis Ettim?

Benim portfolyo ve blog projem, Next.js App Router ile çalışan bir uygulama. Açık duyurulduğu anda ilk yaptığım iş, projede gerçekten risk olup olmadığını kontrol etmek oldu.

Terminalde şu komutu çalıştırdım:

npm ls next react react-dom

Çıktı şu şekildeydi:

next:       15.5.7
react:      18.3.1
react-dom:  18.3.1

Buradan çıkan sonuçlar:

  • Next.js tarafında 15.5.7 kullanıyorum. Bu sürüm, Next.js’in resmi advisory’sinde açıkça “patched” olarak geçen sürümlerden biri.

  • React tarafında 18.3.1 kullanıyorum. Yani React 19 serisine geçmediğim için, RSC’nin problemli sürümleri doğrudan projede yok.

Ek olarak, dependency ağacında react-server-dom-webpack gibi paketlerin React 19’un riskli sürümleriyle gelmediğini de doğruladım.

Bu kombinasyonla, CVE-2025-55182 özelinde projemin güvende olduğunu söyleyebildim. Ancak bu, projenin “tamamen kurşun geçirmez” olduğu anlamına gelmiyor; sadece bu spesifik RCE zafiyetinin beni etkilemediğini gösteriyor.

Projenizi Kontrol Etmek İçin Pratik Checklist

Kendi projenizde benzer bir analiz yapmak istiyorsanız aşağıdaki adımlar işini görecek.

1. React sürümünü kontrol et

Terminalde:

npm ls react react-dom

Burada aşağıdakilerden birini görüyorsan:

  • 19.0.0

  • 19.1.0

  • 19.1.1

  • 19.2.0

RSC paketlerinin kırılgan olduğu aralıktasın. Bu durumda hem React hem de RSC ile ilgili paketleri güncellemen gerekiyor.

2. Next.js sürümünü kontrol et

npm ls next

Eğer projen Next 15 veya 16 kullanıyorsa ve sürümün şu listede değilse:

  • 15.0.5

  • 15.1.9

  • 15.2.6

  • 15.3.6

  • 15.4.8

  • 15.5.7

  • 16.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 şu komutlarla RSC paketlerini arayabilirsin:

npm ls react-server
npm ls react-server-dom-webpack
npm ls react-server-dom-turbopack

Bu paketlerin problemli sürümlerine sahipsen mutlaka yükseltmen gerekiyor.

Çö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 adımlar:

npm run lint
npm run build

Deploy öncesi build’in temiz geçtiğinden emin ol.

2) React 19 kullanıyorsan güncelle

React tarafında da yamalı sürümleri kullanmak gerekiyor. Advisory’de bahsedilen patch’li RSC versiyonları 19.0.1, 19.1.2, 19.2.1 civarında. Bu yüzden:

npm install react@19.2.1 react-dom@19.2.1

gibi bir komutla en güncel ve yamalı 19.x sürümüne çıkabilirsin.

3) Versiyon aralıklarını sabitle

Bir diğer önemli 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 istenmeyen bir minor sürüme geçmeni engeller. Aynı yaklaşımı React için de uygulayabilirsin.

Sonrasında lock file’ı yenilemek için:

rm -rf node_modules package-lock.json pnpm-lock.yaml yarn.lock  # kullandığın paket yöneticisine göre
npm install

gibi bir akış izleyebilirsin.

Bu Olay Bize Ne Öğretiyor?

Bu güvenlik açığı, benim açımdan üç önemli noktayı tekrar hatırlattı:

  • Framework güncellemeleri sadece “feature” için değil, güvenlik için de kritik.
    Özellikle React ve Next gibi hızlı gelişen ekosistemlerde, patch sürümlerini ertelemek ciddi sorunlar doğurabiliyor.

  • Versiyon aralıkları bazen konfor kadar risk de getiriyor.
    ^ ve ~ ile başlayan sürümler bazen hiç beklemediğin bir zamanda kırılgan bir minor sürüme geçiş yapmana neden olabilir.

  • 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 iç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 riskler üretebildiğini net biçimde gösteriyor. App Router ve React Server Components, doğru kullanıldığında güçlü bir mimari avantaj sağlıyor; fakat bu güç, üzerinde ciddiyetle durulması gereken güvenlik sorumluluklarını da beraberinde getiriyor.

Eğer Next.js ile App Router kullanıyorsan:

  • React ve Next sürümlerini kontrol et,

  • Advisory’de belirtilen patch sürümlerine geç,

  • 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 şimdilik bu spesifik açıktan etkilenmediğimi biliyorum. Ancak bu, güvenlik gündemini takip etmeyi bırakabileceğim anlamına gelmiyor; tam tersine, bundan sonra da yeni özellikleri denerken “bu bana ne kadar yeni saldırı yüzeyi açıyor?” sorusunu daha sık soracağım.

Erhan AKKAYA

Erhan AKKAYA

FrontEnd Architect | UI&UX Specialist

Ready? Let's Do Something Great Together!

Get In Touch!

While we're good with smoke signals, there are simpler ways for us to get in touch and answer your questions.

Contact