KUTIM-CSIRT mengimbau Perangkat Daerah dan pengembang aplikasi di lingkungan Pemerintah Kabupaten Kutai Timur yang memanfaatkan pustaka @neo4j/graphql untuk segera menindaklanjuti kerentanan CVE-2026-5423. Kerentanan ini berjenis authentication bypass dengan skor CVSS 8,2 (High).
Berbeda dengan celah yang menyerang server secara langsung, kerentanan ini menyerang lapisan otorisasi aplikasi. Sistem tetap berjalan normal, tidak ada layanan yang tumbang, dan tidak ada galat yang mencolok di log — namun data yang seharusnya hanya boleh dilihat sebagian pengguna dapat mengalir ke pihak yang tidak berhak. Justru sifat senyap inilah yang membuatnya berbahaya.
Ikhtisar
CVE-2026-5423 adalah kerentanan Authentication Bypass by Assumed-Immutable Data (CWE-302) dengan vektor CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N.
Pustaka @neo4j/graphql tidak melakukan verifikasi keaslian objek JWT yang dikirimkan klien melalui parameter connectionParams pada GraphQL subscription. Pustaka menerima objek JWT yang sudah dalam keadaan ter-decode dari sisi klien dan memercayainya begitu saja, tanpa memeriksa tanda tangan kriptografis yang membuktikan bahwa klaim di dalamnya benar-benar diterbitkan oleh pihak yang berwenang.
Dampak
- Penyerang tanpa autentikasi dapat memalsukan klaim JWT saat membuka koneksi GraphQL-over-WebSocket.
- Klaim palsu tersebut diterima sebagai identitas sah ketika aplikasi mengevaluasi directive
@authenticationdan@subscriptionsAuthorization. - Penyerang dapat menerima subscription events yang seharusnya dibatasi hanya untuk pengguna atau role tertentu — termasuk memilih role istimewa seperti administrator.
- Kebocoran data terjadi secara berkelanjutan selama koneksi terbuka, karena subscription memang dirancang mengalirkan pembaruan data secara langsung (real-time).
- Nilai
VI:NdanVA:Npada vektor CVSS menunjukkan dampaknya terpusat pada kerahasiaan data, bukan pada integritas atau ketersediaan layanan.
Sistem yang Terdampak
| Produk | Versi Terdampak | Versi Perbaikan |
|---|---|---|
@neo4j/graphql jalur 5.x | Versi 5.0.0 sampai sebelum 5.12.14 | 5.12.14 atau lebih baru |
@neo4j/graphql jalur 6.x | Versi 6.0.0 sampai 6.6.4 (sudah End-of-Life) | Tidak ada — wajib migrasi ke 7.5.6+ atau 5.12.14+ |
@neo4j/graphql jalur 7.x | Versi 7.0.0 sampai sebelum 7.5.6 | 7.5.6 atau lebih baru |
Perhatikan jalur 6.x: versi tersebut telah mencapai End-of-Life dan tidak akan menerima perbaikan keamanan. Menaikkan versi di dalam jalur 6.x tidak menyelesaikan masalah — yang dibutuhkan adalah migrasi keluar dari jalur tersebut.
Detail Teknis
Pada arsitektur GraphQL, subscription umumnya berjalan di atas WebSocket. Saat koneksi dibuka, klien mengirim parameter awal melalui connectionParams — di sinilah token autentikasi biasanya diselipkan.
Perilaku yang benar adalah server menerima JWT dalam bentuk terenkode, lalu memverifikasi tanda tangannya menggunakan kunci yang hanya diketahui penerbit token. Tanda tangan itulah yang menjadi bukti bahwa isi token tidak diubah di tengah jalan. Pada versi yang rentan, pustaka menerima objek JWT yang sudah ter-decode dan memperlakukan isinya sebagai data yang tak mungkin dipalsukan — persis asumsi keliru yang dinamai CWE-302, Assumed-Immutable Data.
Konsekuensinya, penyerang cukup menyusun objek JSON berisi klaim yang dikehendaki — misalnya roles: ["admin"] — tanpa perlu mengetahui kunci penandatangan sama sekali. Nilai AT:P pada vektor CVSS menandakan adanya prasyarat tertentu, yaitu aplikasi harus mengaktifkan subscription dan menggunakan directive otorisasi yang terdampak.
Rekomendasi
- Perbarui pustaka
@neo4j/graphqlke versi 7.5.6 atau lebih baru. Bagi yang masih bertahan di jalur 5.x, perbaikan tersedia pada versi 5.12.14 atau lebih baru. - Bila menggunakan versi 6.x, segera migrasi ke 7.5.6+ atau 5.12.14+. Jalur 6.x sudah End-of-Life dan tidak akan pernah menerima tambalan untuk celah ini.
- Periksa dependensi secara menyeluruh, termasuk yang bersifat transitif: jalankan
npm ls @neo4j/graphqlpada seluruh proyek untuk memastikan tidak ada versi rentan yang ikut terbawa pustaka lain. - Selama masa transisi, nonaktifkan fitur subscription apabila tidak benar-benar digunakan oleh aplikasi.
- Lakukan verifikasi JWT di lapisan gerbang (gateway) sebelum permintaan mencapai lapisan GraphQL, sebagai pertahanan berlapis.
- Telusuri log koneksi WebSocket untuk pembukaan subscription dengan klaim role istimewa yang tidak lazim, terutama yang berasal dari alamat IP di luar jaringan dinas.
Referensi
- BSSN/Id-SIRTII – Security Advisory CVE-2026-5423 pada Neo4j GraphQL (edaran sumber)
- NVD – CVE-2026-5423
- GitHub Security Advisory – GHSA-fcpg-3fw5-vc65
- Neo4j Security – CVE-2026-5423
- MITRE CWE-302 – Authentication Bypass by Assumed-Immutable Data
Perangkat Daerah yang menemukan indikasi kompromi pada sistemnya dapat segera menghubungi KUTIM-CSIRT melalui kanal pelaporan resmi di halaman Lapor Insiden. Penanganan dini menekan dampak secara signifikan.