CVE-2025-55182: React Server Components Kritik RCE Açığı – Türkiye’de Tehdit ve Korunma Yolları
Yayın Tarihi: 4 Aralık 2025 | Okunma Süresi: 12 dakika | Kategori: Siber Güvenlik, Web Geliştirme
Giriş: React Dünyasını Sarsacak Bir Açık
Ekim 2025’te, React ve Next.js ekosistemini derinden etkileyecek bir kritik güvenlik açığı keşfedildi: CVE-2025-55182. Bu açık, yüksek profilli web uygulamalarının uzaktan kod yürütülmesine (RCE) açık hale gelmesini sağlıyor ve Türkiye’deki pek çok websitesi bu riskten haberdar olmayabilir.
Önemli Bilgilendirme: Bu yazı, web geliştirici, sistem yöneticisi, siber güvenlik uzmanı ve teknoloji meraklıları için hazırlanmıştır. Eğer siz de React ve Next.js kullanan bir web uygulaması yönetiyorsanız, bu bilgiler sizin için hayati önem taşıyabilir.
CVE-2025-55182 Nedir? Basit ve Teknik Açıklama
Teknik Tanım
CVE-2025-55182, React Server Components (RSC) mimarisinde bulunan bir pre-authentication Remote Code Execution (RCE) açığıdır. Basit şekilde söylemek gerekirse:
Bir saldırgan, hiçbir giriş yapma (kimlik doğrulama) gerekmeden, sizin web sunucunuzda istediği kodu çalıştırabiliyor.
Ciddiyet Seviyesi: 10.0 (Maksimum)
CVSS (Common Vulnerability Scoring System) skoruna göre bu açık, kritik kategorisinin en üst seviyesindedir. Bu, Log4j açığıyla karşılaştırılabilecek kadar önemli bir bulunuştur.
| Özellik | Değer | Anlamı |
|---|---|---|
| CVSS Puanı | 10.0 | Maksimum Ciddiyet |
| Kimlik Doğrulama | Gerekmez | Hiç kimse olmadan saldırı mümkün |
| Etki Alanı | Tam Sunucu Kontrolü | Tüm sistem verilerine erişim |
| Ağ Menzili | Evet | Dünyanın herhangi yerinden saldırı |
CVE-2025-55182 Kimi Etkiliyor?
Tehlike Altında Olan Teknolojiler
Bu açık SADECE aşağıdaki koşulların hepsinin bulunması durumunda ortaya çıkıyor:
| Koşul | Gerekli? | Örnek |
|---|---|---|
| React 19.0 | ✅ EVET | React 18.x = GÜVENLI |
| Next.js (Modern) | ✅ EVET | Saf React = GÜVENLI |
| Server Components (“use server”) | ✅ EVET | Client-side React = GÜVENLI |
| Server Actions | ✅ EVET | Vite + React = GÜVENLI |
Etkilenen Paketler
Açık sadece React 19.0’ı değil, aşağıdaki tüm paketleri etkiliyor:
- React 19.0
- React Server Components
- Next.js (Server Components kullanan versiyonlar)
- React DOM Webpack
- React DOM Parcel
- Turbo Pack
- React Router (Server Component entegrasyonu olan versiyonlar)
Açık Nasıl Çalışıyor? Teknik Derinlik
Flight Protokolü ve Deserializer Hatası
React Server Components, RSC Flight protokolü adında özel bir iletişim sistemi kullanıyor. Bu protokol, server’daki JavaScript’i client’a (tarayıcıya) aktarıyor.
Sorun: Sistem, client’tan (tarayıcıdan) gelen verilere aşırı güven gösteriyor.
// Açıklık: Server'daki fonksiyon
export async function deleteUser(userId) {
// Hiçbir doğrulama yok!
await database.users.delete({ id: userId });
}
// Saldırı: Tarayıcıdan gelen kötü amaçlı kod
deleteUser("SELECT * FROM admin_users;") // SQL Injection
deleteUser("../../etc/passwd") // Path Traversal
deleteUser("rm -rf /") // Sistem Komutu
Module Metadata Manipülasyonu
Saldırgan, tarayıcıdan “module metadata” adı verilen bilgileri manipüle ederek, server’da kesinlikle çağrılmaması gereken fonksiyonları çağırabiliyor.
// Saldırgan tarayıcıdan gönderir:
{
"moduleName": "getPrivateAdminData", // Var olmayan fonksiyon
"args": ["hacker_command"]
}
// Server doğrulamadan çalıştırır → RCE ✗
Türkiye’de CVE-2025-55182 Riski
Türkiye’deki Tehditli Siteler
Türkiye’de pek çok web geliştirici ve kurumsal firma React ve Next.js kullanıyor:
- 💼 E-ticaret Siteleri (Trendyol benzeri yapılar)
- 🏦 Fintech Uygulamaları (Mobil bankacılık, kripto borsaları)
- 📱 SaaS Platformları (Proje yönetim, CRM araçları)
- 🎓 Eğitim Platformları (Online kurslar, öğrenci portalleri)
- 🏥 Sağlık Uygulamaları (Telemedicine, hastane yönetim sistemleri)
ZoomEye ve Shodan’da Tespit
Siber suçlular şu komutları kullanarak vulnerable siteleri bulabiliyorlar:
http.body="__NEXT_DATA__" && http.body="use server"
Bu sorguyla milyonlarca siteden açık olanlar bulunabiliyor. Türkiye’den de düzinelerce site bu kategoriye giriyor.
Pratik Örnek: Saldırı Senaryoları
Örnek 1: E-ticaret Sitesi
Zafiyetli Kod:
// next/app/actions.js
"use server"
export async function applyDiscount(discountCode, cartValue) {
// HATA: Kod hiç kontrol edilmiyor!
const discount = await db.discounts.findOne({ code: discountCode });
return cartValue - discount.amount;
}
Saldırı Senaryosu:
applyDiscount("'; DROP TABLE orders; --", 1000)
// Tüm siparişleri siler!
Örnek 2: Yönetici Paneli
Zafiyetli Kod:
// next/app/admin/deleteUser.js
"use server"
export async function removeUser(userId) {
// Kimlik doğrulama yok!
await db.users.deleteOne({ _id: userId });
}
Saldırı Senaryosu:
// Tüm admin kullanıcıları silme
for (let i = 0; i < 10000; i++) {
removeUser(i);
}
Bir Sitenin CVE-2025-55182’ye Açık Olup Olmadığını Nasıl Anlarız?
1. Wappalyzer Extension Yöntemi (En Basit)
- Chrome’da Wappalyzer extension’ını yükle
- Siteyi aç
- Extension’ı tıkla
- “React 19.0” görürsen → Riskli olabilir ⚠️
- “Next.js” görürsen → Çift kontrol et
2. Console Yöntemi
Tarayıcında F12 tuşuna basıp Console sekmesine gidin ve aşağıdaki komutu yazın:
React.version
// Çıktı:
19.0.0 // Riskli ⚠️
18.2.0 // Güvenli ✅
undefined // React yok ✅
3. Network Tab Yöntemi
- F12 → Network sekmesi
- Sayfayı yenile
- Ara:
__NEXT_DATA__veya/_next/rsc/ - Görürsen → Riskli olabilir ⚠️
4. HTML Kaynağı Yöntemi
- Ctrl+U veya Sağ Tık → Sayfa Kaynağını Görüntüle
- Ara:
"use server"veya"__NEXT_DATA__" - Görürsen → Riskli olabilir ⚠️
Korunma Yolları: Yapılması Gerekenler
🔴 Acil Önlemler (İlk 24 Saat)
1. Bağımlılık Envanterini Kontrol Et
# Node.js projesinde:
npm ls react
npm ls next
# Sürümleri not et
2. Hemen Yama Yap
# React'i güncelle
npm update react react-dom
# Next.js'i güncelle
npm update next
# Production'a deploy et
3. Yazılım Malzeme Listesi (SBOM) Oluştur
npm install -g cyclonedx-npm
cyclonedx-npm > sbom.json
4. Web Application Firewall (WAF) Aktifleştir
- Cloudflare kullanıyorsanız: Kuralları sıkılaştır
- AWS WAF kullanıyorsanız: RSC payload’larını filtrele
- Kendi WAF’ınız varsa:
/_next/rsc/isteklerini monitörle
🟡 Orta Vadeli Önlemler (Haftalarca)
1. Input Validasyonu Ekle
// GÜVENLI: Input kontrol ile
"use server"
export async function updateUser(userId: string, data: unknown) {
// Kontrol: User ID validi mi?
if (!isValidUserId(userId)) {
throw new Error("Invalid user ID");
}
// Kontrol: Veri beklenen format mı?
const validated = userSchema.parse(data);
await db.users.update(userId, validated);
}
2. Authentication & Authorization Kontrol
// GÜVENLI: Kullanıcı yetkisi kontrol
"use server"
import { auth } from "@/auth"
export async function deleteUser(userId: string) {
const session = await auth();
// Admin mi?
if (session.user.role !== "admin") {
throw new Error("Unauthorized");
}
await db.users.delete(userId);
}
3. Rate Limiting Ekle
import { Ratelimit } from "@upstash/ratelimit";
const ratelimit = new Ratelimit({
redis: Redis.fromEnv(),
limiter: Ratelimit.slidingWindow(10, "1 h"),
});
export async function sensitiveAction() {
const { success } = await ratelimit.limit("critical-action");
if (!success) {
throw new Error("Too many requests");
}
// Action yap
}
🟢 Uzun Vadeli Stratejiler (Aylar)
1. Security Code Review
- Tüm Server Components’i gözden geçir
- Input validation pattern’leri standartlaştır
- Security checklist oluştur
2. Automated Testing
// Test dosyası
describe("Server Actions Security", () => {
it("should reject invalid input", async () => {
expect(async () => {
await deleteUser("invalid-id");
}).rejects.toThrow();
});
it("should check authorization", async () => {
const nonAdmin = { role: "user" };
expect(async () => {
await sensitiveAction(nonAdmin);
}).rejects.toThrow("Unauthorized");
});
});
3. Dependency Security Scanning
# npm audit yap
npm audit
# Snyk tarafından taranır
snyk test
# Dependabot kullan (GitHub)
# Otomatik güvenlik güncellemeleri
React 19.0 Kullanan Siteleri Bulma: Dorklar
Shodan Dorkları
http.html:"use server" && http.title:"React"
http.body:"__NEXT_DATA__" && http.body:"renderToPipeableStream"
http.html:"react.production.min.js" && http.html:"19.0"
http.body:"RSC" && http.body:"Next.js"
ZoomEye Dorkları
http.body="__NEXT_DATA__" && http.body="use server"
http.body="renderToPipeableStream" || http.body="RSC flight"
app="React Router" && http.body="react.production.min.js"
⚠️ Uyarı: Bu dorkları sadece kendi sisteminizi kontrol etmek veya güvenlik araştırması yapmak için kullanın. İzinsiz saldırı yasa dışıdır.
Türkiye’de Güvenlik Kaynakları
Resmi Kaynaklar
| Kaynak | URL | Açıklama |
|---|---|---|
| USOM | usom.gov.tr | Türkiye’nin resmi güvenlik merkezi |
| BEL-TIS | beltic.org | Bilişim Endüstrileri Derneği |
| TÜBİSAD | tubisad.org.tr | Türk Bilişim Sanayii Derneği |
| BTK | btk.gov.tr | Bilgi Teknolojileri Kurumu |
Teknik Kaynaklar (Türkçe)
- Penligent.ai – CVE-2025-55182 Derin Analizi
- Emre Güzel Blog – React Server Components Rehberi
- Eser Özvataf – YouTube RSC Eğitimleri
İşletmeler İçin Aksiyon Planı
📅 Hafta 1: Değerlendirme
- React/Next.js versiyonlarını kontrol et
- CVE-2025-55182’ye açık siteleri belirle
- Risk değerlendirmesi yap
📅 Hafta 2-3: Çözüm
- Security patch’leri uygula
- Input validation ekle
- WAF kurallarını sıkılaştır
📅 Ay 2-3: Hardening
- Security code review yap
- Test coverage’ı artır
- Monitoring’i geçir
📅 Devam Eden: Maintenance
- Dependency güncellemelerini takip et
- Security announcements’leri oku
- Penetration testing’i düzenle
Sonuç: Alınması Gereken Dersler
CVE-2025-55182, web geliştirme dünyasına önemli bir uyarı sunmaktadır:
- Framework’lere Körü Körüne Güvenme: Modern frameworkler bile güvenlik açığı taşıyabiliyor
- Input Validasyonu Vazgeçilmez: Client’tan gelen hiçbir veri güvenilmemeli
- Hızlı Patch: Kritik açıklar açık adıldığında 48 saat içinde yama uygulanmalı
- Continuous Monitoring: Dependency tracking tools’ları kullan
Türkiye’de teknoloji sektörü hızlı büyüyor, ama güvenlik bilinci maalesef geride kalabiliyor.







