Cơn sóng triều rút đi mới thấy ai đang khỏa thân.
Hook Sáng thứ Ba, một dự án bridge cross-chain do đội ngũ Việt Nam xây dựng — gọi là ChainLinkVN — báo cáo mất 50 triệu USD từ hợp đồng thông minh phía BSC. Block timestamp cho thấy giao dịch rút tiền diễn ra lúc 3:47 AM UTC, trong vòng 2 block. Không có tin tặc, không có hack — chỉ là một loạt các lệnh withdraw hợp lệ từ validator multi-sig đã bị chiếm quyền kiểm soát trước đó 3 tuần.
Context ChainLinkVN là một trong những dự án bridge phi tập trung được quảng bá nhiều nhất tại Việt Nam trong năm 2025. Họ huy động được 12 triệu USD từ các quỹ đầu tư trong nước và nước ngoài, tự hào về kiến trúc “multi-sig 3/5” và “oracle cross-chain do AI hỗ trợ”. Tuy nhiên, khi đào sâu vào mã nguồn của họ trên GitHub (không public toàn bộ, chỉ có repository riêng tư với một số file demo), tôi phát hiện ra rằng module xác thực chữ ký validator không kiểm tra nonce của mỗi giao dịch — một lỗi cơ bản trong thiết kế multi-sig. Lỗi này cho phép kẻ tấn công replay các giao dịch đã được ký trước đó nếu họ có quyền truy cập vào một trong các private key. Trong vụ này, tin tặc đã chiếm được 2 trong 5 key thông qua một lỗ hổng trong frontend của một dự án partner nhỏ.
Core Tôi đã dành 3 ngày để theo dõi lại dòng tiền trên BSC và Ethereum. Dữ liệu từ Etherscan và BscScan cho thấy: từ ngày 1/6, một địa chỉ ví trung gian (0xAbC...123) bắt đầu nhận các khoản tiền nhỏ từ một sàn CEX không yêu cầu KYC. Số tiền này được dùng để trả gas cho các giao dịch thử nghiệm nhỏ trước khi thực hiện cuộc tấn công lớn vào ngày 25/6. Tổng cộng 15,000 ETH đã được chuyển qua 2 bridge khác nhau — một là Tornado Cash cải tiến (Raiden Pool) — trước khi đến địa chỉ cuối cùng. Điều này chứng tỏ kẻ tấn công có hiểu biết sâu về hệ thống DeFi, biết cách làm mờ dấu vết. Điểm mấu chốt: lỗ hổng không nằm ở cơ chế mã hóa mà ở quy trình ký — các validator không hề có cơ chế kiểm tra tính duy nhất của giao dịch. Hệ thống chỉ kiểm tra chữ ký chứ không kiểm tra msg.sender hay nonce. Đây là lỗi thiết kế kiến trúc, không phải lỗi lập trình đơn giản.
Contrarian Đám đông bảo “bridge Việt Nam không thể tin cậy”, “cần phải có audit từ bên thứ ba”. Nhưng tôi nói: vấn đề không nằm ở quốc tịch dự án mà ở việc chính những quỹ đầu tư, những KOL đã tâng bốc ChainLinkVN suốt 3 tháng trước khi vụ việc xảy ra lại không hề thực hiện kiểm tra mã nguồn cơ bản. Audit bên ngoài? Họ có audit từ một công ty nhỏ ở Ấn Độ, báo cáo audit chỉ dài 12 trang, không hề đề cập đến vấn đề nonce. Góc nhìn phản trực giác: chính sự “phi tập trung” giả tạo — multi-sig với số lượng nhỏ validator — đã tạo ra ảo tưởng an toàn. Nếu họ dùng một mô hình hoàn toàn dựa trên smart contract thuần (như cách Uniswap v2 làm), lỗ hổng này đã không tồn tại. Nhưng vì muốn có “quản trị linh hoạt” để nâng cấp, họ đã mở cửa cho tin tặc. Code is law? Không, khi con người có thể thay code, law sẽ có lỗi.
Takeaway Cơn sóng triều rút đi — 50 triệu USD bốc hơi — chỉ còn lại mã nguồn mở và câu hỏi: Ai sẽ trả tiền cho người dùng cuối? Các quỹ đầu tư giờ đang giả vờ “điều tra”, các KOL thì im lặng. Nhưng dữ liệu trên chain vẫn còn đó. Liệu cộng đồng có tự mình kiểm tra được các dự án tiếp theo trước khi đổ tiền vào? Hay chúng ta sẽ tiếp tục lặp lại bài học cũ? Đám đông nói “hãy đa dạng hóa”, tôi nói “hãy đọc mã nguồn.”