Mô-đun an toàn tham chiếu ngôn ngữ Move có lỗ hổng tràn số nguyên
Gần đây, các nhà nghiên cứu an ninh đã phát hiện một lỗ hổng tràn số nguyên mới trong mô-đun an toàn tham chiếu của ngôn ngữ Move. Lỗ hổng này xuất hiện trong bước reference_safety của quá trình xác minh mã, có thể dẫn đến tấn công từ chối dịch vụ.
Ngôn ngữ Move sẽ tiến hành xác minh mã trước khi thực thi bytecode, chia thành 4 bước. reference_safety là một trong những bước quan trọng, được sử dụng để xác minh tính an toàn của tham chiếu, bao gồm kiểm tra xem có tham chiếu không còn tồn tại hay không, việc truy cập tham chiếu thay đổi có an toàn hay không, v.v.
Lỗ hổng này xuất phát từ việc xử lý số lượng biến cục bộ trong quá trình xác thực an toàn tham chiếu. Trong hàm join_, nếu tổng số lượng tham số của hàm và số lượng biến cục bộ vượt quá 256, sẽ dẫn đến tràn số kiểu u8. Mặc dù ngôn ngữ Move có quy trình kiểm tra số lượng locals, nhưng chỉ kiểm tra số lượng biến cục bộ mà không bao gồm số lượng tham số.
Kẻ tấn công có thể tạo ra mã Move đặc biệt, lợi dụng lỗ hổng tràn này để thay đổi trạng thái của khối mã. Khi khối cơ bản được thực thi lại, nếu chỉ số cần truy cập trong lệnh không tồn tại trong ánh xạ biến cục bộ mới, sẽ dẫn đến panic, làm cho nút bị sập.
Các nhà nghiên cứu an ninh đã cung cấp một mã kiểm chứng khái niệm (PoC), thông qua việc thiết lập một lượng lớn tham số và biến cục bộ, kích hoạt tràn số nguyên, cuối cùng dẫn đến panic.
Lỗ hổng này lại một lần nữa cho thấy ngay cả những ngôn ngữ được thiết kế tốt cũng có thể tồn tại những rủi ro về an ninh. Đối với ngôn ngữ Move, nên đề xuất thêm nhiều kiểm tra an ninh hơn trong thời gian chạy, chứ không chỉ dựa vào các kiểm tra ở giai đoạn xác thực. Nó cũng phản ánh tầm quan trọng của việc kiểm toán mã, có thể phát hiện kịp thời những sơ suất của nhà phát triển.
Là những người tiên phong trong nghiên cứu an ninh của ngôn ngữ Move, đội ngũ an ninh cho biết sẽ tiếp tục nghiên cứu sâu hơn về các vấn đề an ninh của Move. Họ cũng đã phát hiện ra một lỗ hổng khác của ngôn ngữ Move và sẽ công bố thêm chi tiết trong thời gian tới.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
Lỗi tràn số nguyên trong mô-đun bảo mật tham chiếu Move có thể gây ra sự cố nút
Mô-đun an toàn tham chiếu ngôn ngữ Move có lỗ hổng tràn số nguyên
Gần đây, các nhà nghiên cứu an ninh đã phát hiện một lỗ hổng tràn số nguyên mới trong mô-đun an toàn tham chiếu của ngôn ngữ Move. Lỗ hổng này xuất hiện trong bước reference_safety của quá trình xác minh mã, có thể dẫn đến tấn công từ chối dịch vụ.
Ngôn ngữ Move sẽ tiến hành xác minh mã trước khi thực thi bytecode, chia thành 4 bước. reference_safety là một trong những bước quan trọng, được sử dụng để xác minh tính an toàn của tham chiếu, bao gồm kiểm tra xem có tham chiếu không còn tồn tại hay không, việc truy cập tham chiếu thay đổi có an toàn hay không, v.v.
Lỗ hổng này xuất phát từ việc xử lý số lượng biến cục bộ trong quá trình xác thực an toàn tham chiếu. Trong hàm join_, nếu tổng số lượng tham số của hàm và số lượng biến cục bộ vượt quá 256, sẽ dẫn đến tràn số kiểu u8. Mặc dù ngôn ngữ Move có quy trình kiểm tra số lượng locals, nhưng chỉ kiểm tra số lượng biến cục bộ mà không bao gồm số lượng tham số.
Kẻ tấn công có thể tạo ra mã Move đặc biệt, lợi dụng lỗ hổng tràn này để thay đổi trạng thái của khối mã. Khi khối cơ bản được thực thi lại, nếu chỉ số cần truy cập trong lệnh không tồn tại trong ánh xạ biến cục bộ mới, sẽ dẫn đến panic, làm cho nút bị sập.
Các nhà nghiên cứu an ninh đã cung cấp một mã kiểm chứng khái niệm (PoC), thông qua việc thiết lập một lượng lớn tham số và biến cục bộ, kích hoạt tràn số nguyên, cuối cùng dẫn đến panic.
Lỗ hổng này lại một lần nữa cho thấy ngay cả những ngôn ngữ được thiết kế tốt cũng có thể tồn tại những rủi ro về an ninh. Đối với ngôn ngữ Move, nên đề xuất thêm nhiều kiểm tra an ninh hơn trong thời gian chạy, chứ không chỉ dựa vào các kiểm tra ở giai đoạn xác thực. Nó cũng phản ánh tầm quan trọng của việc kiểm toán mã, có thể phát hiện kịp thời những sơ suất của nhà phát triển.
Là những người tiên phong trong nghiên cứu an ninh của ngôn ngữ Move, đội ngũ an ninh cho biết sẽ tiếp tục nghiên cứu sâu hơn về các vấn đề an ninh của Move. Họ cũng đã phát hiện ra một lỗ hổng khác của ngôn ngữ Move và sẽ công bố thêm chi tiết trong thời gian tới.