Trong 25 phút, 500 ví Bitcoin đã bị rút sạch. Gần 600 BTC – tương đương khoảng 38 triệu USD – biến mất khỏi những chiếc Coldcard, dòng ví lạnh được cộng đồng tự quản lý xem như "tiêu chuẩn vàng" về bảo mật. Không hề có một exploit phức tạp, không có một cuộc tấn công hạ tầng. Nguồn cơn chỉ là một lỗi kiểm tra biên dịch tưởng chừng vô hại: một dòng #ifdef thay vì #if trong lớp tương thích MicroPython. Khi tôi còn kiểm toán hợp đồng ICO năm 2017, tôi đã học được rằng những lỗi có sức phá hủy lớn nhất thường nằm ở chi tiết mà tất cả mọi người đều lướt qua. Lỗ hổng này đã tồn tại âm thầm từ 2021 đến 2026, xuyên suốt bốn thế hệ sản phẩm, trước khi ai đó dừng lại đủ lâu để đặt câu hỏi: điều gì sẽ xảy ra nếu con chip bảo mật từ chối tạo ra số ngẫu nhiên?
Coldcard là sản phẩm của Coinkite, dành cho một phân khúc người dùng rất đặc thù: những người Bitcoin hiểu biết kỹ thuật, coi việc tự nắm giữ private key là bất khả xâm phạm. Không giống các đối thủ chọn chip bảo mật chuyên dụng và vòng chứng nhận đóng, Coldcard chọn con đường công khai mã nguồn. Mỗi dòng code đều có thể được kiểm toán bởi bất kỳ ai trên GitHub. Đó là lời hứa về sự minh bạch tối đa.

Câu chuyện bắt đầu từ một nhánh code ít được chú ý: phần khởi tạo bộ tạo số ngẫu nhiên (RNG) trong firmware. Về thiết kế, Coldcard dùng chip STM32 của STMicroelectronics vốn có một khối tạo số ngẫu nhiên vật lý (TRNG) dựa trên nhiễu điện tử. Firmware được kỳ vọng sẽ kiểm tra TRNG hoạt động hay không trước khi dùng nó để tạo seed. Theo phân tích của Block và Bitcoin Core developer Gregory Sanders, một lỗi trong mã kiểm tra ở tầng tương thích MicroPython đã vô hiệu hóa toàn bộ cơ chế này. Thay vì kiểm tra giá trị của cờ cấu hình, mã lại kiểm tra xem cờ có được định nghĩa hay không. Khi cờ bị tắt, quá trình kiểm tra vẫn lặng lẽ vượt qua, và firmware chuyển sang Yasmarang – một bộ sinh giả ngẫu nhiên không an toàn mật mã, với không gian seed có thể bị quét vét cạn.
Điều đáng nói không phải là sự tồn tại của lỗi trong mã nguồn, mà là cách lỗi đó phơi bày cả một chuỗi giả định sai về an toàn phần cứng. Hãy nhìn vào chuỗi nhân quả đầy đủ: Coldcard lấy ngẫu nhiên từ TRNG, nhưng lệnh kiểm tra dùng #ifdef – hỏi "macro có tồn tại không" – thay vì #if – hỏi "macro có giá trị đúng không". Kết quả là dù MICROPY_HW_ENABLE_RNG bị đặt bằng 0 – nghĩa là TRNG bị tắt – phần mềm vẫn xem mọi thứ ổn thỏa và âm thầm rơi vào nhánh dự phòng. Yasmarang khởi tạo từ một hạt giống yếu như số lần nhấn nút trên thiết bị. Tôi từng chứng kiến một lỗi so sánh sai trong hợp đồng vesting token năm 2017 khiến quỹ bị khóa vĩnh viễn, nhưng hậu quả ở đây nghiêm trọng hơn nhiều: private key không thực sự ngẫu nhiên, và kẻ tấn công có thể tái tạo hàng loạt địa chỉ chỉ trong 25 phút.
Sự bất đồng giữa các bên trong giai đoạn đầu sự cố là một tín hiệu đáng lo ngại. Coinkite xác nhận vấn đề chỉ trong vài giờ, đáng khen ngợi. Nhưng họ khẳng định chỉ dòng sản phẩm Mk3 bị ảnh hưởng, trong khi Block – qua nhà nghiên cứu Max Guise – phát hiện vấn đề nằm ở cả Mk2, Mk3, Mk4 lẫn Mk5. Sanders ban đầu xác nhận Mk2 và Mk3, sau đó thừa nhận Mk4 cũng có nguy cơ. Trong các dự án tôi từng kiểm toán, khi nhà cung cấp đưa ra phạm vi ảnh hưởng sai ngay từ đầu, tôi yêu cầu xem lại toàn bộ chuỗi CI/CD – không phải vì thiếu niềm tin, mà vì phán đoán ban đầu sai lệch phản ánh sự thiếu hiểu biết sâu về chính sản phẩm của họ. Điều đó đã được xác minh ở đây.
Câu chuyện về AI cũng cần được xem xét kỹ. Coinkite suy đoán kẻ tấn công "có thể đã dùng AI", nhưng thừa nhận rằng ngay cả những mô hình tốt nhất vài tuần trước cũng không phát hiện ra lỗi. Ngay sau đó, nhà nghiên cứu DeLorme tuyên bố đã dùng Claude Opus 5 để tìm ra lỗ hổng trên một kho mã nguồn nhân bản. Người ta thường nghĩ bằng chứng không kiến thức là thứ gì đó thần bí, nhưng ZK không phải ma thuật, chỉ là toán học; và ở đây, toán học về entropy đã bị phá sản bởi một lỗi không liên quan đến mật mã. Điều thực sự quan trọng là tính bất đối xứng: AI hạ thấp rào cản phát hiện lỗ hổng cho cả hai phía, nhưng nó cần một câu hỏi đúng. Nếu không có sự tò mò về nguồn ngẫu nhiên của ví, liệu Claude có dừng lại ở dòng #ifdef kia không? Đây là câu hỏi mà ngành bảo mật phải giải.

Về mặt thị trường, 594 BTC bị đánh cắp, trong đó 562 BTC vẫn nằm yên tại địa chỉ kẻ tấn công, chỉ tương đương 0,0003% tổng lượng Bitcoin lưu hành. Áp lực bán tiềm năng không đáng kể so với khối lượng giao dịch hàng ngày. Vấn đề không nằm ở Bitcoin, mà nằm ở niềm tin. Coldcard xây dựng toàn bộ thương hiệu trên khái niệm "an toàn nhất có thể". Khi nền tảng đó sụp đổ, khách hàng sẽ chạy sang Ledger, Trezor hoặc bất kỳ thiết bị nào khiến họ an tâm hơn. Rủi ro lớn hơn khi những hãng khác cũng dùng MicroPython trong firmware – liệu nhánh dự phòng Yasmarang của họ có được kiểm tra kỹ lưỡng? Đã có những câu hỏi về trách nhiệm pháp lý: nếu Coldcard quảng cáo "bảo mật tối đa" nhưng thực tế có lỗi cơ bản trong nhiều năm, liệu người dùng có thể khởi kiện vì trách nhiệm sản phẩm? Khả năng cao là có. Mỗi lỗ hổng là một bài học, nhưng bài học này có thể đắt hơn nhiều nếu ngành công nghiệp không tự rà soát chéo.

Góc nhìn phản trực giác nằm ở chỗ: mã nguồn mở không tự động giúp bạn an toàn hơn. Nó có thể tạo ra ảo giác minh bạch. Lỗ hổng này đã hiện diện nhiều năm trong mã nguồn công khai, hàng trăm mắt người nhìn vào nhưng không ai nhận ra. Cộng đồng kiểm toán tự nguyện thất bại trong việc bắt một lỗi có độ phức tạp rất thấp. Mã nguồn mở trao cho tấn công một bản đồ chính xác, trong khi phòng thủ vẫn dựa vào thiện chí của vài người đọc code. DeFi không an toàn nếu thiếu ZK-proof, nhưng ngay cả khi có ZK-proof, nếu lớp nguồn ngẫu nhiên bên dưới bị phá vỡ, mọi đảm bảo toán học đều vô nghĩa. Cũng cần thận trọng với việc quy kết AI: nếu một kẻ tấn công con người tự tìm ra lỗi, câu chuyện vẫn y hệt, nhưng hấp dẫn hơn khi thêm chữ AI vào tiêu đề. Hãy chờ bằng chứng xác minh.
Câu hỏi lớn nhất là: an toàn có phải là một trạng thái tĩnh? Rõ ràng không. Đó là một quá trình kiểm chứng liên tục, bắt đầu từ những giả định hiển nhiên nhất: chip của bạn đang tạo số ngẫu nhiên từ vật lý hay từ một bộ đếm giờ? Trong lúc các công ty xây dựng cầu nối tài chính truyền thống và on-chain, sự kiện này nhắc chúng ta rằng lớp hạ tầng đáng tin cậy nhất có thể gãy ở một dòng macro. Mỗi lỗ hổng là một bài học, nhưng liệu người dùng có còn tin "mã nguồn mở" đồng nghĩa với "an toàn", hay họ sẽ chuyển sang những hệ thống kín có chứng nhận đắt tiền? Sự lựa chọn đó sẽ định hình lại toàn bộ cuộc chơi tự quản lý tài sản số.