Security

Celah Kritis jsPDF Memungkinkan Pencurian Data Sensitif Lewat File PDF

Sebuah kerentanan kritis ditemukan pada pustaka JavaScript jsPDF, yang dapat dimanfaatkan penyerang untuk mencuri data sensitif dari sistem lokal melalui dokumen PDF yang dihasilkan. Celah ini berpotensi berdampak luas mengingat jsPDF merupakan salah satu library paling populer untuk pembuatan PDF di aplikasi berbasis JavaScript.

Kerentanan tersebut diklasifikasikan sebagai local file inclusion dan path traversal, yang memungkinkan penyerang menyisipkan jalur file yang tidak tervalidasi ke dalam mekanisme pemuatan file jsPDF. Celah ini tercatat sebagai CVE-2025-68428 dan memperoleh skor keparahan tinggi sebesar 9,2. Versi jsPDF yang terdampak mencakup seluruh rilis sebelum versi 4.0.

jsPDF sendiri memiliki adopsi yang sangat luas, dengan lebih dari 3,5 juta unduhan per minggu melalui npm. Pada build Node.js, jsPDF menyediakan fungsi loadFile yang digunakan untuk membaca file dari sistem lokal. Masalah muncul ketika jalur file yang dikendalikan oleh pengguna diteruskan langsung ke fungsi tersebut, sehingga konten file lokal dapat dimasukkan ke dalam output PDF tanpa pembatasan yang memadai.

Selain loadFile, metode lain seperti addImage, html, dan addFont juga terdampak karena seluruhnya dapat memanggil fungsi pemuatan file yang sama. Berdasarkan buletin keamanan jsPDF, kerentanan ini hanya memengaruhi build Node.js, khususnya berkas dist/jspdf.node.js dan dist/jspdf.node.min.js, sementara penggunaan di sisi browser tidak termasuk dalam cakupan dampak.

Dalam laporan teknis terpisah, perusahaan keamanan aplikasi Endor Labs menjelaskan bahwa risiko eksploitasi relatif rendah jika jalur file ditentukan secara statis, berasal dari konfigurasi tepercaya, atau dibatasi melalui allowlist yang ketat. Namun, pada aplikasi yang menerima input jalur file langsung dari pengguna tanpa validasi, risiko kebocoran data menjadi signifikan.

Kerentanan CVE-2025-68428 telah diperbaiki pada jsPDF versi 4.0.0 dengan membatasi akses sistem berkas secara default dan mengandalkan mode izin milik Node.js. Meski demikian, peneliti Endor Labs mengingatkan bahwa mode izin tersebut masih bersifat eksperimental pada Node 20. Oleh karena itu, penggunaan Node.js versi 22.13.0, 23.5.0, atau 24.0.0 ke atas sangat dianjurkan untuk perlindungan yang lebih matang.

Pengembang juga menyarankan penggunaan flag –permission sebagai solusi sementara, tetapi pendekatan ini memiliki keterbatasan karena memengaruhi seluruh proses Node.js, bukan hanya jsPDF. Selain itu, konfigurasi izin sistem berkas yang terlalu longgar, seperti penggunaan parameter –allow-fs-read secara luas, justru dapat meniadakan efektivitas perbaikan yang telah diterapkan.

Bagi pengguna yang masih menjalankan versi Node.js lama, tim jsPDF merekomendasikan sanitasi ketat terhadap setiap jalur file yang berasal dari input pengguna sebelum diteruskan ke library. Mengingat luasnya penggunaan jsPDF di berbagai proyek, kerentanan ini dinilai sebagai kandidat kuat untuk dieksploitasi secara aktif jika tidak segera ditangani.

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button