
Lỗi tạo seed đã phá vỡ các ví ngắt mạng
Đợt đầu tiên lấy đi 594 BTC — khoảng 38 triệu USD — từ chừng 500 chiếc ví trong hai mươi lăm phút. Không ví nào trong số đó là ví nóng. Không ví nào từng được cắm vào máy tính. Đó đều là thiết bị ngắt mạng, và chủ của chúng đã làm đúng mọi điều sách hướng dẫn khuyên.
Đến giữa tháng Tám, tổng số đã vượt 1.778 BTC, tương đương khoảng 112 triệu USD vào thời điểm ấy, và con số đang chạy hiện ở gần 130 triệu. Cú vỡ nghiêm trọng này không đến từ một trang lừa đảo hay một chữ ký độc hại, mà từ một lỗi firmware năm 2021 khiến một số seed ví có thể đoán được, làm thay đổi tận gốc những gì bảo mật ví cứng vẫn hứa hẹn.
Thứ thực sự đã hỏng
Seed ví là dữ liệu ngẫu nhiên ban đầu dùng để sinh ra khóa riêng, và nó là điểm tựa của bảo mật tiền mã hóa. Seed được tạo ra từ tính ngẫu nhiên, còn tính ngẫu nhiên được đo bằng số bit entropy. Chuẩn ngành là 128 bit — một con số đủ lớn để dò cạn không còn là bài toán tính toán mà là bài toán vật lý.
Trên các thiết bị bị ảnh hưởng, con số ấy tụt xuống còn khoảng 40 bit. Bốn mươi bit không phải bài toán vật lý. Đó là một buổi chiều với phần cứng đi thuê.
Chính điều này khiến sự cố khác biệt về mặt cấu trúc so với mọi câu chuyện ví khác. Không có gì bị lấy khỏi thiết bị. Kẻ tấn công chưa từng chạm vào nó, không cần mã PIN, không nhìn thấy màn hình. Một khi seed được tạo trong một khoảng đoán được, khóa riêng có thể được dựng lại từ bất kỳ đâu trên thế giới, còn chủ ví thì không có cách nào nhận ra cho tới khi số dư dịch chuyển.
Bảo mật ví cứng dựa trên một giả định: con số sinh ra bên trong thiết bị là không thể biết được từ bên ngoài. Khi entropy sụp đổ, mọi lớp bảo vệ còn lại — phần tử an toàn, cụm mật khẩu, mã PIN, lưới chống mở — đều trở thành đồ trang trí.
Vì sao ngắt mạng không cứu được
Ngắt mạng là biện pháp cách ly thiết bị khỏi mọi kết nối mạng để chặn truy cập trái phép. Nó phòng đúng một mối đe dọa: một chiếc máy tính đã bị chiếm quyền vươn tới khóa. Ở việc đó nó làm rất tốt.
Nhưng trước một chiếc khóa vốn đã yếu từ lúc sinh ra, nó chẳng làm được gì. Thiết bị ký có thể niêm phong trong két, bọc giấy bạc, không bao giờ cấp điện gần mạng, tiền vẫn ra đi — bởi kẻ tấn công không hề tấn công thiết bị. Chúng tấn công phần toán học đã tạo ra seed.
Sự phân biệt ấy đáng để thấm, bởi phần lớn lời khuyên về bảo mật ví cứng đều ngầm giả định rằng kẻ tấn công phải chạm tới phần cứng của bạn. Việc tạo seed đúng là kiểu hỏng duy nhất mà chúng không cần điều đó.
Phần khó chịu: lỗi được tìm ra thế nào
Coinkite nêu khả năng những kẻ tấn công đã dùng AI rà soát các phiên bản cũ trong firmware mã nguồn mở của hãng và moi ra điểm yếu này.
Galaxy Research, đơn vị theo dõi dòng tiền bị rút, mô tả chiến dịch là có chủ đích, được lập trình và nhiều khả năng do một mô hình ngôn ngữ lớn điều phối. Đến đầu tháng Tám, họ đã lập bản đồ khoảng 88,6 triệu USD trên 4.585 địa chỉ; các đợt tấn công đến theo ba làn lớn cùng hàng chục vụ nhỏ hơn.
Hãy đọc kỹ đoạn đó. Mã nguồn đã công khai từ 2021. Người rà soát đã xem nó suốt nhiều năm. Thứ thay đổi không phải mã nguồn mà là chi phí rà soát nó: một kẻ tấn công có mô hình giờ đọc được mọi phiên bản lịch sử của mọi firmware mã nguồn mở, việc trước đây không đáng tiền để làm.
Điều trớ trêu ở phía phòng thủ là chính đợt rà soát khắc phục kéo dài ba tuần của Coinkite cũng dùng các nhà nghiên cứu bên ngoài song song với mô hình AI. Cùng một năng lực nay hoạt động ở cả hai phía chiến tuyến, và bên kiên nhẫn hơn sẽ thắng.
Những gì đã được sửa
Công ty kêu gọi chủ các thiết bị Mk4, Mk5 và Q chuyển lên firmware 5.6.1 hoặc 1.5.1Q. Bản phát hành xử lý việc ký giao dịch, xử lý dữ liệu USB, xác thực firmware, chế độ Delta và sao lưu ví.
Thay đổi nói lên nhiều nhất lại mang tính quy trình chứ không phải kỹ thuật: việc tạo seed giờ đòi người dùng tự đóng góp tính ngẫu nhiên, với một số lần bấm phím tối thiểu trước khi ví được tạo. Thiết bị không còn tự tin tưởng một mình mình trong chuyện ngẫu nhiên.
Đó là một chỉnh sửa hợp lý, và đồng thời lặng lẽ thừa nhận điểm sâu hơn. Tính ngẫu nhiên là thứ khó xác minh nhất trong một sản phẩm bảo mật, bởi một số ngẫu nhiên yếu trông y hệt một số ngẫu nhiên mạnh.
Điều này có nghĩa gì nếu bạn sở hữu bất kỳ ví cứng nào
Không dùng Coldcard? Bài học vẫn đúng, bởi kiểu thất bại này của bảo mật ví cứng không gắn với một thương hiệu cụ thể. Bất kỳ thiết bị nào tạo seed đều có thể tạo tệ, và chủ ví nhìn thì không thể biết.
Hãy cập nhật firmware, nhưng hiểu rõ bản cập nhật làm gì và không làm gì. Firmware mới sửa cách tạo seed trong tương lai. Nó không sửa được một seed vốn đã được tạo yếu — những khóa đó vẫn đoán được mãi mãi, và đó chính là lý do người bị ảnh hưởng phải chuyển tiền đi chứ không thể vá rồi yên tâm.
Hãy coi việc tạo seed là khoảnh khắc rủi ro nhất trong đời một chiếc ví. Nó xảy ra một lần, mất ba mươi giây, và quyết định mọi thứ về sau. Nếu thiết bị cho phép bạn thêm entropy của chính mình — tung xúc xắc, bấm phím, tung đồng xu — hãy dùng, dù cảm giác như đang diễn kịch.
Đừng dùng lại một seed trên nhiều thiết bị, và đừng khôi phục một seed cũ lên phần cứng mới khi chưa biết phiên bản firmware nào đã tạo ra nó. Trong sự cố này, cửa sổ rủi ro kéo ngược lại nhiều năm, và nhiều chủ ví đã quên từ lâu mình chạy bản dựng nào khi thiết lập lần đầu.
Hãy chia tài sản ra nhiều ví được tạo ở những thời điểm khác nhau, lý tưởng là trên các thiết bị khác nhau của các hãng khác nhau. Nghe có vẻ hoang tưởng, cho tới khi một lỗi entropy trải khắp một hãng lấy đi 4.585 địa chỉ cùng lúc.
Cách kiểm tra mức độ phơi nhiễm
Việc rà soát bảo mật ví cứng của chính bạn bắt đầu từ lịch sử firmware của đúng thiết bị đó, không phải từ dòng sản phẩm. Các hãng công bố những bản dựng nào bị ảnh hưởng; đối chiếu ngày tạo ví của bạn với danh sách ấy là cách kiểm tra đáng tin duy nhất.
Nếu ví được tạo trong khoảng thời gian bị ảnh hưởng, hãy coi seed là đã lộ, bất kể tiền đã dịch chuyển hay chưa. Kẻ tấn công làm theo danh sách, và một địa chỉ im ắng chỉ có nghĩa là chưa tới lượt bạn.
Cách khắc phục là di chuyển chứ không phải vá. Tạo seed mới trên firmware đã cập nhật, xác minh địa chỉ nhận ngay trên màn hình thiết bị, chuyển tiền, rồi loại bỏ vĩnh viễn seed cũ — không giữ làm bản sao lưu, không giữ làm dự phòng.
Và hãy đề phòng trò lừa đi kèm. Mỗi sự cố ở quy mô này đều được theo sau trong vài ngày bởi các «dịch vụ thu hồi» và hỗ trợ hãng giả mạo, hỏi xin đúng cụm từ khôi phục mà họ tự nhận đang đi cứu.
Bài học rộng hơn
Mã nguồn mở thường được coi là một bảo chứng an toàn. Nó không phải vậy. Nó là điều kiện cần để rà soát, còn rà soát là một hoạt động riêng, phải có người thực sự làm, thực sự trả tiền và làm đi làm lại.
Suốt bảy năm, firmware này công khai và phổ biến. Lỗi vẫn sống sót, bởi không ai có lý do đọc lại những commit cũ cho tới khi bài toán kinh tế thay đổi.
Với số dư đáng kể, bảo mật ví cứng vẫn là lựa chọn mặc định đúng đắn — tự lưu ký bằng một thiết bị ký chuyên dụng vẫn an toàn hơn hẳn để khóa trên laptop. Thứ sự cố này sửa lại là giả định về tính vĩnh viễn. Một thiết bị an toàn năm 2021 không tự động an toàn hôm nay, và cuộc rà soát thực sự quan trọng lại chính là cuộc rà soát không ai làm.
Điều này có nghĩa ví cứng không an toàn?
Không. Nó có nghĩa một kiểu thất bại rất cụ thể của bảo mật ví cứng — tạo seed yếu — đánh bại mọi lớp bảo vệ khác mà chúng cung cấp. Với phần lớn người dùng, ví cứng vẫn an toàn hơn hẳn lưu trữ bằng phần mềm; điều cần chỉnh là coi việc tạo seed và nguồn gốc firmware như một phần của mô hình bảo mật, chứ không phải chi tiết vụn vặt lúc cài đặt.
Nhìn cụm từ khôi phục có biết entropy thấp không?
Không. Seed yếu và seed mạnh không thể phân biệt với con người, cả hai đều là mười hai hoặc hai mươi bốn từ bình thường. Chính vì thế lỗi này tồn tại nhiều năm mà không ai nhận ra.
Cập nhật firmware có bảo vệ những khóa tôi đã có không?
Không. Bản cập nhật sửa cách các seed tương lai được tạo ra. Một seed đã tạo yếu thì yếu mãi mãi, nên cách xử lý là chuyển tiền sang ví tạo trên firmware đã sửa, chứ không phải vá.
Vì sao thiết bị ngắt mạng vẫn mất tiền?
Vì cuộc tấn công không cần chạm tới thiết bị. Một khi seed rơi vào khoảng đoán được, khóa có thể được dựng lại từ xa, nên cách ly vật lý không liên quan gì tới kiểu lỗi này.
Firmware mã nguồn mở có nguy hiểm hơn khi AI đọc được nó?
Phơi bày hơn, chứ không nguy hiểm hơn. Mã công khai ai cũng phân tích được với chi phí gần bằng không, và điều đó cắt về cả hai phía: bên phòng thủ cũng có đúng năng lực ấy, còn firmware đóng chỉ giấu lỗi đi chứ không ngăn được lỗi.
Tôi có nên thêm tính ngẫu nhiên của mình khi tạo ví?
Có, bất cứ khi nào thiết bị hỗ trợ. Tung xúc xắc hay bấm phím sẽ trộn entropy do người dùng cấp vào bộ sinh, nhờ đó ngay cả một nguồn nội bộ có lỗi cũng không thể một mình quyết định khóa của bạn.
Chuyên gia thị trường crypto và trưởng phòng nội dung và marketing tại EIDEX. Viết về cấu trúc thị trường, hạ tầng sàn giao dịch và giao dịch cross-chain — biến dữ liệu on-chain và biến động thị trường thành nghiên cứu rõ ràng, thiết thực cho nhà giao dịch.


