Module an toàn tham chiếu của ngôn ngữ Move tồn tại lỗ hổng tràn số nguyên
Gần đây, một lỗ hổng tràn số nguyên nghiêm trọng đã được phát hiện trong mô-đun an toàn tham chiếu của ngôn ngữ Move. Lỗ hổng này có thể dẫn đến các cuộc tấn công từ chối dịch vụ, tạo ra mối đe dọa tiềm tàng đối với tính an toàn của ngôn ngữ Move.
Ngôn ngữ Move sẽ thực hiện xác minh mã trước khi thực thi bytecode, chia thành nhiều bước. Lỗ hổng này xuất hiện trong bước reference_safety, bước này có trách nhiệm xác minh tính an toàn của các tham chiếu, bao gồm kiểm tra xem có tham chiếu nào đang bị treo hay không, việc truy cập tham chiếu có thể thay đổi có an toàn hay không, v.v.
Nguồn gốc của lỗ hổng nằm ở việc tham chiếu một vấn đề tràn số nguyên trong mô-đun bảo mật. Khi tổng số lượng tham số hàm và số lượng biến cục bộ vượt quá 256, việc sử dụng loại u8 để lặp qua các biến cục bộ sẽ dẫn đến tràn số nguyên. Sự tràn này có thể bị lợi dụng để vượt qua kiểm tra an toàn, cuối cùng gây ra tấn công từ chối dịch vụ.
Cụ thể, quy trình khai thác lỗ hổng như sau:
Xây dựng một khối mã Move có chứa vòng lặp, để nó thực thi nhiều lần.
Thiết lập số lượng lớn các tham số hàm và biến cục bộ, làm cho tổng số của chúng vượt quá 256.
Ở lần thực hiện đầu tiên, do tràn số nguyên, chiều dài của bản đồ locals mới sẽ trở thành một giá trị rất nhỏ.
Trong quá trình thực thi tiếp theo, cố gắng truy cập vào chỉ số biến cục bộ không tồn tại, dẫn đến panic và sự cố chương trình.
Lỗ hổng này cho thấy rằng ngay cả những ngôn ngữ chú trọng đến an toàn như Move cũng có thể có những rủi ro an toàn bị bỏ qua. Nó nhắc nhở chúng ta về tầm quan trọng của việc kiểm tra mã và cần xem xét an toàn toàn diện hơn trong thiết kế ngôn ngữ.
Đối với người sử dụng và phát triển ngôn ngữ Move, nên chú ý theo dõi các cập nhật bảo mật chính thức. Đồng thời, khi viết mã Move, cũng cần chú ý kiểm soát số lượng tham số hàm và biến cục bộ, tránh kích hoạt các tình huống biên như vậy.
Từ góc độ vĩ mô hơn, lỗ hổng này cũng phản ánh rằng chỉ dựa vào xác minh tĩnh có thể không đủ để đảm bảo an toàn hoàn toàn. Trong tương lai, ngôn ngữ Move có thể cần thêm nhiều kiểm tra động trong thời gian chạy để ngăn chặn các vấn đề an ninh tương tự.
Tổng thể mà nói, việc phát hiện lỗ hổng này một lần nữa chứng minh tầm quan trọng của việc nghiên cứu an toàn liên tục trong việc nâng cao tính an toàn của công nghệ blockchain. Với việc ứng dụng ngôn ngữ Move trong lĩnh vực Web3 ngày càng mở rộng, chúng tôi mong đợi sẽ thấy nhiều biện pháp cải tiến an toàn hơn được đưa vào, nhằm xây dựng một hệ sinh thái hợp đồng thông minh mạnh mẽ và đáng tin cậy hơn.
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
17 thích
Phần thưởng
17
9
Chia sẻ
Bình luận
0/400
FUDwatcher
· 07-11 15:51
Lợi nhuận bị tràn mà tôi còn đang khoe vào tuần trước.
Xem bản gốcTrả lời0
PriceOracleFairy
· 07-10 20:42
ôi trời ơi, di chuyển đang bị hủy hoại bởi tràn ngập cơ bản u8... tại sao các kiểm toán viên lại bỏ lỡ điều này thật đáng tiếc
Ngôn ngữ Move đề cập đến lỗ hổng tràn số nguyên trong mô-đun an toàn, đe dọa đến an toàn mã.
Module an toàn tham chiếu của ngôn ngữ Move tồn tại lỗ hổng tràn số nguyên
Gần đây, một lỗ hổng tràn số nguyên nghiêm trọng đã được phát hiện trong mô-đun an toàn tham chiếu của ngôn ngữ Move. Lỗ hổng này có thể dẫn đến các cuộc tấn công từ chối dịch vụ, tạo ra mối đe dọa tiềm tàng đối với tính an toàn của ngôn ngữ Move.
Ngôn ngữ Move sẽ thực hiện xác minh mã trước khi thực thi bytecode, chia thành nhiều bước. Lỗ hổng này xuất hiện trong bước reference_safety, bước này có trách nhiệm xác minh tính an toàn của các tham chiếu, bao gồm kiểm tra xem có tham chiếu nào đang bị treo hay không, việc truy cập tham chiếu có thể thay đổi có an toàn hay không, v.v.
Nguồn gốc của lỗ hổng nằm ở việc tham chiếu một vấn đề tràn số nguyên trong mô-đun bảo mật. Khi tổng số lượng tham số hàm và số lượng biến cục bộ vượt quá 256, việc sử dụng loại u8 để lặp qua các biến cục bộ sẽ dẫn đến tràn số nguyên. Sự tràn này có thể bị lợi dụng để vượt qua kiểm tra an toàn, cuối cùng gây ra tấn công từ chối dịch vụ.
Cụ thể, quy trình khai thác lỗ hổng như sau:
Xây dựng một khối mã Move có chứa vòng lặp, để nó thực thi nhiều lần.
Thiết lập số lượng lớn các tham số hàm và biến cục bộ, làm cho tổng số của chúng vượt quá 256.
Ở lần thực hiện đầu tiên, do tràn số nguyên, chiều dài của bản đồ locals mới sẽ trở thành một giá trị rất nhỏ.
Trong quá trình thực thi tiếp theo, cố gắng truy cập vào chỉ số biến cục bộ không tồn tại, dẫn đến panic và sự cố chương trình.
Lỗ hổng này cho thấy rằng ngay cả những ngôn ngữ chú trọng đến an toàn như Move cũng có thể có những rủi ro an toàn bị bỏ qua. Nó nhắc nhở chúng ta về tầm quan trọng của việc kiểm tra mã và cần xem xét an toàn toàn diện hơn trong thiết kế ngôn ngữ.
Đối với người sử dụng và phát triển ngôn ngữ Move, nên chú ý theo dõi các cập nhật bảo mật chính thức. Đồng thời, khi viết mã Move, cũng cần chú ý kiểm soát số lượng tham số hàm và biến cục bộ, tránh kích hoạt các tình huống biên như vậy.
Từ góc độ vĩ mô hơn, lỗ hổng này cũng phản ánh rằng chỉ dựa vào xác minh tĩnh có thể không đủ để đảm bảo an toàn hoàn toàn. Trong tương lai, ngôn ngữ Move có thể cần thêm nhiều kiểm tra động trong thời gian chạy để ngăn chặn các vấn đề an ninh tương tự.
Tổng thể mà nói, việc phát hiện lỗ hổng này một lần nữa chứng minh tầm quan trọng của việc nghiên cứu an toàn liên tục trong việc nâng cao tính an toàn của công nghệ blockchain. Với việc ứng dụng ngôn ngữ Move trong lĩnh vực Web3 ngày càng mở rộng, chúng tôi mong đợi sẽ thấy nhiều biện pháp cải tiến an toàn hơn được đưa vào, nhằm xây dựng một hệ sinh thái hợp đồng thông minh mạnh mẽ và đáng tin cậy hơn.