# Bypass Otorisasi Next.js: Deep Dive CVE-2024-46991

> Kerentanan kritis Next.js memungkinkan melewati otorisasi berbasis middleware melalui inkonsistensi normalisasi nama jalur.

**URL:** https://www.ciptadusa.com/blog/nextjs-authorization-bypass-cve-2024-46991  
**Type:** blog  
**Author:** PT Cipta Dua Saudara  
**Category:** Keamanan Aplikasi  
**Published:** 2026-05-30  
**Cover:** https://www.ciptadusa.com/media/defaults/blog-cover.svg  

## Article

# Bypass Otorisasi Next.js: Penyelaman Mendalam CVE-2024-46991

## Ringkasan

Kerentanan bypass otorisasi yang kritis ditemukan di Next.js, framework React yang populer oleh Vercel. Dilacak sebagai CVE-2024-46991 (GHSA-7gfc-8cq8-jh5f), kerentanan ini memungkinkan penyerang melewati kontrol otorisasi berbasis middleware dalam kondisi tertentu.

## Detail vulnerability

### Root cause

Kerentanan terjadi pada cara Next.js memproses dan menormalkan nama jalur sebelum mencapai middleware. Ketika keputusan otorisasi dibuat berdasarkan nama jalur di middleware, ketidakkonsistenan antara nama jalur yang dilihat oleh middleware dan pengendali rute sebenarnya dapat menyebabkan bypass otorisasi.

### Versi yang Terkena Dampak

- Next.js 9.5.5 hingga 14.2.14
- Diperbaiki di Next.js 14.2.15 dan yang lebih baru

### Vektor Serangan

Penyerang dapat mengeksploitasi kerentanan ini dengan:
1. Membuat permintaan dengan nama jalur yang diformat khusus
2. Menggunakan trik pengkodean yang dinormalisasi secara berbeda di tingkat middleware vs. pengendali rute
3. Melewati pemeriksaan kontrol akses berbasis jalur

## Analisis Teknis

### Masalah Normalisasi Nama Jalur

Middleware Next.js memproses nama jalur permintaan yang masuk, namun karakter atau struktur jalur tertentu yang dikodekan dapat diinterpretasikan secara berbeda pada berbagai tahap siklus hidup permintaan:

```javascript
// Example middleware that could be bypassed
export function middleware(request) {
  const pathname = request.nextUrl.pathname;
  
  // This check could be bypassed
  if (pathname.startsWith('/admin')) {
    return new NextResponse('Unauthorized', { status: 401 });
  }
}
```

### Skenario Eksploitasi

1. **Akses Panel Admin**: Lewati middleware yang melindungi rute admin
2. **Perlindungan Endpoint API**: Mengabaikan autentikasi pada API yang dilindungi
3. **Kontrol Akses Konten**: Mengakses area konten yang dibatasi

## Dampak

### Tingkat Keparahan: Tinggi

- **Kerahasiaan**: Tinggi - Akses ke sumber daya yang dilindungi
- **Integritas**: Tinggi - Potensi modifikasi tanpa izin
- **Ketersediaan**: Rendah - Tidak ada dampak ketersediaan langsung

### Implikasi di Dunia Nyata

Aplikasi yang hanya mengandalkan middleware untuk otorisasi sangatlah rentan. Ini termasuk:
- Aplikasi satu halaman dengan kontrol akses berbasis rute
- Layanan API dengan autentikasi middleware
- Aplikasi multi-penyewa dengan isolasi penyewa

## Mitigasi

### Langkah cepat

1. **Perbarui Next.js** ke versi 14.2.15 atau lebih baru
2. **Tinjau Logika Otorisasi**: Pastikan pemeriksaan otorisasi terjadi di:
   - Rute API
   - Pengambilan data sisi server
   - Komponen server

### Pertahanan Secara Mendalam

```javascript
// Recommended: Multi-layer authorization
// 1. Middleware for basic routing
export function middleware(request) {
  // Basic redirects only, not security-critical
}

// 2. Server-side authorization in data fetching
async function getServerSideProps(context) {
  const session = await getSession(context.req);
  if (!session) {
    return { redirect: { destination: '/login' } };
  }
  return { props: { data: 'protected' } };
}

// 3. API route authorization
export default async function handler(req, res) {
  const session = await getSession(req);
  if (!session) {
    return res.status(401).json({ error: 'Unauthorized' });
  }
  // Process request
}
```

## Penerapan di Vercel

Untuk aplikasi yang dihosting di Vercel, kerentanan ini telah dikurangi secara otomatis melalui perlindungan tingkat platform. Namun, aplikasi yang dihosting sendiri memerlukan pembaruan manual.

## Pelajaran yang Dipetik

1. **Jangan hanya mengandalkan middleware untuk keamanan**: Terapkan otorisasi di beberapa lapisan
2. **Normalisasi nama jalur itu rumit**: Gunakan utilitas yang disediakan framework untuk penanganan jalur
3. **Uji dengan input yang dikodekan**: Sertakan nama jalur yang dikodekan dalam pengujian keamanan

## Referensi

- [Advisory GitHub GHSA-7gfc-8cq8-jh5f](https://github.com/vercel/next.js/security/advisories/GHSA-7gfc-8cq8-jh5f)
- [Dokumentasi Keamanan Next.js](https://nextjs.org/docs/pages/building-your-application/configuring/security)
- [Respon Keamanan Vercel](https://vercel.com/blog)

---

*Markdown version of https://www.ciptadusa.com/blog/nextjs-authorization-bypass-cve-2024-46991 — generated for AI agents and LLM crawlers.*
