Kerentanan Bypass Otorisasi Middleware Next.js (CVE-2025-29927) adalah...

Kerentanan kritis (CVE-2025-29927) ditemukan di middleware. Baca artikel untuk tahu detail & cara perbaiki.

Ardianto Nugroho

Ardianto Nugroho

15 April 2025

Kerentanan Bypass Otorisasi Middleware Next.js (CVE-2025-29927) adalah...

Pendahuluan

Next.js telah muncul sebagai salah satu framework React paling populer untuk membangun aplikasi web modern, menawarkan fitur-fitur canggih seperti server-side rendering, rute API, dan kemampuan middleware. Namun, sebuah kerentanan kritis (CVE-2025-29927) baru-baru ini ditemukan yang memengaruhi fungsionalitas middleware, yang berpotensi memungkinkan penyerang untuk melewati mekanisme autentikasi dan otorisasi sepenuhnya.

Kerentanan ini sangat mengkhawatirkan karena middleware sering digunakan untuk mengimplementasikan pemeriksaan autentikasi, kontrol akses berbasis peran, dan tindakan keamanan lainnya. Ketika dikompromikan, hal itu dapat menyebabkan akses tidak sah ke sumber daya yang dilindungi, paparan data sensitif, dan berpotensi pengambilalihan aplikasi secara lengkap.

💡
Dan inilah sedikit bonus langsung: jika Anda menyukai pengujian API, Anda pasti ingin mencoba Apidog. Ini adalah alat fantastis yang terintegrasi dengan mulus dengan Python, dan bagian terbaiknya? Anda dapat mengunduh Apidog secara gratis! Ini sempurna untuk mengotomatiskan pengujian API Anda!
Apidodg all in one image
button

Penjelasan Kerentanan CVE-2025-29927

CVE-2025-29927 adalah kerentanan kritis di Next.js yang memungkinkan penyerang untuk sepenuhnya melewati pemeriksaan otorisasi berbasis middleware. Kerentanan ini berasal dari cacat implementasi dalam cara Next.js menangani header HTTP tertentu dalam permintaan.

Ketika sebuah permintaan menyertakan header x-middleware-prefetch yang dibuat khusus, eksekusi middleware dapat dihindari sepenuhnya, memungkinkan akses langsung ke rute yang dilindungi. Kerentanan ini memengaruhi aplikasi yang hanya bergantung pada middleware untuk mengimplementasikan kontrol autentikasi dan otorisasi.

Detail Teknis CVE-2025-29927

Kerentanan ini mengeksploitasi cara Next.js memproses permintaan prefetch. Dengan mengatur header x-middleware-prefetch ke 1, penyerang dapat membuat Next.js memperlakukan permintaan tersebut sebagai operasi prefetch, yang dalam kondisi tertentu melewati pemeriksaan keamanan di middleware.

Seorang penyerang dapat mengeksploitasi kerentanan ini dengan permintaan HTTP sederhana seperti:

GET /dashboard HTTP/1.1
Host: vulnerable-app.com
x-middleware-prefetch: 1

Bahkan jika middleware berisi kode untuk mengalihkan pengguna yang tidak diautentikasi dari /dashboard, permintaan ini akan melewati pemeriksaan itu dan berpotensi mendapatkan akses ke dashboard yang dilindungi.

Tautan Github ke masalah keamanan: https://github.com/vercel/next.js/security/advisories/GHSA-f82v-jwr5-mffw

Bukti Konsep

Eksploitasi ini mudah dan tidak memerlukan alat khusus selain kemampuan untuk mengirim permintaan HTTP khusus. Menggunakan alat seperti curl, seorang penyerang dapat mengeksekusi:

curl -H "x-middleware-prefetch: 1" https://vulnerable-app.com/dashboard

Permintaan sederhana ini berpotensi melewati pemeriksaan autentikasi dan mendapatkan akses ke konten yang dilindungi.

Versi Next.js Mana yang Terpengaruh?

Kerentanan ini memengaruhi versi Next.js hingga:

Aplikasi rentan jika mereka:

  1. Menggunakan middleware untuk pemeriksaan autentikasi atau otorisasi
  2. Berjalan pada versi Next.js yang terpengaruh
  3. Tidak memiliki pemeriksaan autentikasi tambahan di sisi server atau tingkat API

Kerentanan ini sangat mengkhawatirkan untuk aplikasi yang di-deploy pada platform serverless seperti Vercel, di mana middleware sering menjadi metode utama untuk mengimplementasikan autentikasi karena kemampuan fungsi Edge-nya.

Cara Mendeteksi Apakah Aplikasi Next.js Anda Rentan

Untuk menentukan apakah aplikasi Anda rentan, Anda dapat:

  1. Periksa versi Next.js Anda
  2. Uji rute yang dilindungi dengan header x-middleware-prefetch: 1
  3. Tinjau implementasi middleware untuk ketergantungan tunggal pada middleware Next.js untuk kontrol keamanan

Dampak dari kerentanan ini bervariasi tergantung pada apa yang dilindungi oleh middleware:

Apa yang Harus Anda Lakukan di Tengah Masalah Keamanan Kritis Next.js

1. Perbarui ke Versi yang Ditambal

Mitigasi paling mudah adalah memperbarui ke versi yang ditambal:

2. Implementasikan Pertahanan Mendalam

Jangan hanya bergantung pada middleware untuk keamanan:

// pages/dashboard.js atau 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. Terapkan Validasi Header Kustom

Tambahkan validasi di middleware Anda untuk menolak permintaan dengan header yang mencurigakan:

export function middleware(request) {
  // Reject requests with x-middleware-prefetch header
  if (request.headers.get('x-middleware-prefetch')) {
    return new NextResponse(null, { status: 403 });
  }
  
  // Regular middleware logic
  // ...
}

4. Gunakan Edge Config untuk Mengontrol Akses

Untuk aplikasi yang di-deploy di Vercel, pertimbangkan untuk menggunakan Edge Config untuk memelihara daftar blokir IP atau pola permintaan yang berpotensi berbahaya.

Cara Bermigrasi dari Vercel ke Cloudflare

How to Migrate from Vercel to Cloudflare

Jika Anda mempertimbangkan untuk memindahkan aplikasi Next.js Anda dari Vercel ke Cloudflare untuk meningkatkan keamanan.

Proyek ini dapat ditemukan di Github: https://github.com/ygwyg/diverce, dan berikut adalah panduan langkah demi langkah tentang cara menggunakan alat ini untuk bermigrasi dari Next.js ke Cloudflare:

1. Siapkan Aplikasi Next.js Anda

Pertama, pastikan aplikasi Anda kompatibel dengan Cloudflare Pages:

# Install the Cloudflare Pages adapter
npm install @cloudflare/next-on-pages

Perbarui next.config.js Anda:

// next.config.js
/** @type {import('next').NextConfig} */
const nextConfig = {
  // Cloudflare Pages compatible settings
  output: 'export',
  images: {
    unoptimized: true,
  },
  // Existing configuration...
};

module.exports = nextConfig;

2. Siapkan Cloudflare Pages

  1. Buat akun Cloudflare jika Anda belum memilikinya
  2. Navigasi ke Cloudflare Dashboard → Pages
  3. Hubungkan repositori GitHub/GitLab Anda
  4. Konfigurasikan pengaturan build:

3. Implementasikan Cloudflare Workers untuk Fungsionalitas Middleware

Buat file functions/_middleware.js di proyek Anda:

export async function onRequest({ request, next, env }) {
  // Get the URL from the request
  const url = new URL(request.url);
  
  // Authentication logic
  // Example: Check authentication token
  const token = request.headers.get('Authorization');
  
  if (!token && url.pathname.startsWith('/dashboard')) {
    return Response.redirect(new URL('/login', request.url), 302);
  }
  
  // Continue to the next middleware or the destination
  return await next();
}

4. Konfigurasikan Pengaturan DNS

Perbarui pengaturan DNS Anda untuk mengarah ke Cloudflare:

  1. Di Cloudflare Dashboard, buka domain Anda
  2. Tambahkan catatan CNAME yang mengarah ke deployment Cloudflare Pages Anda
  3. Pastikan SSL/TLS diatur ke "Full" atau "Full (Strict)"

5. Implementasikan Tindakan Keamanan Tambahan

Manfaatkan fitur keamanan Cloudflare:

6. Uji dan Atasi Masalah

Sebelum bermigrasi sepenuhnya:

  1. Deploy ke lingkungan staging
  2. Uji semua rute dan fungsionalitas
  3. Verifikasi integrasi API masih berfungsi
  4. Periksa batasan khusus Cloudflare

Kesimpulan

CVE-2025-29927 mewakili kerentanan serius dalam middleware Next.js yang dapat sepenuhnya merusak keamanan aplikasi. Kemampuan untuk melewati autentikasi berbasis middleware dengan satu header HTTP menunjukkan mengapa pertahanan mendalam sangat penting dalam keamanan aplikasi web.

Untuk melindungi aplikasi Next.js Anda:

  1. Perbarui ke versi yang ditambal segera
  2. Implementasikan beberapa lapisan autentikasi
  3. Jangan hanya bergantung pada middleware untuk kontrol keamanan
  4. Pertimbangkan untuk mengimplementasikan aturan WAF untuk memblokir header yang mencurigakan
  5. Uji aplikasi Anda secara teratur untuk kerentanan keamanan

Jika Anda mempertimbangkan untuk pindah dari Vercel, Cloudflare menawarkan fitur keamanan yang kuat yang dapat membantu mengurangi kerentanan serupa di masa mendatang. Dengan memanfaatkan jaringan edge Cloudflare, kemampuan WAF, dan platform Workers, Anda dapat membangun aplikasi Next.js yang lebih aman dan tangguh.

Ingatlah bahwa keamanan adalah proses berkelanjutan—tetap mendapatkan informasi tentang kerentanan baru dan memelihara dependensi yang mutakhir sangat penting untuk melindungi aplikasi dan data pengguna Anda.

💡
Dan inilah sedikit bonus langsung: jika Anda menyukai pengujian API, Anda pasti ingin mencoba Apidog. Ini adalah alat fantastis yang terintegrasi dengan mulus dengan Python, dan bagian terbaiknya? Anda dapat mengunduh Apidog secara gratis! Ini sempurna untuk mengotomatiskan pengujian API Anda!
Apidodg all in one image
button

Explore more

Cara Menggunakan OpenAI Sora Secara Gratis: Panduan Lengkap untuk Microsoft Bing Video Creator

Cara Menggunakan OpenAI Sora Secara Gratis: Panduan Lengkap untuk Microsoft Bing Video Creator

💡Ingin alat Pengujian API hebat yang menghasilkan Dokumentasi API yang indah? Ingin platform Terintegrasi, All-in-One untuk Tim Pengembang Anda bekerja sama dengan produktivitas maksimum? Apidog memenuhi semua permintaan Anda, dan menggantikan Postman dengan harga yang jauh lebih terjangkau!tombol Model teks-ke-video mutakhir OpenAI, Sora, telah mengubah pembuatan konten yang dihasilkan AI dengan kemampuannya menciptakan video yang sangat realistis dari instruksi teks sederhana. Namun, biaya

3 June 2025

Apa itu Ollama? Cara Menginstal Ollama?

Apa itu Ollama? Cara Menginstal Ollama?

💡Ingin alat Pengujian API yang hebat yang menghasilkan Dokumentasi API yang indah? Ingin platform terintegrasi, All-in-One untuk Tim Pengembang Anda bekerja sama dengan produktivitas maksimum? Apidog memenuhi semua permintaan Anda, dan menggantikan Postman dengan harga yang jauh lebih terjangkau! button Lanskap kecerdasan buatan (AI) terus berkembang dengan kecepatan tinggi, dan Model Bahasa Besar (LLM) menjadi semakin kuat dan mudah diakses. Meskipun banyak orang berinteraksi dengan model

28 April 2025

Di Mana Unduh Swagger UI Bahasa Indonesia Gratis?

Di Mana Unduh Swagger UI Bahasa Indonesia Gratis?

Ingin Swagger UI dalam Bahasa Indonesia? Artikel ini menjelaskan mengapa tidak ada unduhan resmi gratis dan cara mengaktifkan terjemahan. Jelajahi fitur Swagger dan lihat mengapa Apidog adalah alternatif Swagger superior untuk desain, pengujian, dan dokumentasi API yang terintegrasi.

23 April 2025

Mengembangkan API dengan Apidog

Apidog adalah alat pengembangan API yang membantu Anda mengembangkan API dengan lebih mudah dan efisien.