Tôi đã phát hiện ra một lỗi AEGIS mang tính tiết lộ nhất nằm ngoài chính phần chứng minh zero-knowledge. Giá trị bên cạnh đó không được kiểm soát đầy đủ.
Trong đường dẫn giao dịch của Dusk Network, ở Phoenix, một người dùng có thể cam kết với một max_fee hợp lệ, trong khi việc thực thi vẫn tiêu tốn các trường phí mà không được ràng buộc vào cùng một câu chuyện bảo mật. Các tham số gas thù địch có thể dẫn đến việc thổi phồng hoàn phí hoặc tràn số. Một địa chỉ hoàn phí có thể thay đổi có thể chuyển hướng giá trị.
Chứng minh là hợp lệ. Nhưng ngữ nghĩa giao dịch không được liên kết đầy đủ với nó.
Phí không phải là siêu dữ liệu vô hại khi đường hoàn phí có thể tạo ra hoặc chuyển hướng giá trị.
Đây là một cảnh báo hữu ích cho mọi giao thức bảo mật riêng tư. Việc chứng minh một mệnh đề một cách hoàn hảo không đảm bảo các trường lân cận mà quá trình thực thi sau đó vẫn tin tưởng. Hệ thống phải ràng buộc chứng minh, chữ ký, phép tính phí, điểm đến và đường hoàn phí vào cùng một bất biến.
AEGIS đã thêm phép nhân có kiểm tra cho gas_limit nhân gas_price và yêu cầu kết quả phải bằng max_fee đã được chứng minh. Dusk thực thi kiểm tra này hai lần: ngay khi chấp nhận vào mempool và một lần nữa bên trong lúc thực thi trong VM. Nó cũng ràng buộc địa chỉ stealth hoàn phí để việc can thiệp sẽ làm giao dịch bị vô hiệu.
Phần kiểm tra thứ hai là chi tiết mà tôi quan tâm. Một bộ đề xuất khối độc hại không cần tuân thủ các giả định của một mempool trung thực. Nếu bất biến chỉ tồn tại ở rìa mạng, thì đồng thuận vẫn có thể thực thi một giao dịch đã vượt qua rìa đó.
Bây giờ tôi sẽ theo dõi cùng một mẫu phòng thủ trên Dusk: từ chối rẻ trước khi vào mempool, xác thực mang tính thẩm quyền khi thực thi, và các bài kiểm thử hồi quy thay đổi mọi trường bao quanh một chứng minh.
AEGIS đã đóng các lỗ hổng quan trọng đã biết. Câu hỏi lớn hơn là liệu các hợp đồng Dusk khác có chứa các giá trị được "kiểm tra" ở một lớp và chỉ được tin cậy ở lớp tiếp theo hay không.
Mật mã có thể chứng minh đúng chính xác những gì nó được yêu cầu chứng minh. Bảo mật phụ thuộc vào việc Dusk có yêu cầu chứng minh toàn bộ mệnh đề hay không.
#dusk $DUSK @Dusk
Trong đường dẫn giao dịch của Dusk Network, ở Phoenix, một người dùng có thể cam kết với một max_fee hợp lệ, trong khi việc thực thi vẫn tiêu tốn các trường phí mà không được ràng buộc vào cùng một câu chuyện bảo mật. Các tham số gas thù địch có thể dẫn đến việc thổi phồng hoàn phí hoặc tràn số. Một địa chỉ hoàn phí có thể thay đổi có thể chuyển hướng giá trị.
Chứng minh là hợp lệ. Nhưng ngữ nghĩa giao dịch không được liên kết đầy đủ với nó.
Phí không phải là siêu dữ liệu vô hại khi đường hoàn phí có thể tạo ra hoặc chuyển hướng giá trị.
Đây là một cảnh báo hữu ích cho mọi giao thức bảo mật riêng tư. Việc chứng minh một mệnh đề một cách hoàn hảo không đảm bảo các trường lân cận mà quá trình thực thi sau đó vẫn tin tưởng. Hệ thống phải ràng buộc chứng minh, chữ ký, phép tính phí, điểm đến và đường hoàn phí vào cùng một bất biến.
AEGIS đã thêm phép nhân có kiểm tra cho gas_limit nhân gas_price và yêu cầu kết quả phải bằng max_fee đã được chứng minh. Dusk thực thi kiểm tra này hai lần: ngay khi chấp nhận vào mempool và một lần nữa bên trong lúc thực thi trong VM. Nó cũng ràng buộc địa chỉ stealth hoàn phí để việc can thiệp sẽ làm giao dịch bị vô hiệu.
Phần kiểm tra thứ hai là chi tiết mà tôi quan tâm. Một bộ đề xuất khối độc hại không cần tuân thủ các giả định của một mempool trung thực. Nếu bất biến chỉ tồn tại ở rìa mạng, thì đồng thuận vẫn có thể thực thi một giao dịch đã vượt qua rìa đó.
Bây giờ tôi sẽ theo dõi cùng một mẫu phòng thủ trên Dusk: từ chối rẻ trước khi vào mempool, xác thực mang tính thẩm quyền khi thực thi, và các bài kiểm thử hồi quy thay đổi mọi trường bao quanh một chứng minh.
AEGIS đã đóng các lỗ hổng quan trọng đã biết. Câu hỏi lớn hơn là liệu các hợp đồng Dusk khác có chứa các giá trị được "kiểm tra" ở một lớp và chỉ được tin cậy ở lớp tiếp theo hay không.
Mật mã có thể chứng minh đúng chính xác những gì nó được yêu cầu chứng minh. Bảo mật phụ thuộc vào việc Dusk có yêu cầu chứng minh toàn bộ mệnh đề hay không.
#dusk $DUSK @Dusk
