#CriticalVulnerability 🚨 Perhatian para pengembang aplikasi
$BTC : kerentanan kritis di “bitcoinjs-lib”
Dua bug serius telah diperbaiki di pustaka populer `bitcoinjs-lib`. Celah ini dapat menyebabkan aplikasi melaporkan biaya penambang jauh lebih rendah dari yang sebenarnya untuk transaksi PSBT (Partially Signed Bitcoin Transaction) yang sepenuhnya valid dan telah ditandatangani.
Apa masalahnya?
Di Bitcoin, biaya adalah selisih antara jumlah seluruh input dan jumlah seluruh output. Dua kesalahan logika yang berbeda menyebabkan pustaka melaporkan biaya minimal (misalnya, 200 atau 1.000 satoshi), padahal jumlah sebenarnya yang dipotong dari dompet dan dibayarkan kepada penambang bisa mencapai hampir 1 BTC (900 juta satoshi).
1. Nilai Input yang Bertentangan: Proses penandatanganan menggunakan data lengkap dari transaksi sebelumnya, sedangkan modul penghitungan biaya mengandalkan catatan yang bertentangan dengan nilai lebih rendah. Meskipun tanda tangan tetap valid, penghitungan biayanya tidak benar.
2. Catatan Nilai Input Tidak Ada: Untuk input yang telah difinalisasi tetapi jumlahnya tidak dicantumkan, pustaka menganggap nilainya "0". Hal ini memungkinkan biaya aktual yang sangat besar tersembunyi di dalam transaksi yang diimpor.
Versi mana yang terdampak? Seri v5: diperbaiki di
➡️ 5.2.2 (rentan: 5.1.0 – 5.2.1)
➡️ Seri v6: diperbaiki di 6.1.9 (rentan: 6.0.0 – 6.1.8)
➡️ Seri v7: diperbaiki di 7.0.4 (rentan: 7.0.0-rc.0 – 7.0.3)
Apa yang harus Anda lakukan?
➡️ Perbarui ke versi yang telah ditambal (5.2.2, 6.1.9, 7.0.4).
➡️ Jika saat ini belum memungkinkan untuk memperbarui, terapkan verifikasi independen atas nilai input dan tolak setiap entri yang tidak konsisten sebelum menandatangani transaksi atau menghitung biaya.
Keamanan aplikasi Anda bergantung pada apakah Anda memercayai pustaka begitu saja atau memverifikasi setiap satoshi. 🛡️