Ali Buğatekin

kayıttan

16.05.2026 · 6 dk okuma

Cuma Günü E-mail Geldi: Framework Seçtiğinde Hangi Sözleşmeyi İmzaladığını Hatırla

Ali Buğatekin

Next.jsReactFrontend SecurityFrameworkDevX

6 Mayıs 2026 günü Next.js ekibi koordineli bir güvenlik release'i yayınladı: tek seferde 13 advisory, üstüne 7 Mayıs'ta bir follow-up. Listede middleware/proxy bypass, React Server Components'ta DoS, cache poisoning, CSP nonce XSS, WebSocket SSRF... Patch versiyonları 15.5.18 ve 16.2.6. React tarafında da matching patch'ler — 19.0.6, 19.1.7, 19.2.6.

Vercel'in açıklamasında dikkat çeken bir cümle var: bu sefer WAF rule deploy etmemişler, çünkü bu açıklar firewall katmanında güvenilir biçimde bloklanamıyor. Tek tam çözüm framework'ü patch'lemek.

Bu noktada bir frontend developer olarak şunu fark ediyorum: framework seçimi sadece "DX ve performans" tartışması değil. Aynı zamanda bir patch ekonomisine abone olma kararı.

Bu tek bir olay değil, bir patern

Mayıs cluster'ı şok etti ama yalnız değil. Son 14 aya bakalım:

  • Mart 2025 — CVE-2025-29927 (CVSS 9.1): Middleware authorization bypass. Tek bir HTTP header'ı (x-middleware-subrequest) spoof'layarak tüm middleware katmanını es geçebiliyordun. Next.js 11.1.4'ten 15.2.3'e kadar her şey etkilendi — yıllardır canlı yayında olan binlerce uygulama.
  • Aralık 2025 — CVE-2025-55182 "React2Shell" (CVSS 10.0): React Server Components'ta pre-auth RCE. Tek bir POST isteğiyle uzaktan kod çalıştırma. Güvenlik araştırmacıları Log4Shell ile karşılaştırdı; Google Threat Intelligence ve Microsoft, disclosure'dan sonraki saatlerde Çin-merkezli devlet aktörlerinin ve cryptominer botnetlerinin aktif istismarını gözlemledi. CISA KEV'e eklendi.
  • Aralık 2025 follow-up (CVE-2025-55183 + CVE-2025-55184): React2Shell yamasının ardından bir DoS ve bir source code exposure açığı daha. Sonra Ocak'ta CVE-2026-23864 ile DoS fix'inin eksik olduğu ortaya çıktı; yeniden patch.
  • Mayıs 2026 — yukarıdaki 13 advisory cluster'ı. App Router segment-prefetch bypass'ında ilk yamada Turbopack bundler'ı atlanmış; bir gün sonra GHSA-26hh-7cqf-hhc6 follow-up'ı çıktı.

14 ayda 4 ayrı koordineli güvenlik döngüsü, bir tanesi CVSS 10.0. İlk başta tek tek bakınca "olur böyle şeyler" demek mümkün. Üst üste koyunca bir şey daha net görünüyor: React Server Components olgunluğa giderken yeni bir attack surface getirdi, ve framework ekipleri bu yüzeyi haritalayarak ilerliyor.

Cuma günü gelen e-mail

Eski güvenlik dünyasında "Patch Tuesday" denir — Microsoft, Adobe vs.'nin aylık güvenlik release'leri. Frontend dünyasında bu kadar düzenli bir döngü yok, ama benzer şey gerçekleşmeye başladı: framework ekipleri belirli aralıklarla cluster yamalar atıyor.

Senin pozisyonun şu: bir sabah Slack veya e-mail'de "Next.js güvenlik release'i, mümkün olan en kısa sürede upgrade'leyin" mesajı geliyor. Sprint'in ortasındasın, başka işler de var. Ama 13 advisory listesinde "DoS in RSC" ve "auth bypass via segment-prefetch" gibi şeyler var. Erteleyemiyorsun.

Ve bu sadece yüzeydeki maliyet. Asıl mesele şu: framework patch'i tipik olarak sadece pnpm i next@latest ve commit değil. Build pipeline'ında değişen davranışlar olabiliyor, deployment adapter'ları (OpenNext, Netlify plugin, Vercel build config) ayrı bir versiyon trail'ı tutuyor, Pages Router + i18n + middleware kombinasyonu zaten ekstra fix gerektiriyor. Yani "bir komut çek" değil; "bir gün burada kafa yor" oluyor.

Bunu yılda 3-4 kez yaparsan, bu artık unutulabilir bir maliyet değil; sprint planının görünmez bir varsayımı.

Kontrol ile DX arasındaki sözleşme

Next.js'i seçtiğinde aslında bir sözleşme imzalıyorsun: Vercel ekibinin (ve community'nin) sana hız, conventions, ekosistem getirmesi karşılığında, sen onların release döngüsüne entegre olmak zorundasın.

Bu sözleşme genelde iyi bir alışveriş. Manuel olarak SSR/RSC/middleware/edge runtime yazmaya kalksan, üreteceğin attack surface muhtemelen daha büyük olurdu. Tek başına bir geliştiricinin veya küçük ekibin Vercel'in güvenlik ekibinin yaptığı koordineli disclosure işini yapması zor.

Ama sözleşmenin yan tarafları da var:

1. Senin tempon, framework'ün temposuna bağlanıyor. Onlar major release çıkardığında, sen onları takip etmek için zaman ayırmak zorundasın. Çıkmadığında, eski sürümle yaşamak zorundasın — ki bu güvenlik açısından kötü.

2. Eski sürümler için patch yok. Mayıs release'inde 13.x ve 14.x kullanıcıları için patch yok; "15.x veya 16.x'e geçin" deniyor. Yani LTS gibi uzun ömürlü branch'ler frontend dünyasında yok denecek kadar az.

3. Ekosistem versiyonu zincirleniyor. Next 16'ya geçince React 19 lazım, React 19'a geçince bazı kütüphaneler henüz uyumlu değil. Bir tane bağımlılık güncellersin, üçü domino gibi düşer.

4. İlk yamalar bazen eksik çıkıyor. Mart 2025'teki middleware bypass'ı da, Aralık 2025 DoS'u da, Mayıs 2026 segment-prefetch'i de follow-up advisory gerektirdi. "Yamayı al, geç" yetmiyor; "yamanın eksiksiz olduğunu doğrula" gerekiyor.

Peki ne yapmalı

Burada "frameworksüz yaşa" demek istemiyorum. Anlamsız tavsiye. Asıl önerilebilir şeyler şunlar:

  • Patch için bir hat ayır. "Güvenlik release'i geldiğinde 1 günü buna ayıracağım" diye bir mental policy. Sprint planlamasına dahil et, sürpriz olmasın.
  • Adapter zincirini yakın takip et. Vercel'de yaşamıyorsan, Netlify/OpenNext/Cloudflare adapter'ı muhtemelen ayrı versiyon trail'ında. Bunu unutursan upstream patch yetmez — Mayıs cluster'ında Pages Router + i18n + middleware kullananlar için ayrı bir adapter yaması (@netlify/plugin-nextjs v5.15.11) çıktı.
  • Major'ları geriden takip et, minor'ları yakından. Major release'lere geç adapte olmak makul; patch release'leri her zaman al.
  • Dependabot/Renovate'i security-only modda aç. "Tüm patch PR'ları otomatik" yorucu olur. Sadece security advisory'leri görüştürmek daha tahmin edilebilir.
  • Defense in depth düşün. "Middleware'de auth check var, yeterli" varsayımı tehlikeli. CVE-2025-29927 tam olarak bunu yıktı. Route/page seviyesinde de doğrulama yap; middleware'i tek savunma katmanı sayma.
  • Haberi sana getirsin, sen aramaya çıkma. Bu açıkların büyük çoğunluğunu Twitter'da tesadüfen, Slack'te birinin atmasıyla, ya da Friday email'iyle öğreniyoruz. Ben bunu kişisel olarak çözmek için bir Claude Routine kurdum: her gün 16:00'da Anthropic, Vercel, React Team, GitHub Security advisory feed'lerini ve Twitter'daki güvenlik araştırmacılarını tarayıp benim için Türkçe bir özet hazırlıyor, Notion'a düşüyor. Mart 2025 ve Aralık 2025 açıklarını kaçırmamın sebebi haberin gelmediği değil, benim doğru yerde olmadığımdı. Şimdi haber bana geliyor.

Sonuç

Frontend dünyasının olgunlaştığının küçük bir göstergesi bence bu cluster patch'ler. Eskiden "framework'ümün hızı şu kadar" diye konuşurduk, şimdi "framework'ümün release ekibinin güvenilirliği" konuşulmaya başlıyor.

Bir ekosistem mature olduğu için bu kadar açık çıkmıyor; mature olduğu için açıklar bu kadar dikkatli disclosure ediliyor. React Team'in açığı önce kendi araştırmacısı Lachlan Davidson'a responsibly bildirmesi, sonra Vercel-Cloudflare-Netlify-AWS'nin koordineli açıklaması — bu olgun bir endüstri davranışı. Kötü haber değil aslında.

Framework seçimi kararı verirken sadece DX değil, bu patch sözleşmesini de hesaba katmak gerek.

Geleceğe bakınca, bence "frontend security maturity" 2026'nın eskileyen tartışmalarından biri olacak.

yararlı bulduysan paylaş