Kerentanan Kritis di Pustaka Protobuf.js Mungkinkan Eksekusi Kode JavaScript

Kode eksploitasi Proof-of-Concept (PoC) baru saja dipublikasikan untuk kerentanan Eksekusi Kode Jarak Jauh (Remote Code Execution/RCE) tingkat kritis pada protobuf.js, sebuah implementasi JavaScript dari Protocol Buffers milik Google yang sangat populer.

Pustaka ini merupakan salah satu alat yang paling banyak digunakan dalam registri Node Package Manager (npm), dengan rata-rata hampir 50 juta unduhan per minggu. protobuf.js secara ekstensif digunakan untuk komunikasi antarlayanan (inter-service communication), aplikasi waktu nyata (real-time), serta penyimpanan data terstruktur yang efisien di basis data dan lingkungan cloud.

Akar Masalah: Pembuatan Kode Dinamis yang Tidak Aman

Dalam laporannya pada hari Jumat, perusahaan keamanan aplikasi Endor Labs menyatakan bahwa kerentanan RCE di protobuf.js disebabkan oleh pembuatan kode dinamis yang tidak aman. Masalah keamanan ini belum menerima nomor CVE resmi dan saat ini sedang dilacak sebagai GHSA-xq3m-2v4x-88gg (pengidentifikasi yang ditetapkan oleh GitHub).

Endor Labs menjelaskan bahwa pustaka ini membangun fungsi JavaScript dari skema protobuf dengan menggabungkan string dan mengeksekusinya melalui konstruktor Function(). Sayangnya, pustaka ini gagal memvalidasi pengidentifikasi yang diturunkan dari skema, seperti nama pesan.

Celah ini memungkinkan penyerang untuk memasok skema berbahaya yang menyuntikkan kode arbitrer ke dalam fungsi yang dihasilkan. Kode mematikan ini kemudian akan dieksekusi saat aplikasi memproses pesan menggunakan skema yang telah dimanipulasi tersebut.

Dampak Serangan yang Signifikan

Eksploitasi celah ini membuka jalur langsung menuju RCE pada server atau aplikasi yang memuat skema yang dipengaruhi penyerang. Akses ini berpotensi memberikan penyerang kendali penuh, termasuk:

Selain itu, serangan ini juga dapat memengaruhi mesin pengembang lokal jika mereka memuat dan memecahkan kode (decode) skema yang tidak tepercaya di komputer mereka.

Status Eksploitasi, Pembaruan, dan Mitigasi

Kerentanan ini berdampak pada protobuf.js versi 8.0.0 / 7.5.4 dan yang lebih lama. Endor Labs merekomendasikan pengguna untuk segera memutakhirkan ke versi 8.0.1 dan 7.5.5, yang telah menambal masalah tersebut.

Tambalan (patch) ini bekerja dengan membersihkan nama tipe data dengan membuang karakter non-alfanumerik, sehingga mencegah penyerang menutup fungsi sintetis tersebut.

Meskipun Endor Labs memperingatkan bahwa “eksploitasi [celah ini] sangat mudah dilakukan” dan telah menyertakan PoC minimal dalam penasihat keamanannya, hingga saat ini belum ada serangan aktif yang teramati di alam liar (in the wild).

Kerentanan ini pertama kali dilaporkan oleh peneliti Endor Labs dan pemburu bug bounty, Cristian Staicu, pada 2 Maret. Pengelola protobuf.js telah merilis tambalan di GitHub pada 11 Maret, dan perbaikan pada paket npm tersedia pada 4 April (untuk cabang 8.x) dan 15 April (untuk cabang 7.x).

Selain melakukan pembaruan ke versi yang telah ditambal, Endor Labs merekomendasikan administrator sistem untuk:

Exit mobile version