- Kerentanan penolakan layanan (DoS) dan kebocoran kode sumber baru ditemukan dan diungkap pada React Server Components
- Kerentanan ini tidak memungkinkan eksekusi kode jarak jauh (RCE), tetapi tetap menimbulkan risiko penghentian server atau kebocoran kode
- Paket yang terdampak adalah
react-server-dom-webpack,react-server-dom-parcel, danreact-server-dom-turbopackpada versi 19.0.0~19.2.2, dengan versi perbaikan 19.0.3, 19.1.4, 19.2.3 - Kerentanan DoS (CVE-2025-55184, CVE-2025-67779) dapat memicu loop tak berujung pada server melalui permintaan HTTP berbahaya, sementara kerentanan kebocoran kode sumber (CVE-2025-55183) dapat mengembalikan sebagian kode fungsi server
- Tim React merekomendasikan upgrade segera dan menjelaskan bahwa pengungkapan tambahan ini adalah bagian normal dari siklus respons keamanan
Ringkasan kerentanan yang baru diungkap
- Peneliti keamanan menemukan dua kerentanan tambahan saat memverifikasi patch untuk kerentanan kritis yang diumumkan pekan lalu
- Kerentanan baru ini tidak memungkinkan eksekusi kode jarak jauh (RCE), dan patch React2Shell yang ada tetap efektif
- Kerentanan yang baru diungkap adalah sebagai berikut
- Penolakan layanan (DoS) — CVE-2025-55184, CVE-2025-67779 (CVSS 7.5, tingkat keparahan tinggi)
- Kebocoran kode sumber — CVE-2025-55183 (CVSS 5.3, tingkat keparahan sedang)
- Tim React merekomendasikan upgrade segera
Ketidaklengkapan patch sebelumnya
- Patch pada versi 19.0.2, 19.1.3, 19.2.2 yang dirilis pekan lalu tidak lengkap, sehingga perlu diperbarui lagi
- Perbaikan lengkap tersedia di versi 19.0.3, 19.1.4, 19.2.3
- Harus mengikuti panduan pembaruan pada posting sebelumnya
- Detail tambahan akan diungkap setelah distribusi perbaikan selesai
Paket dan versi yang terdampak
- Kerentanan ini ada pada paket dan versi yang sama dengan CVE-2025-55182
- Versi yang terdampak: 19.0.0~19.2.2
- Paket yang terdampak:
react-server-dom-webpackreact-server-dom-parcelreact-server-dom-turbopack
- Versi perbaikan: 19.0.3, 19.1.4, 19.2.3
- Aplikasi yang tidak menggunakan server atau tidak mendukung React Server Components tidak terdampak
Pola umum pengungkapan kerentanan lanjutan
- Setelah pengungkapan CVE kritis, kerentanan lanjutan sering ditemukan saat jalur kode terkait dianalisis lebih lanjut
- Disebutkan contoh kasus ketika CVE tambahan dilaporkan setelah Log4Shell
- Pengungkapan tambahan semacam ini menunjukkan bahwa respons keamanan berjalan sebagaimana mestinya
Framework dan bundler yang terdampak
- Framework dan bundler berikut menyertakan atau bergantung pada paket React yang rentan
next,react-router,waku,@parcel/rsc,@vitejs/plugin-rsc,rwsdk
- Harus mengikuti panduan pembaruan pada posting sebelumnya
Langkah mitigasi oleh penyedia hosting
- Bekerja sama dengan beberapa penyedia hosting untuk menerapkan langkah mitigasi sementara
- Namun, jangan bergantung pada langkah tersebut dan segera lakukan pembaruan
Panduan terkait React Native
- Pengguna React Native saja tidak memerlukan tindakan tambahan
- Dalam lingkungan monorepo, hanya paket berikut yang perlu diperbarui
react-server-dom-webpackreact-server-dom-parcelreact-server-dom-turbopack
reactdanreact-domtidak perlu diperbarui- Detail terkait dapat dilihat pada issue GitHub React Native
Keparahan tinggi: penolakan layanan (DoS)
- CVE-2025-55184, CVE-2025-67779, CVSS 7.5
- Jika permintaan HTTP berbahaya dikirim ke endpoint fungsi server React, proses deserialisasi dapat memicu loop tak berujung
- Proses server dapat berhenti dan menggunakan CPU secara berlebihan
- Meski tidak mengimplementasikan endpoint fungsi server secara langsung, aplikasi yang mendukung React Server Components tetap dapat rentan
- Patch yang dirilis hari ini menyelesaikan masalah dengan mencegah loop tak berujung
- Karena perbaikan awal tidak lengkap, dilakukan pelengkapan melalui kerentanan tambahan (CVE-2025-67779)
Keparahan sedang: kebocoran kode sumber
- CVE-2025-55183, CVSS 5.3
- Permintaan HTTP berbahaya dapat mengembalikan sebagian kode sumber dari fungsi server
- Ini terjadi ketika fungsi server secara eksplisit atau implisit mengekspos argumen string
- Pada contoh kode, rahasia yang di-hardcode seperti kunci koneksi database dapat terekspos
- Patch menyelesaikan masalah dengan mencegah stringifikasi kode sumber fungsi server
- Cakupan kebocoran terbatas pada kode internal fungsi server, dan rahasia runtime (
process.env.SECRETdan sejenisnya) tidak terdampak - Verifikasi perlu dilakukan berdasarkan bundle produksi
Linimasa
- 3 Desember: Andrew MacPherson melaporkan kebocoran kode ke Vercel dan Meta Bug Bounty
- 4 Desember: RyotaK melaporkan kerentanan DoS
- 6 Desember: Tim React mengonfirmasi kedua masalah dan memulai investigasi
- 7 Desember: Menyusun perbaikan awal dan rencana verifikasi
- 8 Desember: Memberi tahu penyedia hosting dan proyek open source
- 10 Desember: Langkah mitigasi diterapkan dan verifikasi patch selesai
- 11 Desember: Shinsaku Nomura melaporkan DoS tambahan, CVE-2025-55183·55184·67779 diungkap
Pelapor
- Andrew MacPherson (AndrewMohawk) — melaporkan kebocoran kode sumber
- RyotaK (GMO Flatt Security Inc) dan Shinsaku Nomura (Bitforest Co., Ltd.) — melaporkan kerentanan penolakan layanan
1 komentar
Opini Hacker News
React Server Components (RSC) selalu terasa tidak nyaman
Karena hanya dengan melihat kode JavaScript saja, sulit membedakan bagian yang berjalan di klien dan bagian yang berjalan di server
Selain itu, untuk mewujudkannya dibutuhkan mekanisme RPC serialisasi yang dalam, yang tidak transparan bagi developer dan menjadi titik yang meningkatkan risiko celah keamanan
Namun setelah beralih ke app router, semuanya jadi membingungkan. Karena kode bisa berjalan di kedua sisi, objek seperti Headers tidak selalu ada, jadi sulit mengetahui apa yang berjalan di mana
Ketika React+Next berjalan dengan baik, rasanya seperti sihir, tetapi saat bekerja dalam tim, masalahnya adalah prediktabilitas makin hilang
Perannya jelas, pekerjaannya sederhana, dan menurut saya ini pilihan paling aman untuk sebagian besar proyek
Untuk landing page atau halaman pemasaran, SSR memang berguna, tetapi untuk aplikasi seperti dashboard SaaS biasa, hampir tidak ada manfaatnya dibanding kompleksitasnya
Apakah React hanya lebih disorot karena lebih populer, atau memang secara struktural lebih berisiko?
Minggu lalu saya melihat RSC, dan kompleksitasnya terlalu tinggi serta dokumentasinya nyaris tidak ada
React memang bilang ini masih fitur eksperimental, tetapi NextJS sudah menyebarkannya secara luas
Sepertinya akan muncul lebih banyak isu keamanan ke depan, dan sistem build Next terlalu rumit sampai-sampai sulit di-debug
Biayanya terlalu besar dibanding manfaat yang didapat
Karena itu saya juga meninggalkan Next. Beban kognitifnya terlalu besar dan hasil yang didapat tidak seberapa
Bukan hanya RSC, secara umum panduan yang jelas selalu datang terlambat, dan alat seperti CRA pun tidak diakui secara resmi
Baru sekarang dokumentasi useEffect membaik, tetapi sudah terlambat
Bahkan di tahun 2025 saat masih dipakai di dunia kerja, dokumentasi yang jelas tetap kurang
Inti dari SPA adalah “mengirim seluruh aplikasi ke klien dan hanya bertukar data dengan server”
Seperti .aspx Web Forms dulu, semua klik dan input dikirim ke server, lalu DOM yang berubah dikirim balik
Praktiknya seperti kembali ke cara lama, jadi agak absurd
Sayang sekali rasa untuk “memilih alat yang tepat” seakan menghilang
Dalam pengumuman keamanan kali ini, bagian yang paling menonjol adalah kalimat “ketika CVE besar ditemukan, celah lanjutan sering kali ikut terungkap”
Sebelum menjelaskan cakupan masalah, dampak, atau mitigasinya, kalimat itu terasa seperti sedang mencoba membenarkan CVE sehingga membuat tidak nyaman
Dokumen wiki terkait
15 tahun lalu Opa sudah mencoba pendekatan serupa
Ia memisahkan kode klien dan server secara otomatis serta memperkenalkan sintaks mirip JSX
Namun saat analisis keamanan diperkuat, kompilernya menjadi sangat besar, dan pada akhirnya disadari bahwa pemisahan yang jelas lebih penting daripada konsep aplikasi tunggal
Mungkin suatu hari LLM bisa menghasilkan kode seperti ini secara otomatis, tetapi untuk sekarang struktur yang sederhana terasa lebih baik
Patch sedang dikerjakan untuk mencegah masalah seperti prototype pollution di JS, function
toString, dan override PromiseRSC membedakan lingkungan lewat verifikasi statis seperti
import "server-only"atauimport "client-only", jadi secara struktural ini pendekatan yang amanReact dulu bagus saat kecil dan sederhana sebagai View dalam MVC
Sekarang terasa membengkak karena terlalu banyak fitur masuk
git checkout v15.0.0Seharusnya RSC memang tidak pernah ada
Sebagian besar aplikasi cukup dengan merender HTML di server, dan kasus yang benar-benar butuh SPA sangat sedikit
RSC hanya menambah kompleksitas dan celah keamanan
Proyek seperti Bun dan Vercel menjual ilusi “utopia JS tempat semuanya berjalan sempurna”, jadi tren ini tampaknya tidak akan cepat hilang
Dulu saya pernah berdebat dengan Dan Abramov di X soal RSC
Dia menyebutnya fitur inovatif, tetapi saya menyebutnya “senjata untuk menembak kaki sendiri”. Dan ternyata kenyataannya memang begitu
Hanya saja, kemungkinan bug di tingkat protokol diremehkan. Celah kali ini berfokus pada protokol serialisasi
Komunitas keamanan baru sekarang meninjaunya secara mendalam, jadi rasanya akan lebih baik jika tim merespons lebih awal
React pun berubah dari library rendering sederhana menjadi sebuah runtime, sehingga kompleksitasnya meledak
Sebaliknya, menurut saya Vue dan Vite memiliki desain yang jauh lebih elegan → situs pribadi Evan You
Kadang percobaan berani justru menjadi home run
Jika RSC adalah upaya frontend untuk menelan backend, maka HTMX adalah kebalikannya
HTMX mempertahankan batas klien–server sehingga sisi backend aman, tetapi di frontend ada risiko XSS
Tulisan terkait
Tim Next mengumumkan pembaruan keamanan baru → NextJS Security Update 2025-12-11
Mempengaruhi versi 14.x, 15.x, dan 16.x