Khởi Nguyên 2
BTC $77,927.1 +0.26%
ETH $2,447.71 +0.36%
SOL $104.44 +0.02%
BNB $691 -0.30%
XRP $1.39 +0.32%
DOGE $0.0848 -0.24%
ADA $0.2003 -1.18%
AVAX $7.28 +0.11%
DOT $0.8387 -1.49%
LINK $11.37 -0.73%
⛽ ETH Gas 28 Gwei
Sợ&Tham
68

Đừng vội tin ví lạnh: Lỗ hổng RNG trong Coldcard khiến 1.367 Bitcoin bốc hơi — ngay cả khi bạn chưa từng rút phích cắm

Lừa đảo | Dương Thịnh |

Một chiếc ví hardware được quảng cáo là "lạnh" là nơi bạn đặt trọn niềm tin. Nó không có Wi-Fi, không có Bluetooth, không có khả năng bị tấn công từ xa. Nhưng khi bộ tạo số ngẫu nhiên (RNG) bên trong nó âm thầm tắt ngấm trong hơn ba năm, còn firmware thì vẫn tươi cười bảo rằng "mọi thứ ổn cả", thì cái mác "lạnh" chỉ còn là một câu chuyện tiếp thị đẹp đẽ. Và khi câu chuyện tiếp thị sụp đổ, 1.367,05 Bitcoin đã được xác nhận nghi ngờ bị đánh cắp, trong khi hơn 77.402 Bitcoin phải gấp rút di dời trong chiến dịch phòng thủ.

Câu chuyện bắt đầu từ một macro có cái tên khô khan: MICROPY_HW_ENABLE_RNG. Chỉ cần một kỹ sư đặt nó thành 0 thay vì 1, toàn bộ giả định bảo mật của các dòng ví Coldcard Mk2, Mk3, Mk4, Mk5 và Q — từ tháng 3 năm 2021 cho đến tận khi lỗi được phát hiện — bị đẩy vào một vũng bùn. Nhiều người dùng nghĩ rằng họ đang được bảo vệ bởi một cụm từ ghi nhớ 24 từ với entropy 256 bit. Họ không hề biết rằng, thực tế, những từ đó có thể nằm gọn trong không gian tìm kiếm chỉ 40 bit trên các mẫu ví đời đầu.

Vậy chính xác chuyện gì đã xảy ra? Và vì sao một lỗi nghiêm trọng như thế lại nằm im trong suốt thời gian dài đến vậy?

Để hiểu được, bạn cần nhìn vào cách MicroPython được tích hợp trong firmware ví. Trong nhiều dòng sản phẩm blockchain, MicroPython được dùng như một lớp scripting linh hoạt để chạy các ứng dụng nhỏ ngay trên thiết bị. Nó tiện lợi, gọn nhẹ và được cộng đồng đánh giá cao. Nhưng MicroPython cũng có một điểm yếu: nó có bộ sinh số ngẫu nhiên riêng, dựa trên thuật toán Yasmarang, vốn là một trình tạo giả ngẫu nhiên xác định — không phải nguồn entropy thật sự.

Thiết bị phần cứng như Coldcard thường có một bộ phận RNG phần cứng thực thụ, và firmware phải bật nó lên trước khi sử dụng. Ở đây, macro MICROPY_HW_ENABLE_RNG — thứ báo cho MicroPython biết "hãy dùng RNG phần cứng" — bị đặt thành 0. Có thể vì một sự nhầm lẫn trong lúc biên dịch, có thể vì ai đó đã để lại một cấu hình mặc định sai. Dù lý do là gì, hậu quả là một điều kinh điển trong giới bảo mật: phần mềm kiểm tra "RNG có tồn tại không?" thay vì "RNG có hoạt động không?", và khi câu trả lời là "có tồn tại", nó mặc nhiên dùng luôn một luồng ngẫu nhiên rác.

Đây là một lỗi phổ biến trong lập trình nhúng. Nó không phức tạp, không hào nhoáng, không đòi hỏi kiến thức mật mã cao siêu. Nó giống như việc bạn kiểm tra cửa trước đã khóa chưa, nhưng lại quên mất rằng cửa sổ đang mở toang. Chỉ khác ở chỗ: cửa sổ ở đây là toàn bộ seed phrase của bạn, được sinh ra bằng thuật toán Yasmarang đã xác định rõ, và ai đó có thể bắt đầu từ hạt giống đầu tiên cho đến hạt giống cuối cùng trong một vũ trụ tìm kiếm nhỏ đến mức máy tính để bàn hiện đại chỉ mất vài ngày — vài giờ nếu có GPU.

Đừng nhầm lẫn giữa "40 bit" và "mật khẩu 40 ký tự". Với trình tạo số ngẫu nhiên thực thụ, 128 bit mới là mức tối thiểu để chống lại các cuộc tấn công vũ phu. 40 bit nghĩa là kẻ tấn công chỉ cần duyệt qua hơn một nghìn tỷ khả năng một chút — nghe có vẻ nhiều, nhưng với các máy tính chuyên dụng, đó là một cuộc dạo chơi chiều Chủ nhật. Với Mk4, Mk5 và Q, không gian tìm kiếm khoảng 72 bit, vẫn thấp hơn đáng kể so với chuẩn bảo mật 128 bit, nhưng tốt hơn một chút so với những dòng đời đầu. Nói cách khác, những người dùng ví đời đầu đang phải đối mặt với mối đe dọa nghiêm trọng nhất.

Và điều làm cho câu chuyện trở nên kịch tính hơn: kẻ tấn công không cần phải chạm vào ví của bạn. Họ không cần xâm nhập nhà bạn. Họ không cần cắm một chiếc USB độc hại vào máy của bạn. Tất cả những gì họ cần là ngồi trên máy tính của chính họ, duyệt toàn bộ các seed tiềm năng trong không gian tìm kiếm bị thu hẹp đó, tạo ra các địa chỉ Bitcoin tương ứng, và sau đó quét sổ cái công khai để tìm những địa chỉ có số dư. Đó là kiểu tấn công "offline" thuần túy, không đụng đến mạng lưới, không đụng đến nạn nhân. Về lý thuyết, tất cả những gì họ cần là một chiếc máy tính lớn và một chút kiên nhẫn.

Đó chính là lý do vì sao các nhà phân tích tại Block — đội ngũ đứng sau những công cụ phân tích on-chain quen thuộc — đã lao vào nghiên cứu. Họ xác định rằng các thiết bị bị ảnh hưởng có tối đa 2^32 luồng dữ liệu có thể phân biệt được từ quá trình sinh số ngẫu nhiên này. Nói nôm na: thay vì một không gian vũ trụ mênh mông 2^256 như người dùng vẫn tưởng, thực tế là một khu vườn nhỏ với hàng rào thấp. Một khi bạn biết được cơ chế trộn hạt giống, bạn có thể thu hẹp phạm vi tìm kiếm xuống những khả năng thực tế.

Phân tích của Block không chỉ dừng lại ở lý thuyết. Họ đã mô phỏng quá trình tạo hạt giống, chạy thử trên các thiết bị cũ, và đối chiếu với dữ liệu lịch sử của Bitcoin Optech. Họ phát hiện ra rằng, trong một số điều kiện nhất định, các địa chỉ được tạo ra từ seed yếu có thể xuất hiện theo những nhóm quan sát được. Khác với một lỗ hổng phần mềm thông thường, lỗ hổng này không thể bị phát hiện bằng cách thử nghiệm hộp đen một cách đơn giản, bởi vì các seed vẫn trông rất "khớp" với chuẩn BIP39. Bạn không thể nhìn bằng mắt thường rằng một seed phrase là yếu hay mạnh.

Không có gì ngạc nhiên khi con số thiệt hại bắt đầu lộ diện. Sử dụng dữ liệu từ Bitcoin Optech và kết hợp với ước tính on-chain từ Galaxy Research, các nhà nghiên cứu tạm tính khoảng 1.367,05 Bitcoin nghi ngờ có liên quan đến lỗ hổng này. Đây có thể là số Bitcoin đã bị rút khỏi các địa chỉ được tạo ra từ seed yếu trong giai đoạn 2021-2024. Bên cạnh đó, họ ghi nhận 77.402 Bitcoin đã được di dời trong một đợt "phòng thủ" — tức là những người dùng nghe theo cảnh báo, tạo seed mới và chuyển toàn bộ tài sản sang địa chỉ mới để thoát khỏi vùng nguy hiểm.

Hãy dừng lại một chút và hiểu con số 77.402 Bitcoin thực sự có nghĩa là gì. Đó không phải một nhóm nhỏ những người đam mê công nghệ chuyển tiền. Đó là một lượng lớn người dùng — có thể hàng chục nghìn người — đã nhận ra rằng tài sản của họ không còn an toàn nữa. Họ buộc phải thực hiện một thao tác tưởng chừng đơn giản nhưng lại cực kỳ rủi ro: tạo seed phrase mới, chuyển toàn bộ số dư, và hy vọng không bị ảnh hưởng bởi các lỗi thao tác trong lúc di dời.

Và đây là điểm châm biếm của toàn bộ câu chuyện: cập nhật firmware không phải là giải pháp. Bạn có thể flash ngay bản vá mới nhất do Coinkite phát hành — bản vá này chỉ giúp bảo vệ những seed phrase được tạo ra trong tương lai. Còn những seed phrase đã tồn tại, chúng vẫn nằm trong không gian tìm kiếm thấp đó, bởi vì các khóa dẫn xuất từ seed cũ đã được rải rác khắp sổ cái Bitcoin. Không có một thao tác cập nhật nào có thể thổi thêm entropy vào một seed đã được tạo ra từ trước. Cách duy nhất là tạo seed mới, sau đó chuyển toàn bộ tài sản sang các địa chỉ mới. Nghe thì dễ, nhưng với số dư lớn và phí giao dịch thay đổi liên tục, đây là một cơn ác mộng vận hành đối với bất kỳ cá nhân hay tổ chức nào.

Một trong những chi tiết "thú vị" nhất của câu chuyện này là cuộc tranh cãi về mốc thời gian. Coinkite, nhà sản xuất Coldcard, tuyên bố các phiên bản bị ảnh hưởng bắt đầu từ firmware 4.0.1. Tuy nhiên, Block đã xác định rằng lỗ hổng thực sự xuất hiện sớm hơn một phiên bản, tức là 4.0.0. Trong thế giới bảo mật, độ lệch một phiên bản có thể là khác biệt giữa "an toàn" và "không an toàn" đối với những người dùng đã dùng firmware 4.0.0 trong khoảng thời gian ngắn. Xử lý theo hướng bảo thủ, nhóm nghiên cứu khuyến nghị nên giả định vùng nguy hiểm bắt đầu từ 4.0.0. Và bạn biết đấy, khi nói đến tiền, "bảo thủ" luôn là lựa chọn khôn ngoan.

Tôi nhớ vào năm 2017, khi còn là nghiên cứu sinh, tôi từng phát hiện một lỗ hổng trong cơ chế oracle của một nền tảng dự đoán thị trường. Cũng giống như vậy, vấn đề không nằm ở những dòng mã nổi bật, mà nằm ở một giả định tưởng chừng vô hại mà mọi người đều mặc nhiên chấp nhận. Kể từ đó, tôi luôn giữ nguyên tắc: nếu một thứ gì đó tuyên bố là "bảo mật", tôi phải tự mình kiểm chứng được, hoặc chí ít phải hiểu rõ nó dựa trên giả định nào. Bởi vì nhiều hệ thống crypto không sụp đổ vì lý thuyết yếu, mà vì một cấu hình triển khai sai.

Điều khiến tôi cảm thấy bất an ở đây không phải là riêng một lỗ hổng của Coldcard. Mà là sự êm ắng của cả một hệ sinh thái. Có bao nhiêu dòng ví hardware khác đang sử dụng MicroPython hoặc một lớp trừu tượng tương tự, nhưng không hề kiểm tra kỹ xem RNG có thực sự được bật không? Đây không phải một câu hỏi mang tính suy đoán vô thưởng vô phạt. Đây là một câu hỏi kiểm toán trực tiếp: hãy mở firmware, tìm macro RNG, và xem giá trị của nó là gì. Nếu bạn đang dùng một thiết bị không cho phép bạn đọc mã nguồn, bạn đang đặt trọn niềm tin vào một chiếc hộp đen.

Điều trớ trêu thứ hai nằm ở thói quen của chính người dùng. "Ví lạnh" được ca tụng như một thánh địa. Người ta mua ví, tạo seed phrase, khắc lên miếng kim loại, chôn xuống vườn — và tin rằng tài sản của họ nằm ngoài tầm với của mọi kẻ tấn công mạng. Nhưng nếu entropy của seed phrase chỉ tương đương một chiếc mật khẩu gồm 6 ký tự, thì chiếc két sắt của bạn không khác gì một chiếc hộp giấy dán nhãn "cực kỳ an toàn". Giá trị của hardware wallet cuối cùng không nằm ở vỏ kim loại hay nút bấm. Nó nằm ở chất lượng của sự ngẫu nhiên mà con chip tạo ra. Và một khi sự ngẫu nhiên đó hỏng, mọi thứ khác — từ chip bảo mật, chữ ký số, cho đến giao diện màn hình cảm ứng sang trọng — đều trở thành vô nghĩa.

Có một sự mỉa mai khác: ví lạnh được tạo ra để giải quyết vấn đề niềm tin với các sàn giao dịch và các ứng dụng nóng. Nhưng bằng cách chuyển niềm tin sang nhà sản xuất ví, người dùng không hề loại bỏ rủi ro hệ thống — họ chỉ chuyển nó đến một nơi khác. Nếu sàn giao dịch bị hack, bạn có thể thấy dòng tiền rời khỏi số cái. Nhưng nếu ví của bạn tạo ra một seed yếu, không có một giao dịch độc hại nào xuất hiện cho đến khi một kẻ tấn công âm thầm rút cạn tài khoản. Và đến lúc đó, bạn thậm chí không biết điều gì vừa xảy ra.

Nếu bạn nghĩ rằng đây chỉ là một câu chuyện về riêng Coldcard, thì có lẽ bạn đang bỏ qua bức tranh lớn hơn. Hãy nhìn vào cách thị trường phản ứng với những sự cố kiểu này. Vào năm 2023, một hãng ví nổi tiếng khác bị chỉ trích dữ dội khi giới thiệu tính năng mới liên quan đến khóa riêng tư — dù cho đó là thứ gì đi nữa, làn sóng phản đối mạnh mẽ cho thấy người dùng coi seed phrase là "thánh thể", không được đụng vào. Nhưng điều gì xảy ra khi bản thân seed phrase được sinh ra trong một môi trường không đủ ngẫu nhiên? Khi đó, toàn bộ câu chuyện "phần cứng an toàn như két sắt" sụp đổ, và người dùng phải đối mặt với một sự thật khó chịu: không có nơi trú ẩn tuyệt đối nào ngoài kia, nếu nhà sản xuất không làm đúng việc của họ.

Đây chính là góc nhìn phản trực giác mà tôi muốn nhấn mạnh. Câu chuyện Coldcard không dạy bạn "đừng dùng ví lạnh nữa". Nó dạy bạn rằng: bạn cần hiểu rõ những mắt xích yếu nhất trong chuỗi bảo mật của mình, chứ không phải chỉ tin vào những thương hiệu hào nhoáng. Một kẻ tấn công không cần phải hack bạn bằng những kỹ thuật phức tạp. Chúng chỉ cần tìm ra một lỗ hổng trong một dòng firmware được phát hành ba năm trước, và đợi ngày công nghệ đủ rẻ để thực hiện việc quét seed. Đó là thứ mà ngành bảo mật gọi là "harvest now, decrypt later", nhưng trong trường hợp này là "harvest now, brute force later" — và brute force có thể xảy ra bất cứ lúc nào, không cần chờ đến tương lai xa xôi.

Trong bối cảnh thị trường giảm hiện nay, khi mà yếu tố sống còn được ưu tiên hơn lợi nhuận, tôi cho rằng dữ liệu từ sự kiện này cần được nhìn nhận một cách lạnh lùng. Bạn có đang nắm giữ Bitcoin trong một ví được tạo ra từ trước tháng gần đây không? Bạn có biết rằng seed phrase của bạn được tạo ra trên phiên bản firmware nào không? Nếu câu trả lời là "không", thì bạn vẫn đang đặt cược niềm tin vào một thứ gì đó không thể kiểm chứng. Trong giới đầu tư, chúng tôi gọi đó là "basis risk" — rủi ro nền tảng mà bạn không nhìn thấy nhưng nó có thể phá hủy toàn bộ danh mục.

Hãy nhìn vào dữ liệu on-chain một lần nữa. 1.367,05 Bitcoin bị nghi ngờ đánh cắp không phải là con số khổng lồ so với lượng giao dịch Bitcoin hằng ngày. Nhưng con số đó có thể sẽ tăng lên, bởi vì các nhà nghiên cứu mới chỉ bắt đầu quét sâu hơn vào các luồng dữ liệu phân biệt mà Block tìm thấy. Mỗi ngày trôi qua, kẻ tấn công có thêm thời gian để mở rộng cuộc tìm kiếm. Mỗi ngày trôi qua, người dùng vẫn ngồi yên với seed phrase cũ trong tay, có thể trên một chiếc ví Coldcard đã ngừng nhận bảo hành từ lâu. Đó là lý do vì sao việc di dời 77.402 Bitcoin nghe có vẻ "phòng thủ", nhưng thực chất là một cuộc chạy đua với thời gian.

Vậy, giải pháp của bạn là gì? Trước mắt, nếu bạn dùng Coldcard, hãy truy cập trang cảnh báo của Coinkite, tìm phần phiên bản firmware, và xác định xem thiết bị của bạn có nằm trong vùng ảnh hưởng hay không. Nếu có, đừng chần chừ: tạo một seed phrase mới, tốt nhất trên một thiết bị mới hoặc một thiết bị đã được cập nhật firmware mới nhất, và chuyển toàn bộ tài sản sang. Điều này nghe có vẻ phiền phức, nhưng so với việc mất toàn bộ tài sản, phiền phức là một món hời. Và quan trọng hơn: hãy tự trang bị cho mình khả năng kiểm tra, chứ không chỉ dựa vào những lời hứa hẹn của nhà sản xuất. Nếu một thiết bị không công khai mã nguồn firmware của nó, bạn không thể biết RNG của nó hoạt động thế nào. Và nếu bạn không thể biết, thì bạn đang bay trong sương mù.

Ở một tầm nhìn xa hơn, lỗ hổng Coldcard nên được coi là một lời nhắc nhở đắt giá cho toàn ngành. Chúng ta thường chú ý đến các lỗ hổng ở tầng ứng dụng — hợp đồng thông minh, sàn giao dịch, cầu nối cross-chain — vì chúng "dễ thấy" và có thể gây ra những vụ hack hàng trăm triệu đô la. Nhưng những lỗ hổng ở tầng thấp hơn, tầng mà mỗi người dùng đặt trực tiếp lên bàn làm việc, lại hiếm khi nhận được sự chú ý xứng đáng. RNG có vẻ là một chi tiết nhàm chán — mọi người không muốn nghe về entropy khi họ đang xem biểu đồ giá. Nhưng entropy là nền móng của mọi thứ. Khi nền móng bị nứt, cả tòa nhà sụp đổ.

Trong bối cảnh thị trường khó khăn, bài học này có thể không gây sốc bằng một vụ sàn giao dịch sụp đổ. Sẽ không ai tuyên bố rằng 1.367 Bitcoin đã bị lấy đi từ những chiếc ví lạnh "không thể hack" một cách lặng lẽ, không có tiếng nổ vang dội. Và cũng không ai tiết lộ rằng 77.402 Bitcoin đã phải tháo chạy như một cuộc di tản trong đêm. Thị trường sẽ không sụp đổ vì sự kiện này. Nhưng túi tiền của một số người, những người tưởng rằng họ đã làm mọi thứ đúng, sẽ bị bốc hơi — không phải vì một lần phím bấm sai, mà vì một dòng cấu hình sai từ ba năm trước.

Cuộc điều tra này sẽ không phải là cuối cùng. Khi công nghệ tiến bộ, các cuộc tấn công offline với ngân sách ngày càng rẻ sẽ trở thành chuẩn mực. Coldcard chỉ là một mảnh ghép — nhưng là một mảnh ghép đắt giá. Và bạn cần tự hỏi: liệu tôi có đang đặt niềm tin vào một hệ thống mà tôi không thể kiểm chứng? Nếu câu trả lời khiến bạn khó chịu, thì đã đến lúc bạn bắt đầu đặt câu hỏi với chính thiết bị mà bạn đang cầm trên tay. Bởi vì trong thế giới crypto, không có gì đáng sợ hơn một mối nguy hiểm mà bạn tưởng rằng mình đã phòng bị từ lâu.

Giá thị trường

BTC Bitcoin
$77,927.1 +0.26%
ETH Ethereum
$2,447.71 +0.36%
SOL Solana
$104.44 +0.02%
BNB BNB Chain
$691 -0.30%
XRP XRP Ledger
$1.39 +0.32%
DOGE Dogecoin
$0.0848 -0.24%
ADA Cardano
$0.2003 -1.18%
AVAX Avalanche
$7.28 +0.11%
DOT Polkadot
$0.8387 -1.49%
LINK Chainlink
$11.37 -0.73%

Sợ & Tham

68

Tham lam

Tâm lý thị trường

Lịch sự kiện blockchain

{{年份}}
08
04
upgrade Solana Firedancer

Trình xác thực độc lập ra mắt trên mainnet

18
03
unlock Mở khóa token Sui

Phần đội ngũ và nhà đầu tư sớm được giải phóng

12
05
halving BCH Halving

Sự kiện giảm một nửa phần thưởng khối

30
04
upgrade Nâng cấp Celestia Mainnet

Cải thiện hiệu quả lấy mẫu tính khả dụng dữ liệu

22
03
unlock Mở khóa Optimism

Lượng cung lưu hành tăng khoảng 2%

15
04
halving Bitcoin Halving

Phần thưởng khối giảm xuống 3,125 BTC

28
03
unlock Mở khóa token Arbitrum

Giải phóng 92 triệu ARB

10
05
upgrade Nâng cấp Ethereum Pectra

Tăng giới hạn validator và trừu tượng hóa tài khoản

Chỉ số mùa altcoin

41

Mùa Bitcoin

Sự thống trị BTC Mùa altcoin

Theo dõi phí Gas

Ethereum 28 Gwei
BNB Chain 3 Gwei
Polygon 42 Gwei
Arbitrum 0.5 Gwei
Optimism 0.3 Gwei

Vốn hóa thị trường

Tất cả →
# Tiền điện tử Giá
1
Bitcoin BTC
$77,927.1
1
Ethereum ETH
$2,447.71
1
Solana SOL
$104.44
1
BNB Chain BNB
$691
1
XRP Ledger XRP
$1.39
1
Dogecoin DOGE
$0.0848
1
Cardano ADA
$0.2003
1
Avalanche AVAX
$7.28
1
Polkadot DOT
$0.8387
1
Chainlink LINK
$11.37

🐋 Theo dõi cá voi

🟢
0x3e34...27c1
1 giờ trước
Chuyển vào
8,176 BNB
🟢
0x3e5e...31d1
12 giờ trước
Chuyển vào
4,189.46 BTC
🟢
0x3454...2f13
5 phút trước
Chuyển vào
3,178.74 BTC

💡 Smart Money

0x0f4b...7a20
Ví lưu ký tổ chức
-$1.3M
90%
0xdc50...b457
Thợ đào DeFi hàng đầu
+$3.7M
75%
0xe933...59aa
Ví lưu ký tổ chức
+$0.5M
78%

Công cụ

Tất cả →