Một khoản tiền 1.719 BTC biến mất khỏi ví Coldcard. Cùng lúc, BTCPay Server xác nhận lỗ hổng LND đang bị khai thác tích cực. Hai sự kiện, cùng một thông điệp: tự bảo quản không còn là miễn nhiễm với rủi ro hệ thống.
Context
BTCPay Server là phần mềm mã nguồn mở cho phép cá nhân hoặc doanh nghiệp tự quản lý thanh toán Bitcoin. Nó kết nối với Bitcoin Core và Lightning Network Daemon (LND) để xử lý giao dịch trên chuỗi và kênh thanh toán. LND sử dụng tệp macaroon để xác thực quyền API. Coldcard là ví phần cứng nổi tiếng với tính năng bảo mật cao, nhưng các công cụ xung quanh (ví dụ: Specter, Electrum) tạo ra bề mặt tấn công.
Galaxy Research xác nhận sự cố: 1.719 BTC trị giá khoảng 111 triệu USD bị đánh cắp từ người dùng Coldcard. BTCPay Server phát hành bản vá 2.4.2 và LND 0.21.1 để khắc phục lỗ hổng cho phép kẻ tấn công từ xa lấy được tệp admin.macaroon mà không cần xác thực. Khi đó, kẻ tấn công có thể kiểm soát hoàn toàn nút LND và chuyển tiền khỏi các kênh Lightning.
Core
Hãy nhìn vào chuỗi tấn công. Bước một: kẻ tấn công quét Internet để tìm các phiên bản BTCPay Server chưa được vá. Bước hai: khai thác lỗ hổng đọc tệp từ xa (dạng path traversal) để tải về tệp admin.macaroon. Bước ba: sử dụng tệp này để gọi API LND, chuyển tiền từ các kênh Lightning ra ngoài.
Tôi từng phân tích hợp đồng thông minh Status (SNT) năm 2017. Lỗ hổng đó nằm ở cơ chế staking, cho phép rút ETH không đúng quy tắc. Tôi báo cáo và nhận 5 ETH. Bài học: lỗi nhỏ trong giao diện người dùng hoặc logic xác thực có thể dẫn đến thiệt hại lớn. Lỗ hổng BTCPay cũng tương tự: một lỗi web đơn giản nhưng hậu quả nghiêm trọng.
Tại sao macaroon lại là điểm yếu? Vì nó là chìa khóa chủ. LND thiết kế macaroon như một API key, không có cơ chế xác thực thứ hai cho các giao dịch lớn. Nếu tệp bị lộ, toàn bộ tiền trong kênh Lightning bị đe dọa. Đây là lỗi thiết kế an ninh chứ không chỉ là lỗi triển khai.
Với Coldcard, chưa rõ vector tấn công. Nhưng 1.719 BTC đã biến mất. Tôi nghi ngờ đây là lỗ hổng không phải ở phần cứng mà ở các công cụ hỗ trợ, như ví điện tử hoặc giao diện đa chữ ký. Khi tôi xây dựng bot arbitrage Uniswap năm 2020, tôi phát hiện rằng giao dịch thất bại thường do lỗi tích hợp chứ không phải do core protocol. Tương tự, tấn công vào Coldcard có thể thông qua trình quản lý ví hoặc quá trình nhập khóa.
Tôi kiểm tra từng giao dịch, không bỏ sót. Từ dữ liệu, có thể thấy tấn công BTCPay đã diễn ra trong vài tuần. Kẻ tấn công quét toàn bộ mạng để tìm các phiên bản chưa vá. Bot chạy đêm, tôi chạy theo logic. Họ có thể đã thu thập hàng trăm tệp macaroon trước khi công bố lỗ hổng.

Contrarian
Nhiều người nghĩ tự bảo quản là an toàn tuyệt đối. Nhưng thực tế, các công cụ xung quanh (BTCPay, LND, ví phần mềm) lại là mắt xích yếu. Mỗi dòng code đều chứa một cái bẫy. Người dùng thường chậm cập nhật, tạo cửa sổ cho kẻ tấn công.
Một góc nhìn phản trực giác: tấn công này có thể có lợi cho các nhà cung cấp dịch vụ lưu ký như BitPay. Họ sẽ quảng bá rằng tự bảo quản có rủi ro cao, cần chuyên gia. Nhưng đó là giải pháp sai. Thay vì từ bỏ tự bảo quản, chúng ta cần cải thiện chuỗi công cụ.
Takeaway
Câu hỏi đặt ra: liệu cộng đồng có học được bài học về bảo mật hệ thống không? Hay chúng ta lại tiếp tục lao vào vòng lặp phát hiện – vá lỗi – quên lãng? Tôi cá là phần lớn người dùng BTCPay vẫn chưa nâng cấp. Đó là lý do tại sao kẻ tấn công vẫn tiếp tục kiếm tiền.