Bốn dòng mã.
Hơn 1.596 BTC đã biến mất.
Vào tháng 3 năm 2021, một bản dựng phần mềm của COLDCARD ngừng yêu cầu chip phần cứng cấp số ngẫu nhiên và thay vào đó để phần mềm thông thường tự tính toán. Không ai phát hiện ra điều này trong suốt năm năm. Đến tháng 7 năm 2026, những kẻ tấn công đã thực hiện các phép tính và bắt đầu rút sạch ví.
Một cơ chế kiểm tra an toàn đã có sẵn nhưng không hoạt động
Mọi lớp bảo vệ đều dựa trên một con số không ai đoán được
Một chiếc ví phần cứng thực hiện nhiều nhiệm vụ. Nó hiển thị những gì bạn thực sự đang ký thay vì yêu cầu bạn tin tưởng màn hình của một máy tính bị nhiễm độc, đồng thời giữ khóa của bạn bên trong một con chip được thiết kế để chống mở trái phép. Mọi biện pháp phòng thủ đó đều dựa trên giả định rằng con số tạo nên khóa của bạn không thể bị đoán ra. Nếu có thể đoán được, kẻ tấn công sẽ không bao giờ cần phải vượt qua bất kỳ lớp bảo vệ nào. Kho số để tạo ra cụm 24 từ chứa xấp xỉ một con số cho mỗi nghìn nguyên tử trong vũ trụ quan sát được. Một kho số với kích thước như vậy là không thể dò quét. Đó là toàn bộ mô hình bảo mật.
12 từ mang 128 bit entropy, 24 từ mang 256 bit, cộng với một mã kiểm tra (checksum) từ hàm SHA-256 của entropy đó. BIP-39 mở rộng kết quả thành khóa chính (master key) của BIP-32.
12 từ mang 128 bit entropy, 24 từ mang 256 bit, cộng với một mã kiểm tra (checksum) từ hàm SHA-256 của entropy đó. BIP-39 mở rộng kết quả thành khóa chính (master key) của BIP-32.
COLDCARD đã ngừng rút số từ không gian mẫu đó
Một thay đổi trong firmware vào năm 2021 đã âm thầm dừng việc ví yêu cầu chip tạo số ngẫu nhiên chuyên dụng của nó cung cấp con số đó, thay vào đó lại dùng phần mềm thông thường để tự tính toán một số. Nhìn nhận song song, đây là toàn bộ sự cố:
Đó không phải là mức độ bảo mật bị giảm đi hai phần ba. Mỗi bit làm tăng gấp đôi khối lượng công việc, vì vậy việc thiếu đi 88 bit sẽ thu nhỏ công việc lại theo hệ số 2⁸⁸. Một nghìn tỷ là một con số lớn đối với con người nhưng lại rất nhỏ đối với những ai thuê máy tính hiệu năng cao để xử lý nó.
Quá trình tạo hạt giống đã chuyển từ ckcc.rng_bytes() sang ngu.random.bytes(). Coinkite ước tính còn khoảng 40 bit không gian tìm kiếm trên Mk3 và khoảng 72 bit trên Mk4/Mk5/Q, so với mục tiêu 128 bit. Phân tích độc lập bởi Block cũng đưa ra kết quả tương đương (dưới 2⁴⁰·⁷ và dưới 2⁷³·³) đồng thời tìm thấy các điều kiện thu hẹp hơn nơi không gian tìm kiếm còn ít hơn nhiều.2
Quá trình tạo hạt giống đã chuyển từ ckcc.rng_bytes() sang ngu.random.bytes(). Coinkite ước tính còn khoảng 40 bit không gian tìm kiếm trên Mk3 và khoảng 72 bit trên Mk4/Mk5/Q, so với mục tiêu 128 bit. Phân tích độc lập bởi Block cũng đưa ra kết quả tương đương (dưới 2⁴⁰·⁷ và dưới 2⁷³·³) đồng thời tìm thấy các điều kiện thu hẹp hơn nơi không gian tìm kiếm còn ít hơn nhiều.2
Bởi vì phần mềm không thể mang tính ngẫu nhiên
Hãy suy nghĩ về những yếu tố làm cho việc tung đồng xu trở nên khó đoán. Lực ném, trọng lực, luồng gió từ điều hòa, những rung động nhỏ dưới mặt đất. Hàng tá ảnh hưởng bạn có thể gọi tên và hàng tá ảnh hưởng khác thì không. Không ai có thể tính toán quỹ đạo, vì vậy không ai có thể đoán trước kết quả. Phần mềm hoạt động theo cách khác. Nó chạy một công thức cố định trên một vài giá trị khởi đầu và tạo ra một câu trả lời cố định. Ở đây, các giá trị đó là số serial của chip và thời gian thiết bị được bật nguồn. Kẻ tấn công nào nắm được công thức và nguyên liệu sẽ tính toán lại kết quả thay vì phải đoán mò.
Khi bộ tạo số ngẫu nhiên phần cứng bị vô hiệu hóa, rng_get() liên kết với thuật toán Yasmarang PRNG của MicroPython, được khởi tạo từ trạng thái không bí mật (UID, SysTick, RTC) và nó không thu thập thêm entropy mới nào sau đó, cho phép thực hiện việc dò tìm ngoại tuyến. Coinkite không xem các hạt giống được trộn từ 50 lần tung xúc xắc hợp lệ, riêng tư trở lên là gặp rủi ro từ vấn đề này: 50 × log₂6 ≈ 129 bit.3
Khi bộ tạo số ngẫu nhiên phần cứng bị vô hiệu hóa, rng_get() liên kết với thuật toán Yasmarang PRNG của MicroPython, được khởi tạo từ trạng thái không bí mật (UID, SysTick, RTC) và nó không thu thập thêm entropy mới nào sau đó, cho phép thực hiện việc dò tìm ngoại tuyến. Coinkite không xem các hạt giống được trộn từ 50 lần tung xúc xắc hợp lệ, riêng tư trở lên là gặp rủi ro từ vấn đề này: 50 × log₂6 ≈ 129 bit.3
Và cơ chế kiểm tra nhằm ngăn chặn điều đó đã đặt sai câu hỏi
Có một chốt kiểm tra trong bản dựng, được viết ra đặc biệt để ngăn phần mềm xuất xưởng mà không có bộ tạo số ngẫu nhiên phần cứng. Nó kiểm tra xem một cài đặt có tồn tại hay không, chứ không kiểm tra xem cài đặt đó có được bật lên hay không. Cài đặt đó có tồn tại và nó đang ở trạng thái tắt. Chốt kiểm tra im lặng, bản dựng không báo lỗi nào, và phần mềm được phát hành.
#ifndef chỉ kiểm tra xem một hằng số đã được định nghĩa hay chưa. Cấu hình bo mạch định nghĩa MICROPY_HW_ENABLE_RNG là 0, vừa được định nghĩa vừa bị tắt, do đó lỗi #error không bao giờ kích hoạt và trình liên kết đã gán rng_get() cho hàm dự phòng bằng phần mềm.3
#ifndef chỉ kiểm tra xem một hằng số đã được định nghĩa hay chưa. Cấu hình bo mạch định nghĩa MICROPY_HW_ENABLE_RNG là 0, vừa được định nghĩa vừa bị tắt, do đó lỗi #error không bao giờ kích hoạt và trình liên kết đã gán rng_get() cho hàm dự phòng bằng phần mềm.3
Đoạn mã lỗi, được trích dẫn trực tiếp từ mã nguồn.3
Mọi thứ trông có vẻ hoàn toàn bình thường suốt năm năm
Một cụm từ khôi phục yếu trông hoàn toàn giống với một cụm từ mạnh. Hai十四 từ thông thường, mã kiểm tra chính xác, một thiết bị hoạt động bình thường. Không có gì cảnh báo bạn trên màn hình và không có lỗi nào xuất hiện trong quá trình xây dựng phần mềm. Mã nguồn đã được công khai suốt thời gian đó. Tuy nhiên, việc đọc nó vẫn đòi hỏi ai đó phải mở tệp cụ thể đó ra.
Độ dài đầu ra, tính khác không và tính không lặp lại đều vượt qua trên một PRNG yếu, do đó các bài kiểm tra sơ bộ thông thường cũng không thể phát hiện ra nó.
Độ dài đầu ra, tính khác không và tính không lặp lại đều vượt qua trên một PRNG yếu, do đó các bài kiểm tra sơ bộ thông thường cũng không thể phát hiện ra nó.
Sau đó, ai đó đã thực hiện các phép tính số học
Họ chưa từng chạm vào một thiết bị nào. Họ tự tạo các cụm từ có khả năng xảy ra trên máy tính của riêng mình, tính toán xem mỗi cụm từ sẽ tạo ra địa chỉ Bitcoin nào, và đối chiếu các địa chỉ đó với chuỗi khối công khai. Mọi địa chỉ có số dư đều bị làm rỗng. Một chiếc ví nằm phủ bụi không cắm điện trong ngăn kéo từ năm 2022 bị lộ diện hoàn toàn giống hệt như một chiếc ví đang được sử dụng hàng ngày.
Các ứng cử viên được suy ra ngoại tuyến thông qua BIP-39/BIP-32; chỉ có bước tra cứu số dư cuối cùng là chạm đến mạng lưới, vì vậy không có tín hiệu nào xuất hiện ở phía nạn nhân trước đó.3
Các ứng cử viên được suy ra ngoại tuyến thông qua BIP-39/BIP-32; chỉ có bước tra cứu số dư cuối cùng là chạm đến mạng lưới, vì vậy không có tín hiệu nào xuất hiện ở phía nạn nhân trước đó.3
Trang này không nhằm mục đích ăn mừng chiến thắng.
Coinkite đã công bố lỗi, phát hành báo cáo kỹ thuật và tung ra bản vá. Các nhà nghiên cứu độc lập có thể tái tạo lại những gì đã xảy ra bởi vì COLDCARD là mã nguồn mở.
Một lưu ý về các ước tính: chúng mô tả mức độ đoán mò mà kẻ tấn công phải đối mặt theo các giả định hiện tại, chứ không phải một bộ đếm thời gian. Không ai có thể cho bạn biết chính xác sẽ mất bao lâu để bẻ khóa một chiếc ví cụ thể nào đó.2
Hãy đọc kỹ phần này trước khi làm bất cứ điều gì
Những việc bạn cần làm phụ thuộc vào thiết bị bạn đã sử dụng khi cụm từ khôi phục được tạo lần đầu, chứ không phải thiết bị bạn đang cầm trên tay hôm nay.
Hãy giả định rằng việc này vẫn đang tiếp diễn. Các cụm từ đã bị làm cho dễ đoán từ năm 2021 và phương pháp này giờ đây đã công khai, vì vậy bất kỳ ai cũng có thể chạy lệnh tìm kiếm tương tự. Không có bản vá nào đóng được lỗ hổng này từ bên ngoài, và kẻ tấn công không có lý do gì để dừng lại. Nếu bạn bị ảnh hưởng, giả định an toàn nhất là thời gian là thứ duy nhất đứng giữa bạn và chúng.
Mk2 và Mk3: chuyển tài sản của bạn ngay bây giờ
Phạm vi bị ảnh hưởng là firmware từ 4.0.1 đến 4.1.9. Phiên bản 4.2.0 khắc phục cách tạo cụm từ khôi phục mới, nhưng không bản cập nhật nào có thể quay ngược thời gian để bổ sung tính ngẫu nhiên cho một cụm từ đã tồn tại. Hãy tạo một ví mới trên thiết bị bạn tin tưởng và chuyển quỹ của bạn sang đó.1
Mk4 và Mk5: kiểm tra phiên bản phần mềm
Nếu cụm từ khôi phục được tạo trên phần mềm cũ hơn phiên bản 5.6.0 (hoặc 6.6.0X trên bản dựng Edge), hãy cập nhật, tạo một chiếc ví hoàn toàn mới trên phần mềm đã cập nhật, sau đó chuyển tài sản của bạn sang. Việc cập nhật không tự động sửa lỗi cho cụm từ khôi phục cũ.1
Q: giống như trên, mốc là 1.5.0Q
Cập nhật lên phiên bản 1.5.0Q trở lên, hoặc 6.6.0QX đối với bản dựng Edge, tạo ví mới, ghi lại và kiểm tra bản sao lưu, gửi một giao dịch thử nghiệm nhỏ, sau đó chuyển phần còn lại.1
Việc cập nhật chương trình cơ sở của COLDCARD có sửa được cụm từ khôi phục tôi đang có không?
Làm thế nào để biết cụm từ khôi phục COLDCARD của tôi được tạo bằng phiên bản chương trình cơ sở nào?
Làm thế nào để tôi kiểm tra xem địa chỉ của mình có vướng vào sự việc này không?
Việc tung xúc xắc hoặc sử dụng cụm mật khẩu có bảo vệ cụm từ khôi phục COLDCARD không?
Thông báo của Coinkite có bao gồm mọi thiết bị COLDCARD bị ảnh hưởng không?
Không có thiết bị OneKey nào bị ảnh hưởng
Không có một mẫu máy nào mà chúng tôi từng phát hành dính lỗi này. Phần mềm của chúng tôi không chứa bất kỳ phụ thuộc nào vào libngu, Coinkite, COLDCARD hay CKCC, do đó đường dẫn mã gây lỗi không hề tồn tại để mà chạm tới, và bạn có thể tự mình kiểm tra điều đó trong các kho lưu trữ mã nguồn của chúng tôi. Trên phần cứng hiện tại của chúng tôi, khóa được tạo ra từ bộ tạo số ngẫu nhiên thực sự bên trong một phần tử bảo mật đạt chứng nhận, không bao giờ lấy từ phần mềm trên bộ xử lý chính. Việc thay thế đó chính là nguyên nhân gây ra sự cố này.
Chúng tôi cũng không chỉ tin tưởng vào lời nói suông. Khi tin tức được công bố, Anzen Lab đã truy vết tính ngẫu nhiên của chúng tôi từ đầu đến cuối (nguồn gốc, các hàm gọi đến nó, và các cài đặt bản dựng quyết định phiên bản nào đến được thiết bị của bạn) đồng thời công bố chính xác các tệp tin mà họ đã kiểm tra.12
Đọc bản kiểm tra lại của Anzen LabLiệu điều này có thể xảy ra đối với OneKey không?
Sự cố này đòi hỏi ba yếu tố riêng biệt phải cùng xảy ra một lúc. Trên thiết bị OneKey, không có yếu tố nào trong số đó xảy ra, và bạn có thể tự mình kiểm tra cả ba điều đó.
Vậy tính ngẫu nhiên của OneKey được lấy từ đâu?
Được tạo bên trong một chip đạt chứng nhận EAL 6+
Khóa của bạn được tạo và lưu trữ bên trong một chip chuyên dụng, có khả năng chống giả mạo thay vì bộ xử lý đa năng chạy các tác vụ khác. EAL 6+ là cấp độ bảo đảm được sử dụng cho thẻ thanh toán và thẻ định danh.
Tính ngẫu nhiên tự giám sát
Con chip đó tạo ra tính ngẫu nhiên từ nhiễu vật lý thực tế và liên tục tự kiểm tra đầu ra của chính nó. Nếu tính ngẫu nhiên bắt đầu có biểu hiện bất thường, con chip sẽ nhận ra điều đó thay vì âm thầm tiếp tục chạy.
Chúng tôi đã tự kiểm tra lại hệ thống của mình
Sau tin tức về COLDCARD, Anzen Lab đã tự mình truy vết toàn bộ tính ngẫu nhiên của OneKey từ đầu đến cuối (nguồn gốc, các hàm thực sự gọi đến nó, và các cài đặt bản dựng quyết định phiên bản nào nằm trên thiết bị của bạn) rồi công bố chính xác các tệp tin mà họ đã xem xét.11


Bốn lớp kiểm tra cho mọi thiết bị OneKey, và không lớp nào tin tưởng ba lớp còn lại
Bất kỳ thành phần nào trong số này đều có thể bỏ sót điều gì đó. Vấn đề là cả bốn thành phần này sẽ phải cùng bỏ sót một vấn đề giống nhau. COLDCARD không có lớp dự phòng như vậy: chỉ một cài đặt bản dựng không được kiểm tra là đã đủ gây ra lỗi.
Mã nguồn mở mà bạn thực sự có thể tự xác minh
Phần mềm và ứng dụng của chúng tôi được công khai trên GitHub, và các bản dựng của chúng tôi có thể tái tạo được, nghĩa là bạn có thể tự biên dịch lại mã nguồn và xác nhận nó tạo ra chính xác phần mềm đang chạy trên thiết bị của bạn. Đó là bước giúp phát hiện ra vấn đề "đúng mã nguồn nhưng sai phiên bản".
OneKey trên GitHub
Các bên độc lập kiểm tra chúng tôi một cách minh bạch
Công ty bảo mật SlowMist tiến hành kiểm toán chúng tôi và công bố các báo cáo liên quan. Các đánh giá độc lập khác bao gồm OneKey Pro, Classic 1S và bộ công cụ phát triển phần mềm SDK của chúng tôi. Các quy trình bảo mật của chúng tôi đạt chứng nhận ISO/IEC 27001, và dòng sản phẩm Pro cùng Classic 1S đạt chứng nhận EN 18031 bởi một cơ quan được chỉ định bởi Liên minh Châu Âu. Mọi thứ đều được công bố công khai chứ không tự đánh giá.13
Đọc bản tóm tắt kiểm toán của SlowMistMột đội ngũ được trả lương để phá hoại sản phẩm của chính chúng ta
Anzen Lab là đội ngũ bảo mật nội bộ của chúng tôi bao gồm các kỹ sư bảo mật phần cứng, phần mềm và ứng dụng, làm việc cùng một nhóm các nhà nghiên cứu bên ngoài thay phiên nhau. Nhiệm vụ của họ là tìm cách phá vỡ các loại ví phần cứng, bao gồm cả ví của chúng tôi, trước khi bất kỳ sản phẩm nào được xuất xưởng. Khi câu chuyện này nổ ra, họ đã kiểm tra lại toàn bộ tính ngẫu nhiên của OneKey từ đầu đến cuối và công bố chính xác những tệp tin nào đã được kiểm tra.11
Đọc bản phân tích của Anzen LabChúng tôi trả tiền cho những người lạ để họ tìm ra lỗi của mình
Bất kỳ ai cũng có thể báo cáo lỗi cho chúng tôi một cách riêng tư, thông qua chương trình công khai trên BugRap hoặc trực tiếp qua địa chỉ [email protected], và nhận phần thưởng tương xứng. Mức độ nghiêm trọng sẽ quyết định tiền thưởng, được chấm điểm dựa trên thang đo CVSS. Mục đích cốt lõi là làm cho việc báo cáo với chúng tôi trở nên hấp dẫn hơn so với việc đem bán.15
OneKey trên BugRapKiểm tra chiếc ví trên tay bạn
entro.tools là một công cụ mã nguồn mở miễn phí, đọc các số ngẫu nhiên thực tế phát ra từ ví phần cứng và chạy các bài kiểm tra sức khỏe thống kê tiêu chuẩn trên chúng, ngay trong trình duyệt của bạn, qua cổng USB, mà không tải bất kỳ dữ liệu nào lên mạng và không cần cập nhật phần mềm.
Chạy các bài kiểm tra sức khỏe FIPS 140-2, NIST SP 800-22 và SP 800-90B cục bộ qua WebUSB (trình duyệt Chrome hoặc Edge trên máy tính). Thiết bị yêu cầu xuất entropy, một loạt số ngẫu nhiên vừa tạo, không bao giờ xuất cụm từ khôi phục của bạn.16
Kiểm định universal của Maurer cần ít nhất 387.840 bit; dưới mức đó báo cáo đánh dấu rõ là đã bỏ qua, thay vì lặng lẽ loại bỏ.16
Những loại ví nào có thể kiểm tra được
Việc người ngoài có thể đọc được các số ngẫu nhiên thô của thiết bị hay không. Đây chỉ là một khía cạnh rất hẹp. Hãy xem lưu ý bên dưới.
Những câu hỏi đặt ra cho tất cả các bên khác
OneKey có bị ảnh hưởng bởi lỗi entropy của COLDCARD không?
Lỗi entropy của COLDCARD ảnh hưởng đến những ví phần cứng nào?
Tôi có thể kiểm tra tính ngẫu nhiên của ví của mình không?
Làm thế nào để đánh giá xem một ví phần cứng có đáng tin cậy hay không?
Giải thích những phần phức tạp là việc của chúng tôi

How Hard Is Your Recovery Phrase to Guess? And How ColdCard Made It Easy

Is COLDCARD Still Safe? Affected Models, Fixed Firmware, and Legacy Seed Migration Guide

How OneKey Wallets Generate Your Recovery Phrase — and Where the Randomness Comes From
Bảo mật mà bạn có thể tự kiểm tra, chứ không phải bảo mật bắt bạn phải tin tưởng.
Mã nguồn mở và có thể tái tạo, được kiểm toán bởi các bên độc lập, bị tấn công thử nghiệm bởi chính phòng lab của chúng tôi, và có phần thưởng khi ai đó tìm ra lỗ hổng. Đây là những thiết bị mà cuộc tranh luận này đang hướng tới.
Tài liệu tham khảo
Các nguồn tài liệu dưới đây được thu thập vào ngày 6 tháng 8 năm 2026. Thông báo chính thức và báo cáo kỹ thuật của Coinkite đứng đầu danh sách, tiếp theo là phân tích cấp mã nguồn độc lập và dữ liệu hạch toán trên chuỗi khối. Các con số thiệt hại vẫn tiếp tục được điều chỉnh tăng lên: Galaxy Research xác nhận 1.596 BTC vào ngày 4 tháng 8 và ước tính tổn thất thực tế có thể gần mức 2.055 BTC hơn.
- 1. Coinkite · COLDCARD Mk3 Seed Generation Security Advisory
- 2. Coinkite · Technical Deep Dive into the Entropy Issue
- 3. Block Engineering · Predictable RNG Fallback and 32-Bit Reseed in COLDCARD Firmware
- 4. CoinDesk · Bitcoin cold-wallet attack spreads to 4,500 addresses as losses near $89 million
- 5. CoinDesk · Major bitcoin wallet flaw drains 594 BTC in 25-minute sweep
- 6. Crypto Briefing (Galaxy Research) · Galaxy Research identifies 1,367 BTC drained in attacks on Coldcard addresses
- 7. The Crypto Times (Galaxy Research) · Coldcard hack losses hit $100M with 1,596 BTC stolen in ongoing attack
- 8. The Crypto Times (Galaxy Research) · 15 attackers exploit ongoing Coldcard hack as losses approach $130M
- 9. The Hacker News · Coldcard Hardware Wallet Flaw Linked to $70 Million Bitcoin Theft in 41 Minutes
- 10. Bitcoin Magazine · Coinkite Releases Fixed Firmware After Coldcard Bug
- 11. OneKey Anzen Lab · The COLDCARD Entropy Failure: How a Silent RNG Fallback Cost Users $38 Million
- 12. OneKey · Statement: OneKey devices are not affected by this issue
- 13. OneKey · OneKey has passed a security audit by SlowMist — separate reports cover the Pro, the Classic 1S and the SDK
- 14. SlowMist · SlowMist Audit Report — OneKey Pro
- 15. BugRap · OneKey Bug Bounty Program
- 16. entro.tools · Entropy Check — verify your hardware wallet's randomness (device support matrix)





