Lỗi RNG của Coldcard: 1.432 BTC bị quét sạch, không một lần review, năm năm im lặng
Lỗi RNG phần cứng trong ví Coldcard cho phép kẻ tấn công quét sạch 1.432 BTC. Lỗi này được phát hành mà không có bất kỳ đánh giá mã nào và mất năm năm mới lộ diện.

Coldcard, một ví Bitcoin phần cứng nổi tiếng với triết lý bảo mật hàng đầu, đã bị bắt quả tang với quần tụt. Một lỗi trong bộ tạo số ngẫu nhiên (RNG) cho phép kẻ tấn công suy ra khóa riêng và quét sạch tiền từ ví. Các con số thật rõ ràng: 7.346 UTXO, 2.896 lần quét, và 1.432,48 BTC — hơn 100 triệu đô la theo giá hiện tại — đã được chuyển đến các địa chỉ do kẻ tấn công kiểm soát.
Nguyên nhân gốc rễ là một lỗi kinh điển: một guard #ifndef HAS_RNG lẽ ra phải ép buộc sự hiện diện của RNG phần cứng. Thay vào đó, #define HAS_RNG 0 thỏa mãn điều kiện kiểm tra, nghĩa là thiết bị có thể chạy mà không có RNG nào cả. Mức bảo mật dự kiến là 128 bit entropy; việc triển khai chỉ đạt tối đa 73,3 bit, và tệ nhất là 0. Đó không phải là một lỗi làm tròn — đó là một thất bại thảm khốc.
Làm sao điều này được phát hành? Bốn commit, hai lần push trực tiếp, và không một lần đánh giá mã. Không ai nhìn vào mã trước khi nó được đưa ra ngoài. Dòng thời gian cho thấy commit đầu tiên vào tháng 5/2018, với các báo cáo mất mát bắt đầu từ tháng 5/2021, và các bài đăng công khai vào tháng 7/2021. Tuy nhiên, các lần quét trên chuỗi đầu tiên chỉ xuất hiện vào tháng 7/2026 — năm năm sau các báo cáo mất mát đầu tiên. Đó là khoảng cách năm năm giữa việc biết có gì đó sai và hành động để khắc phục.
Trang web, coldcard.rip, là một phân tích pháp y của một người rõ ràng đã làm bài tập về nhà của họ. Nó theo dõi 5.477 địa chỉ bị quét và 613 điểm đến, với 1.432,46 BTC vẫn nằm tại các điểm đến được theo dõi. Phần bằng chứng liệt kê 25 nguồn công khai qua 10 đợt, và dòng thời gian là một bản ghi chép đáng lên án về sự bất hành.
Đối với các kỹ sư, đây là một trường hợp kinh điển về lý do tại sao đánh giá mã quan trọng, tại sao entropy không phải là một ô để đánh dấu, và tại sao bạn không bao giờ nên tin tưởng một ví phần cứng không có RNG phần cứng — và ngay cả khi có, hãy xác minh rằng nó thực sự được sử dụng.
128 bit dự kiến · 73,3 tối đa · 0 tệ nhất — đó không phải là lỗi làm tròn, đó là một thất bại thảm khốc.
| Chỉ số | Dự kiến | Thực tế |
|---|---|---|
| Entropy (bit) | 128 | 73,3 tối đa, 0 tệ nhất |
| Đánh giá mã | 1+ | 0 |
| Commit | — | 4 |
| Push trực tiếp | — | 2 |
| Thời gian từ commit đầu tiên đến lần quét đầu tiên | — | 5 năm |
Thảo luận
0 bình luận
Hãy là người đầu tiên thảo luận.