Celah RCE Kritis Next.js Oktober 2026: CVE-2026-96889, use cache, dan Cara Update ke 16.4.1

Next.js 16.4.1 dan 15.5.28 menambal dua celah remote code execution tanpa login dengan skor 9.5, serta celah denial of service di Server Actions. Aplikasi mana yang benar-benar terdampak, kenapa versi sharp sama pentingnya dengan versi Next.js, dan cara memastikan perbaikannya sudah sampai di production.

Dipublikasikan 8 menit baca
Laptop menampilkan kode di meja putih dalam ruang kerja yang terang

Pada 14 Oktober 2026, Vercel merilis Next.js 16.4.1 dan 15.5.28 di luar jadwal rilis biasanya. Kedua versi ini menambal dua celah kritis yang memungkinkan penyerang menjalankan kode di server tanpa login, masing-masing dengan skor 9.5 di CVSS 4.0, ditambah satu celah denial of service di Server Actions. Di hari yang sama, React menerbitkan advisory kritis yang berkaitan untuk React Server Components, dan Cyber Security Agency Singapura mengeluarkan peringatan pada 20 Oktober. Belum ada laporan eksploitasi, tetapi beberapa repository yang mengklaim berisi kode proof-of-concept untuk salah satu celahnya sudah bermunculan di GitHub. Jika Anda menjalankan Next.js di server sendiri, update ini sebaiknya dikerjakan minggu ini.

Ringkasan Tiga Advisory

AdvisoryTingkatVersi terdampakDiperbaiki di
CVE-2026-96889: RCE di Image OptimizationKritis, 9.510.0.0 sampai 15.5.27, dan 16.x sampai 16.4.015.5.28, 16.4.1
GHSA-673q-mjm6-r5xr: RCE di fungsi use cacheKritis, 9.516.0.0 sampai 16.4.016.4.1
GHSA-p3m5-59mp-jv5r: denial of service di Server ActionsTinggi, 8.213.0.0 sampai 15.5.27, dan 16.0.0 sampai 16.4.015.5.28, 16.4.1

Advisory denial of service itu kemudian mendapat nomor CVE-2026-94482. Celah use cache belum memiliki nomor CVE saat artikel ini ditulis.

CVE-2026-96889: Image Optimizer dan sharp

Celah pertama sebenarnya tidak ada di kode Next.js. Sumbernya adalah bug memori di library yang dibundel bersama sharp, package pengolah gambar yang dipakai Next.js untuk Image Optimization API bawaannya, yaitu endpoint di balik next/image yang mengubah ukuran gambar saat diminta. Menurut Vercel, celah ini bisa berujung remote code execution ketika Next.js berjalan di Linux berbasis glibc dan melibatkan file SVG. Sebagian besar server dan image container berbasis Debian, Ubuntu, atau RHEL memakai glibc, sedangkan image Alpine memakai musl.

Perbaikannya ada di sharp 0.35.5 atau lebih baru, dan detail ini penting. Next.js 16.4.1 mewajibkan sharp 0.35.5, tetapi Next.js 15.5.28 masih menerima sharp 0.34.x. Aplikasi di versi 15 yang meng-upgrade Next.js tetapi tetap memakai lockfile lama bisa saja masih memakai sharp versi lama, sehingga celahnya tetap terbuka. Setelah upgrade, jalankan npm ls sharp dan periksa versinya. Jika masih 0.34, pasang sharp 0.35.5 atau lebih baru secara eksplisit, atau tambahkan override di package.json.

Aplikasi yang tidak memakai optimizer bawaan, misalnya yang mengatur images.unoptimized ke true, memakai static export, atau memakai custom loader yang mengirim gambar ke CDN seperti Cloudinary atau imgix, tidak memproses request lewat sharp dengan cara ini. Upgrade tetap disarankan, tetapi tingkat urgensinya lebih rendah.

Celah use cache: Tidak Ada Workaround

Celah kedua berlaku untuk aplikasi App Router yang memakai Cache Components, fitur Next.js 16 yang berpusat pada directive use cache. Aplikasi terdampak jika ada fungsi use cache yang mengembalikan lebih dari satu typed array, seperti Uint8Array atau Float32Array. Vercel menyatakan tidak ada workaround dan meminta semua pengguna 16.x segera upgrade, bahkan jika kodenya tidak punya fungsi seperti itu. Fungsi semacam ini mudah terlewat, apalagi kalau letaknya di library bersama atau utility yang ditulis berbulan-bulan lalu.

Di hari yang sama, React menerbitkan GHSA-xqc2-xf4c-x3h3, celah remote code execution kritis di React Server Components yang juga melibatkan respons berisi beberapa typed array. Celah ini berlaku untuk react-server-dom-webpack, react-server-dom-turbopack, dan react-server-dom-parcel versi 19.0.0 sampai 19.3.0, dan sudah diperbaiki di 19.0.9, 19.1.10, 19.2.9, dan 19.3.1. Next.js membawa salinan package ini sendiri, jadi upgrade Next.js sudah mencakupnya. Tim yang memakai React Server Components lewat framework atau plugin bundler lain perlu memperbarui package tersebut secara langsung.

Denial of Service di Server Actions

Advisory ketiga tidak separah dua lainnya, tetapi menjangkau lebih banyak aplikasi. Request yang dirakit khusus ke aplikasi App Router yang punya setidaknya satu Server Action bisa membuat pemakaian CPU melonjak hingga semua request lain di proses yang sama ikut tertahan. Tidak ada workaround untuk celah ini. Aplikasi yang hanya memakai Pages Router, atau tidak punya Server Action sama sekali, tidak terdampak. Karena Server Actions kini menjadi cara standar menangani form di App Router, banyak aplikasi yang dibangun dalam dua tahun terakhir masuk kelompok terdampak.

Bukan Rilis Keamanan Pertama Sejak September

Perbaikan Oktober ini datang setelah September yang juga sibuk. Pada 22 September, Next.js 16.3.6 menambal CVE-2026-94545, celah remote code execution kritis di ImageResponse versi Node.js dari next/og ketika nilai dari penyerang masuk ke konten SVG. Pada 30 September menyusul sejumlah advisory lain, termasuk server-side request forgery di Image Optimization (CVE-2026-94483) dan dua celah cache poisoning yang memengaruhi halaman SSG dan ISR di deployment self-hosted (CVE-2026-94543 dan CVE-2026-94484). Tim yang melewatkan update-update tersebut tidak perlu memasangnya satu per satu, karena versi 16.4.1 sudah mencakup semuanya.

Cara Update

  1. 1Cek versi Next.js di setiap project dengan npm ls next, lalu catat apakah project tersebut ada di versi 15 atau 16.
  2. 2Upgrade: npm install next@16.4.1 untuk versi 16, atau npm install next@15.5.28 untuk versi 15. Aplikasi di versi 14 ke bawah tidak punya rilis perbaikan dan perlu direncanakan pindah ke 15 atau 16.
  3. 3Jalankan npm ls sharp. Jika versinya di bawah 0.35.5, pasang sharp@^0.35.5 atau tambahkan ke bagian overrides di package.json, lalu install ulang.
  4. 4Jalankan build dan seluruh test, lalu cek manual halaman yang memakai next/image, Server Actions, dan fungsi use cache di staging.
  5. 5Build ulang image Docker. Jika memakai output standalone, pastikan sharp versi baru ikut masuk ke image akhir, karena folder standalone membawa node_modules-nya sendiri.
  6. 6Deploy, lalu cek di dalam container yang berjalan: periksa versi next dan sharp di node_modules, dan jalankan ldd --version untuk melihat apakah base image memakai glibc.

Next.js berjalan di atas Node.js, dan rilis keamanan Node.js tanggal 21 Oktober menambal celah decoder Brotli yang juga bisa berujung remote code execution. Karena image tetap perlu di-build ulang, sekalian naikkan base image ke Node.js 22.23.4, 24.22.1, atau 26.12.1 dalam perubahan yang sama.

Setelah Update

Karena belum ada serangan yang terkonfirmasi, sebagian besar tim tidak perlu melakukan investigasi menyeluruh. Meski begitu, aplikasi yang terbuka ke internet dan sempat menjalankan versi rentan sebaiknya dicek log-nya sebentar. Cari request tidak wajar ke endpoint image optimizer di /_next/image dengan sumber berupa SVG, lonjakan CPU pada proses yang menangani Server Actions, dan tanda-tanda proses Node.js menjalankan shell atau tool pengunduh. Jika ada temuan, perlakukan server sebagai server yang sudah disusupi dan ganti semua secret di environment variable-nya, seperti kredensial database dan API key.

Pelajaran yang lebih besar: framework yang bergerak secepat Next.js butuh rutinitas update. Project yang menjaga versi Next.js tidak tertinggal lebih dari satu atau dua minor dari rilis terbaru, dengan Dependabot atau Renovate yang membuka pull request dan test suite yang memadai, bisa menyerap rilis seperti ini dalam satu jam. Project yang tertinggal beberapa minor harus melompat lebih jauh dengan risiko lebih besar, tepat ketika waktunya sempit. Jika Anda butuh bantuan meng-upgrade atau meninjau aplikasi Next.js, tim kami siap membantu, dan pelatihan Django REST dan Next.js kami membahas praktik ini untuk developer internal.

Poin penting

  • Next.js 16.4.1 dan 15.5.28 menambal CVE-2026-96889 di Image Optimization dan celah use cache, keduanya RCE tanpa login dengan skor 9.5, ditambah denial of service di Server Actions.
  • CVE-2026-96889 diperbaiki lewat sharp 0.35.5. Next.js 15.5.28 masih menerima sharp 0.34.x, jadi cek npm ls sharp setelah upgrade.
  • Celah use cache tidak punya workaround. Upgrade semua aplikasi 16.x, walaupun tidak ada typed array di fungsi use cache.
  • React Server Components mendapat perbaikan kritis yang berkaitan. Next.js sudah membawanya, framework lain butuh react-server-dom-* versi 19.0.9, 19.1.10, 19.2.9, atau 19.3.1.
  • Versi 16.4.1 juga sudah mencakup perbaikan September untuk next/og, SSRF di Image Optimization, dan cache poisoning.
Bagikan artikel ini

Artikel terkait

Artikel lain tentang software development, AI, cloud, dan infrastruktur.

Mari berdiskusi

Sedang mencari partner untuk pengembangan software?

Ceritakan proyek yang sedang Anda bangun, kebutuhan yang ingin diselesaikan, dan tantangan yang dihadapi. Kami dapat membantu membahas pendekatan teknis, scope, timeline, dan estimasi biaya.

Mulai diskusi