Pada Januari 2020 lalu, seorang security researcher bernama Tobias Nießen menemukan beberapa kerentanan buffer overflow pada functions built-in dari Nodejs, sebuah platform open-source untuk framework JavaScript runtime yang dapat menjalankan code JavaScript di luar web browser. Adapun framework NodeJS telah digunakan oleh beberapa perusahaan ternama seperti WhatsApp, Microsoft Teams, dan Slack.
Kerentanan buffer overflow yang timbul disebabkan oleh integer overflow, di mana hasil kalkulasi dari komputer mengeluarkan angka yang lebih kecil dibandingkan angka memori yang bisa ditampung oleh komputer itu sendiri. Tobias menemukan ada tiga function Nodejs yang rentan, yaitu napi_get_value_string_latin1, napi_get_value_string_utf8, napi_get_value_string_utf16. Setelah melaporkan kerentanan yang timbul ke Internet Bug Bounty, kerentanan tersebut mendapatkan ID CVE-2020-8174
Di artikel ini, kami akan menunjukan bagaimana kerentanan di atas dapat dieksploitasi oleh para hacker. Mereka harus “memanggil” ketiga functions yang telah disebutkan di atas dengan parameter buf berstatus non-NULL dan bufsize dengan isi 0. Hal ini akan membuat semua nilai string tercatat dalam memori dengan parameter buf, seperti yang terlihat di bawah ini.

Dengan menjalankan script di atas, pesan eror berikut akan muncul

Dapat dilihat di atas, baris code buf diisi dengan non-NULL, sementara buffsize diisi dengan angka 0. Sebagai contoh, malloc (0) tidak menjamin akan menghasilkan nilai NULL. Sebuah npm package bisa saja berjalan dengan benar di satu mesin yang memiliki asumsi malloc(0) = NULL, tetapi bisa juga menyebabkan permasalahan keamanan di host yang berbeda karena memiliki asumsi yang berbeda pula.
Selain pesan eror korupsi data seperti gambar di atas, menjalankan script bisa juga menyebabkan program untuk crash. Para hacker bisa mengontrol string dan code yang akan diinput ke dalam proses heap serta memodifikasi call stack. Hal ini akan menimbulkan beberapa masalah, seperti memberi kesempatan bagi para hacker untuk menjalankan remote code execution (RCE).
Melalui langkah-langkah yang telah dijabarkan, kami sadar bahwa seluruh npm packages yang menggunakan framework Nodejs memiliki kerentanan keamanan yang cukup serius. Maka dari itu, Nodejs telah merilis versi dan security patch terbaru pada Juni lalu, yaitu versi 14.7.0. Lakukanlah update sekarang agar infrastruktur IT Anda tetap aman.
Para hacker akan selalu mencari celah dan kerentanan yang timbul di infrastruktur IT Anda. Oleh sebab itu, Defenxor selalu berkomitmen untuk mengedukasi Anda tentang kerentanan IT terbaru melalui artikel seperti yang di atas agar Anda dapat lebih aware terhadap kerentanan-kerentanan terbaru, khususnya Nodejs.