Mô-đun bảo mật ngôn ngữ Move phát hiện lỗ hổng tràn số nguyên mới

robot
Đang tạo bản tóm tắt

Phát hiện lỗ hổng tràn số nguyên mới trong mô-đun bảo mật tham chiếu của ngôn ngữ Move

Gần đây, trong quá trình nghiên cứu sâu về ngôn ngữ Move, đã phát hiện ra một lỗ hổng tràn số nguyên mới. Lỗ hổng này tồn tại trong mô-đun xác minh an toàn tham chiếu, quá trình kích hoạt của nó khá thú vị. Bài viết này sẽ phân tích sâu về lỗ hổng này, đồng thời giới thiệu kiến thức nền tảng liên quan đến ngôn ngữ Move.

Numen Cyber phát hiện độc quyền một lỗ hổng nghiêm trọng khác trong ngôn ngữ move

Ngôn ngữ Move sẽ xác minh các đơn vị mã trước khi thực thi bytecode, và toàn bộ quá trình xác minh chia thành 4 bước. Lỗ hổng được phát hiện lần này xuất hiện trong bước reference_safety.

Mô-đun xác minh an toàn chịu trách nhiệm kiểm tra xem có tồn tại tham chiếu lơ lửng hay không, việc truy cập tham chiếu có thể thay đổi có an toàn hay không, việc truy cập tham chiếu lưu trữ toàn cầu có an toàn hay không, v.v. Quá trình xác minh bắt đầu từ hàm analyze_function, xác minh từng khối cơ bản.

Trong ngôn ngữ Move, khối cơ bản là một dãy mã không có chỉ thị nhánh ngoại trừ đầu vào và đầu ra. Hệ thống xác định khối cơ bản bằng cách duyệt mã byte, tìm tất cả các chỉ thị nhánh và chu trình.

Numen Cyber phát hiện độc quyền một lỗ hổng nghiêm trọng khác trong ngôn ngữ move

Ngôn ngữ Move hỗ trợ hai loại tham chiếu: tham chiếu không thay đổi (&) và tham chiếu thay đổi (&mut). Mô-đun an toàn tham chiếu sẽ quét các chỉ thị bytecode trong từng khối cơ bản của hàm, xác định tất cả các thao tác tham chiếu có hợp pháp hay không. Quá trình xác minh sử dụng cấu trúc AbstractState, bao gồm đồ thị mượn và hai thành phần locals, nhằm đảm bảo tính an toàn của các tham chiếu trong hàm.

Numen Cyber phát hiện độc quyền lỗ hổng nghiêm trọng khác trong ngôn ngữ move

Trong quá trình xác minh, hệ thống sẽ thực hiện việc tạo mã khối cơ bản để tạo ra trạng thái sau (post state), sau đó sẽ hợp nhất trạng thái trước (pre state) và trạng thái sau để cập nhật trạng thái khối. Nếu trạng thái thay đổi và có vòng lặp, thì khối cơ bản sẽ được thực hiện lại cho đến khi trạng thái sau bằng với trạng thái trước hoặc xảy ra lỗi.

Numen Cyber phát hiện độc quyền một lỗ hổng nghiêm trọng khác của ngôn ngữ move

Lỗi xuất hiện trong hàm join_. Khi độ dài tham số cộng với độ dài biến cục bộ vượt quá 256, việc sử dụng loại u8 để lặp qua locals sẽ gây ra tràn số nguyên. 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 độ dài tham số.

Numen Cyber phát hiện độc quyền một lỗ hổng nghiêm trọng khác của ngôn ngữ move

Sự tràn số nguyên này có thể dẫn đến tấn công từ chối dịch vụ. Kẻ tấn công có thể tạo ra một khối mã lặp lại, lợi dụng sự tràn để thay đổi trạng thái của khối. Khi hàm execute_block được thực thi lại, nếu chỉ số mà lệnh cần truy cập không có trong bản đồ locals của AbstractState mới, điều đó sẽ dẫn đến sự cố hệ thống.

Numen Cyber phát hiện độc quyền lỗ hổng cao nguy hiểm khác của ngôn ngữ move

Để minh họa lỗ hổng này, chúng ta có thể xây dựng một khối cơ bản chứa các lệnh nhánh vô điều kiện. Bằng cách thiết lập các tham số phù hợp và số lượng biến cục bộ, có thể làm cho độ dài của locals map tràn ra 8. Trong lần thực hiện thứ hai, việc cố gắng truy cập offset không tồn tại sẽ dẫn đến panic.

Numen Cyber phát hiện độc quyền một lỗ hổng nghiêm trọng khác trong ngôn ngữ move

Numen Cyber phát hiện độc quyền một lỗ hổng nghiêm trọng khác trong ngôn ngữ move

Numen Cyber phát hiện lỗ hổng nghiêm trọng khác của ngôn ngữ move

Phát hiện độc quyền từ Numen Cyber về lỗ hổng nghiêm trọng trong ngôn ngữ move

Numen Cyber phát hiện độc quyền lỗ hổng cao trong ngôn ngữ move

Numen Cyber phát hiện độc quyền một lỗ hổng nghiêm trọng khác trong ngôn ngữ move

Numen Cyber phát hiện lỗ hổng nghiêm trọng khác của ngôn ngữ move

Numen Cyber phát hiện độc quyền một lỗ hổng nghiêm trọng khác trong ngôn ngữ move

Lỗ hổng này nhắc nhở chúng ta rằng ngay cả những ngôn ngữ được thiết kế cẩn thận cũng có thể tồn tại rủi ro an ninh. Đối với ngôn ngữ Move, nên bổ sung thêm nhiều mã kiểm tra trong quá trình thực thi để ngăn ngừa các tình huống bất ngờ. Hiện tại, Move chủ yếu thực hiện kiểm tra an ninh trong giai đoạn xác minh, nhưng một khi việc xác minh bị bỏ qua, có thể gây ra những vấn đề nghiêm trọng hơn.

Là những người tiên phong trong nghiên cứu an ninh ngôn ngữ Move, chúng tôi sẽ tiếp tục khám phá sâu hơn các vấn đề an ninh liên quan, đóng góp vào sự phát triển khỏe mạnh của hệ sinh thái Move.

Numen Cyber phát hiện độc quyền một lỗ hổng nghiêm trọng khác của ngôn ngữ move

MOVE-0.45%
Xem bản gốc
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.
  • Phần thưởng
  • 6
  • Chia sẻ
Bình luận
0/400
TokenUnlockervip
· 13giờ trước
Sao lại là tràn số nguyên nữa vậy?
Xem bản gốcTrả lời0
BearMarketGardenervip
· 20giờ trước
move lại gặp sự cố rồi à
Xem bản gốcTrả lời0
RunWithRugsvip
· 08-02 18:07
Sao lại có lỗ hổng an ninh nữa vậy?
Xem bản gốcTrả lời0
TestnetFreeloadervip
· 08-02 18:07
Lại có bề mặt tấn công rồi, tốt quá!
Xem bản gốcTrả lời0
JustAnotherWalletvip
· 08-02 18:02
Lại có chuyện xảy ra, kiểm tra phải chịu trách nhiệm.
Xem bản gốcTrả lời0
LiquidityNinjavip
· 08-02 18:01
Lại phải sửa move hehe
Xem bản gốcTrả lời0
  • Ghim
Giao dịch tiền điện tử mọi lúc mọi nơi
qrCode
Quét để tải xuống ứng dụng Gate
Cộng đồng
Tiếng Việt
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)