```html
Giriş
Next.js, modern web uygulamaları oluşturmak için sunucu tarafı oluşturma, API rotaları ve ara yazılım yetenekleri gibi güçlü özellikler sunan, en popüler React çerçevelerinden biri olarak ortaya çıktı. Ancak, yakın zamanda ara yazılım işlevselliğini etkileyen ve potansiyel olarak saldırganların kimlik doğrulama ve yetkilendirme mekanizmalarını tamamen atlamasına izin veren kritik bir güvenlik açığı (CVE-2025-29927) keşfedildi.
Bu güvenlik açığı özellikle endişe vericidir çünkü ara yazılım genellikle kimlik doğrulama kontrolleri, role dayalı erişim kontrolü ve diğer güvenlik önlemlerini uygulamak için kullanılır. Tehlikeye girdiğinde, korunan kaynaklara yetkisiz erişime, hassas verilerin ifşasına ve potansiyel olarak uygulamanın tamamen ele geçirilmesine yol açabilir.

CVE-2025-29927 Güvenlik Açığı Açıklaması
CVE-2025-29927, saldırganların ara yazılım tabanlı yetkilendirme kontrollerini tamamen atlamasına izin veren Next.js'deki kritik bir güvenlik açığıdır. Güvenlik açığı, Next.js'in isteklerde belirli HTTP başlıklarını nasıl işlediğindeki bir uygulama hatasından kaynaklanmaktadır.
Bir istek, özel olarak hazırlanmış bir x-middleware-prefetch
başlığı içerdiğinde, ara yazılım yürütmesi tamamen atlanabilir ve korunan rotalara doğrudan erişim sağlanabilir. Bu güvenlik açığı, kimlik doğrulama ve yetkilendirme kontrollerini uygulamak için yalnızca ara yazılıma güvenen uygulamaları etkiler.
CVE-2025-29927'nin Teknik Detayları
Güvenlik açığı, Next.js'in ön getirme isteklerini işleme biçimini kullanır. x-middleware-prefetch
başlığını 1
olarak ayarlayarak, saldırganlar Next.js'in isteği bir ön getirme işlemi olarak değerlendirmesini sağlayabilir ve bu da belirli koşullar altında ara yazılımdaki güvenlik kontrollerini atlar.
Bir saldırgan, aşağıdaki gibi basit bir HTTP isteğiyle bu güvenlik açığından yararlanabilir:
GET /dashboard HTTP/1.1
Host: vulnerable-app.com
x-middleware-prefetch: 1
Ara yazılım, kimliği doğrulanmamış kullanıcıları /dashboard
'dan uzaklaştırmak için kod içerse bile, bu istek bu kontrolü atlar ve potansiyel olarak korunan panoya erişim sağlayabilir.
Güvenlik sorununa ilişkin Github bağlantısı: https://github.com/vercel/next.js/security/advisories/GHSA-f82v-jwr5-mffw
Kanıt (Proof of Concept)
Sömürü basittir ve özel HTTP istekleri gönderme yeteneğinin ötesinde özel araçlar gerektirmez. Curl gibi bir araç kullanarak, bir saldırgan şunları yürütebilir:
curl -H "x-middleware-prefetch: 1" https://vulnerable-app.com/dashboard
Bu basit istek, potansiyel olarak kimlik doğrulama kontrollerini atlayabilir ve korunan içeriğe erişim sağlayabilir.
Next.js'in Hangi Sürümleri Etkileniyor?
Bu güvenlik açığı, aşağıdaki Next.js sürümlerini etkiler:
- Next.js 13 için 13.4.9
- Next.js 14 için 14.0.4
Uygulamalar, eğer:
- Kimlik doğrulama veya yetkilendirme kontrolleri için ara yazılım kullanıyorsa
- Etkilenen Next.js sürümlerinde çalışıyorsa
- Ek sunucu tarafı veya API düzeyinde kimlik doğrulama kontrollerine sahip değilse
Güvenlik açığı, ara yazılımın Edge işlevleri nedeniyle genellikle kimlik doğrulamanın birincil yöntemi olduğu Vercel gibi sunucusuz platformlarda dağıtılan uygulamalar için özellikle endişe vericidir.
Next.js Uygulamanızın Güvenlik Açığına Sahip Olup Olmadığını Nasıl Tespit Edersiniz?
Uygulamanızın güvenlik açığına sahip olup olmadığını belirlemek için şunları yapabilirsiniz:
- Next.js sürümünüzü kontrol edin
x-middleware-prefetch: 1
başlığı ile korunan rotaları test edin- Güvenlik kontrolleri için yalnızca Next.js ara yazılımına güvenme konusunda ara yazılım uygulamasını inceleyin
Bu güvenlik açığının etkisi, ara yazılımın neyi koruduğuna bağlı olarak değişir:
- Düşük Etki: A/B testi veya analiz gibi güvenlik dışı özellikler için kullanılan ara yazılım
- Orta Etki: Hassas olmayan içeriği koruyan ara yazılım
- Yüksek Etki: Hassas verileri, yönetici panellerini veya finansal bilgileri koruyan ara yazılım
- Kritik Etki: Tüm uygulama için tek kimlik doğrulama katmanı olarak ara yazılım
Next.js Kritik Güvenlik Sorunu Ortasında Ne Yapmalısınız?
1. Yamalı Sürümlere Güncelleyin
En basit azaltma, yamalı sürümlere güncellemektir:
- Next.js 13 için 13.4.10 veya üzeri
- Next.js 14 için 14.0.5 veya üzeri
2. Derinlemesine Savunma Uygulayın
Güvenlik için yalnızca ara yazılıma güvenmeyin:
// pages/dashboard.js veya app/dashboard/page.js
export async function getServerSideProps(context) {
const session = await getSession(context);
if (!session) {
return {
redirect: {
destination: '/login',
permanent: false,
},
};
}
return {
props: { session },
};
}
3. Özel Başlık Doğrulaması Uygulayın
Şüpheli başlıklara sahip istekleri reddetmek için ara yazılımınıza doğrulama ekleyin:
export function middleware(request) {
// x-middleware-prefetch başlığına sahip istekleri reddet
if (request.headers.get('x-middleware-prefetch')) {
return new NextResponse(null, { status: 403 });
}
// Düzenli ara yazılım mantığı
// ...
}
4. Erişimi Kontrol Etmek İçin Edge Config'i Kullanın
Vercel'de dağıtılan uygulamalar için, potansiyel olarak kötü amaçlı IP'lerin veya istek desenlerinin bir engelleme listesini korumak için Edge Config'i kullanmayı düşünün.
Vercel'den Cloudflare'e Nasıl Geçilir?

Next.js uygulamanızı daha iyi güvenlik için Vercel'den Cloudflare'e taşımayı düşünüyorsanız.
Proje Github'da bulunabilir: https://github.com/ygwyg/diverce ve işte bu aracı Next.js'den Cloudflare'e geçmek için nasıl kullanacağınıza dair adım adım bir rehber:
1. Next.js Uygulamanızı Hazırlayın
İlk olarak, uygulamanızın Cloudflare Pages ile uyumlu olduğundan emin olun:
# Cloudflare Pages adaptörünü yükleyin
npm install @cloudflare/next-on-pages
next.config.js
dosyanızı güncelleyin:
// next.config.js
/** @type {import('next').NextConfig} */
const nextConfig = {
// Cloudflare Pages uyumlu ayarlar
output: 'export',
images: {
unoptimized: true,
},
// Mevcut yapılandırma...
};
module.exports = nextConfig;
2. Cloudflare Pages'i Kurun
- Bir Cloudflare hesabınız yoksa bir tane oluşturun
- Cloudflare Kontrol Paneli → Pages'e gidin
- GitHub/GitLab deponuzu bağlayın
- Yapı ayarlarını yapılandırın:
- Yapı komutu:
npm run build
- Yapı çıktısı dizini:
.next
- Vercel projenizden ortam değişkenlerini ayarlayın
3. Ara Yazılım İşlevselliği İçin Cloudflare Workers'ı Uygulayın
Projenizde bir functions/_middleware.js
dosyası oluşturun:
export async function onRequest({ request, next, env }) {
// İstekten URL'yi alın
const url = new URL(request.url);
// Kimlik doğrulama mantığı
// Örnek: Kimlik doğrulama jetonunu kontrol edin
const token = request.headers.get('Authorization');
if (!token && url.pathname.startsWith('/dashboard')) {
return Response.redirect(new URL('/login', request.url), 302);
}
// Bir sonraki ara yazılıma veya hedefe devam edin
return await next();
}
4. DNS Ayarlarını Yapılandırın
DNS ayarlarınızı Cloudflare'e işaret edecek şekilde güncelleyin:
- Cloudflare Kontrol Panelinde, alan adınıza gidin
- Cloudflare Pages dağıtımınıza işaret eden bir CNAME kaydı ekleyin
- SSL/TLS'nin "Tam" veya "Tam (Katı)" olarak ayarlandığından emin olun
5. Ek Güvenlik Önlemleri Uygulayın
Cloudflare'in güvenlik özelliklerinden yararlanın:
- Cloudflare WAF'ı (Web Uygulama Güvenlik Duvarı) etkinleştirin
- Hız sınırlama kurallarını yapılandırın
- Ek kimlik doğrulama katmanları için Cloudflare Access'i ayarlayın
- Özel güvenlik mantığı için Cloudflare Workers'ı kullanın
6. Test Edin ve Sorun Giderin
Tamamen geçmeden önce:
- Bir hazırlık ortamına dağıtın
- Tüm rotaları ve işlevselliği test edin
- API entegrasyonlarının hala çalıştığını doğrulayın
- Cloudflare'e özgü herhangi bir sınırlama olup olmadığını kontrol edin
Sonuç
CVE-2025-29927, uygulama güvenliğini tamamen zayıflatabilen Next.js ara yazılımında ciddi bir güvenlik açığını temsil etmektedir. Tek bir HTTP başlığı ile ara yazılım tabanlı kimlik doğrulamanın atlanabilmesi, web uygulaması güvenliğinde neden derinlemesine savunmanın kritik olduğunu göstermektedir.
Next.js uygulamalarınızı korumak için:
- Hemen yamalı sürümlere güncelleyin
- Çoklu kimlik doğrulama katmanları uygulayın
- Güvenlik kontrolleri için yalnızca ara yazılıma güvenmeyin
- Şüpheli başlıkları engellemek için WAF kuralları uygulamayı düşünün
- Uygulamanızı düzenli olarak güvenlik açıkları açısından test edin
Vercel'den taşınmayı düşünüyorsanız, Cloudflare gelecekte benzer güvenlik açıklarını azaltmaya yardımcı olabilecek sağlam güvenlik özellikleri sunar. Cloudflare'in kenar ağından, WAF yeteneklerinden ve Workers platformundan yararlanarak, daha güvenli ve dayanıklı bir Next.js uygulaması oluşturabilirsiniz.
Güvenliğin devam eden bir süreç olduğunu unutmayın; yeni güvenlik açıkları hakkında bilgi sahibi olmak ve güncel bağımlılıkları korumak, uygulamalarınızı ve kullanıcı verilerinizi korumak için esastır.

```