Tôi đã nghĩ rằng một vụ hack cầu nối nghĩa là ai đó đã phát hiện ra một lỗ hổng trong mã nguồn, một điểm yếu trong mật mã, thứ mà một cuộc kiểm tra an ninh đã bỏ sót. Nhưng phần hậu kiểm (post-mortem) của Dusk về sự cố cầu nối hồi tháng Một lại mô tả một điều khác.

Vào ngày 16 tháng 1, một kẻ tấn công đã xâm nhập ví ký được dùng bởi cầu nối Dusk-to-EVM, chuyển tiền trực tiếp trên Dusk trước khi chuyển một phần trong đó đi tiếp sang BNB Smart Chain. Dusk đã tắt cầu nối giữa cuộc tấn công, và chính điều đó khiến một nỗ lực chuyển khoản cuối cùng, trị giá xấp xỉ 8,9 triệu DUSK, bị thất bại.

Đây không phải là lỗi do cơ chế đồng thuận (consensus) hay một kiểu khai thác lỗ hổng của giao thức (protocol exploit). Dusk cho biết nguyên nhân trực tiếp là việc bị lộ/đánh cắp khóa (key compromise), và thiết kế cũ cho phép ví ký, việc xử lý sự kiện (event handling) và kết nối mạng đều hoạt động trong cùng một luồng. Điểm yếu nằm ở quyền hạn vận hành tập trung, chứ không phải do mật mã yếu.

Phần thiết kế lại sau đó có thể gói gọn trong một câu được chôn trong bản hậu kiểm: "ingestion is no longer equivalent to spending" (việc nạp dữ liệu sự kiện (ingestion) không còn tương đương với việc chi tiêu/phát hành tiền). Trước đây, việc nhận ra rằng một sự kiện đã xảy ra và có thẩm quyền giải phóng tiền vì điều đó là cùng một bước. Giờ thì không còn như vậy nữa. Việc ingestion sự kiện được ghi checkpoint và đưa vào hàng đợi dưới dạng một job; một quy trình riêng biệt, rõ ràng sẽ thực sự chuyển tiền dựa trên đó.

"Một giao thức vẫn có thể hoạt động đúng như thiết kế, trong khi lớp vận hành xung quanh nó lại trao quá nhiều quyền cho một con đường bị xâm phạm."

Điều tôi thực sự muốn thấy: xác nhận rằng cây cầu nối được thiết kế lại thực sự tách bạch việc ingestion sự kiện và việc giải phóng/quyết định phát hành tiền thành hai luồng riêng trong thực tế, chứ không chỉ được mô tả trong phần hậu kiểm về kiến trúc mới.

#dusk $DUSK @Dusk