Hôm qua vừa rà soát nhật ký lỗi của các node RPC, vừa lôi lại các bản ghi trên chuỗi của sự cố an ninh cây cầu liên chuỗi diễn ra vào giữa tháng 1 (@Dusk ) để xem lại từng bước. Tôi làm việc với crypto và tương tác với smart contract từ trước đến nay luôn tuân theo phương châm “bảo toàn tính mạng là ưu tiên số một”. Mỗi khi có chút gió thổi cỏ lay, phản xạ bản năng của tôi là tuyệt đối không tin tin đồn, mà phải tự tay đào code và đối chiếu dòng chảy trên blockchain để tìm ra sự thật.
Lúc đó có rất nhiều người hoảng loạn, tưởng rằng tầng giao thức nền của Dusk đã sụp đổ. Nhưng tôi đối chiếu toàn bộ dấu vết trên chuỗi và phải nói một câu khách quan để bên lớp đồng thuận của nó được công bằng: đồng thuận DuskDS ở lớp nền quả thực chưa hề bị tấn công phá vỡ, code cốt lõi của giao thức cũng không có bug. Thứ thực sự bị hacker “đè bẹp” là ví chữ ký của dịch vụ cầu nối dùng để kết nối với các chain EVM. Nói thẳng ra là: giao thức không bị rò rỉ—người “gác cổng” giữ khóa riêng thuộc lớp vận hành bên ngoài đã bị đánh cắp.
Trong phần tổng kết lại các hành động diễn ra trên chuỗi đêm hôm đó: hacker bắt đầu tấn công lúc 21:28, lần lượt rút ra 2,7 triệu, 1,9 triệu, rồi 8,0 triệu ($DUSK ) theo từng đợt; đến gần hai giờ sau nhóm mới khẩn cấp kéo cầu dao dừng lại. Cuối cùng, lệnh rút 891 vạn (89100000) token vẫn bị kẹt cứng. Phần tiền ở giữa còn bị rửa qua BSC.
Chuyện này đã khiến tôi bị tác động rất mạnh. Bình thường khi tự viết hợp đồng Solidity hay dựng kiến trúc, chúng ta hay mê tín cái gọi là “tính module hóa tách rời” — tách bạch đồng thuận, thanh toán, thực thi cho rõ ràng, nghe thì cực kỳ vững chắc. Nhưng thực tế phũ phàng: hệ thống càng bị tách nhỏ, càng có nhiều “đường nối” lộ ra với bên ngoài. Để chạy nhanh và tích hợp nhẹ nhàng, đội dự án đã dồn toàn bộ quyền ký vào một lối đi mỏng manh. Kết quả là bức tường phòng thủ được xây bằng ZKP (bằng chứng không kiến thức) và độ cuối xác định trong chuỗi thì kiên cố như thành đồng, nhưng bên ngoài—cái ví chữ ký cầu nối liên chuỗi—lại bị bẻ gãy chỉ trong một lần.
Vì vậy, giờ nhìn dự án, tôi không còn mê tín “độ cứng” của đồng thuận nữa. Tài sản chỉ cần đã đi ra khỏi lớp thanh toán gốc, thì các cây cầu biên và ví chữ ký ở rìa hệ thống, chỉ trong nháy mắt có thể kéo nền tảng phi tập trung quay trở lại vũng lầy niềm tin con người vốn rất mong manh. Những thiếu sót an ninh ở rìa, thường lại chính là mỏ đá ngầm nguy hiểm nhất.
Anh em ơi, các bạn nghĩ rủi ro rơi vào “điểm đơn” của cây cầu liên chuỗi trên một public chain kiểu module hóa như thế này thì rốt cuộc có cách giải ở cấp độ code không?
#dusk $DUSK @Dusk
Lúc đó có rất nhiều người hoảng loạn, tưởng rằng tầng giao thức nền của Dusk đã sụp đổ. Nhưng tôi đối chiếu toàn bộ dấu vết trên chuỗi và phải nói một câu khách quan để bên lớp đồng thuận của nó được công bằng: đồng thuận DuskDS ở lớp nền quả thực chưa hề bị tấn công phá vỡ, code cốt lõi của giao thức cũng không có bug. Thứ thực sự bị hacker “đè bẹp” là ví chữ ký của dịch vụ cầu nối dùng để kết nối với các chain EVM. Nói thẳng ra là: giao thức không bị rò rỉ—người “gác cổng” giữ khóa riêng thuộc lớp vận hành bên ngoài đã bị đánh cắp.
Trong phần tổng kết lại các hành động diễn ra trên chuỗi đêm hôm đó: hacker bắt đầu tấn công lúc 21:28, lần lượt rút ra 2,7 triệu, 1,9 triệu, rồi 8,0 triệu ($DUSK ) theo từng đợt; đến gần hai giờ sau nhóm mới khẩn cấp kéo cầu dao dừng lại. Cuối cùng, lệnh rút 891 vạn (89100000) token vẫn bị kẹt cứng. Phần tiền ở giữa còn bị rửa qua BSC.
Chuyện này đã khiến tôi bị tác động rất mạnh. Bình thường khi tự viết hợp đồng Solidity hay dựng kiến trúc, chúng ta hay mê tín cái gọi là “tính module hóa tách rời” — tách bạch đồng thuận, thanh toán, thực thi cho rõ ràng, nghe thì cực kỳ vững chắc. Nhưng thực tế phũ phàng: hệ thống càng bị tách nhỏ, càng có nhiều “đường nối” lộ ra với bên ngoài. Để chạy nhanh và tích hợp nhẹ nhàng, đội dự án đã dồn toàn bộ quyền ký vào một lối đi mỏng manh. Kết quả là bức tường phòng thủ được xây bằng ZKP (bằng chứng không kiến thức) và độ cuối xác định trong chuỗi thì kiên cố như thành đồng, nhưng bên ngoài—cái ví chữ ký cầu nối liên chuỗi—lại bị bẻ gãy chỉ trong một lần.
Vì vậy, giờ nhìn dự án, tôi không còn mê tín “độ cứng” của đồng thuận nữa. Tài sản chỉ cần đã đi ra khỏi lớp thanh toán gốc, thì các cây cầu biên và ví chữ ký ở rìa hệ thống, chỉ trong nháy mắt có thể kéo nền tảng phi tập trung quay trở lại vũng lầy niềm tin con người vốn rất mong manh. Những thiếu sót an ninh ở rìa, thường lại chính là mỏ đá ngầm nguy hiểm nhất.
Anh em ơi, các bạn nghĩ rủi ro rơi vào “điểm đơn” của cây cầu liên chuỗi trên một public chain kiểu module hóa như thế này thì rốt cuộc có cách giải ở cấp độ code không?
#dusk $DUSK @Dusk