#CriticalVulnerability 🚨 Chú ý các nhà phát triển ứng dụng
$BTC : lỗ hổng nghiêm trọng trong “bitcoinjs-lib”
Hai lỗi nghiêm trọng đã được khắc phục trong thư viện `bitcoinjs-lib` phổ biến. Những lỗi này có thể khiến ứng dụng báo cáo thấp hơn rất nhiều so với mức phí thợ đào thực tế đối với các giao dịch PSBT (Giao dịch Bitcoin được ký một phần) hoàn toàn hợp lệ và đã ký.
Vấn đề là gì?
Trong Bitcoin, phí là phần chênh lệch giữa tổng giá trị đầu vào và tổng giá trị đầu ra. Hai lỗi logic riêng biệt khiến thư viện báo mức phí tối thiểu (ví dụ: 200 hoặc 1.000 satoshi), trong khi số tiền thực tế bị trừ khỏi ví và trả cho thợ đào có thể lên tới gần 1 BTC (900 triệu satoshi).
1. Giá trị đầu vào mâu thuẫn: Quá trình ký sử dụng toàn bộ dữ liệu từ giao dịch trước đó, trong khi mô-đun tính phí lại dựa vào một bản ghi mâu thuẫn có giá trị thấp hơn. Chữ ký vẫn hợp lệ, nhưng phí được tính không chính xác.
2. Thiếu bản ghi giá trị đầu vào: Với các đầu vào đã hoàn tất nhưng không chỉ định số tiền, thư viện coi giá trị là “0”. Điều này cho phép che giấu một khoản phí thực tế rất lớn trong các giao dịch được nhập vào.
Những phiên bản nào bị ảnh hưởng? Dòng v5: đã khắc phục trong
➡️ 5.2.2 (dễ bị tấn công: 5.1.0 – 5.2.1)
➡️ Dòng v6: đã khắc phục trong 6.1.9 (dễ bị tấn công: 6.0.0 – 6.1.8)
➡️ Dòng v7: đã khắc phục trong 7.0.4 (dễ bị tấn công: 7.0.0-rc.0 – 7.0.3)
Bạn nên làm gì?
➡️ Cập nhật lên các phiên bản đã vá (5.2.2, 6.1.9, 7.0.4).
➡️ Nếu hiện chưa thể cập nhật, hãy triển khai quy trình xác minh độc lập các giá trị đầu vào và từ chối mọi mục không nhất quán trước khi ký hoặc tính phí.
Tính bảo mật của ứng dụng phụ thuộc vào việc bạn mù quáng tin tưởng các thư viện hay kiểm tra từng satoshi. 🛡️