Lỗ hổng tràn số nguyên trong ngôn ngữ Move: Rủi ro khi tham chiếu xác thực an toàn

Ngôn ngữ Move lại xuất hiện lỗ hổng nghiêm trọng: Tràn số nguyên có thể dẫn đến Nút sập

Gần đây, các nhà nghiên cứu an ninh đã phân tích sâu về ngôn ngữ Move và phát hiện ra một lỗ hổng tràn số nguyên mới. Lỗ hổng này xuất hiện trong quá trình xác minh an toàn tham chiếu của ngôn ngữ Move, có thể dẫn đến việc Nút bị sập.

Ngôn ngữ Move sẽ thực hiện xác thực mã trước khi thực thi bytecode, chia thành bốn bước. Lỗ hổng được phát hiện lần này nằm trong bước reference_safety. Bước này chủ yếu được sử dụng để xác thực tính an toàn của các tham chiếu, bao gồm kiểm tra xem có tồn tại tham chiếu lơ lửng hay không, truy cập tham chiếu biến có an toàn hay không, v.v.

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

Sự kích hoạt của lỗ hổng liên quan đến khái niệm khối cơ bản trong ngôn ngữ Move. Khối cơ bản là một đoạn mã không có lệnh nhánh ngoài điểm vào và điểm ra. Move nhận diện khối cơ bản bằng cách duyệt mã byte và tìm lệnh nhánh.

Trong quá trình xác thực an toàn khi trích dẫn, hệ thống sẽ quét mã byte trong mỗi khối cơ bản để xác định xem tất cả các thao tác trích dẫn có hợp pháp hay không. Quá trình này sử dụng cấu trúc AbstractState, bao gồm hai thành phần quan trọng là borrow graph và locals.

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

Lỗi xuất hiện trong hàm join_. Khi tổng chiều dài tham số và chiều dài biến cục bộ vượt quá 256, do việc sử dụng kiểu u8 để biểu diễn chỉ số cục bộ, có thể xảy ra tràn số nguyên. Mặc dù Move có cơ chế kiểm tra số lượng locals, nhưng không bao gồm chiều dài tham số.

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

Bằng cách tận dụng lỗ hổng tràn này, kẻ tấn công có thể xây dựng một khối mã lặp lại để thay đổi trạng thái của khối. Khi khối cơ bản được thực thi lại, nếu chỉ thị cần truy cập chỉ mục không tồn tại trong bản đồ locals mới, điều này sẽ dẫn đến sự cố chương trình.

Các nhà nghiên cứu đã cung cấp một mã xác minh khái niệm (PoC), cho thấy cách kích hoạt lỗ hổng này. Bằng cách thiết lập các tham số cụ thể và số lượng biến cục bộ, độ dài của map locals có thể giảm xuống còn 8. Trong lần thực thi tiếp theo, việc cố gắng truy cập vào chỉ số không tồn tại 57 sẽ dẫn đến panic.

Numen Cyber phát hiện độc quyền 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 của ngôn ngữ move

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

Numen Cyber phát hiện độc quyền 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 cao trong ngôn ngữ move

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

Numen Cyber phát hiện độc quyền lỗ hổng cao nguy hiểm 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 độc quyề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 lỗ hổng cao nguy hiểm khác của ngôn ngữ move

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

Lỗ hổng này một lần nữa chứng minh rằng không có mã nào hoàn toàn an toàn. Mặc dù ngôn ngữ Move đã thực hiện kiểm tra tĩnh trước khi thực thi, nhưng vẫn có thể bị vượt qua bởi tràn số nguyên. Các nhà nghiên cứu khuyên các nhà thiết kế ngôn ngữ Move nên thêm nhiều mã kiểm tra hơn trong thời gian chạy để ngăn ngừa các vấn đề tương tự xảy ra.

Hiện tại, nhóm nghiên cứu đã phát hiện ra một lỗ hổng khác của ngôn ngữ Move, sẽ chia sẻ thêm chi tiết trong thời gian tới. Những phát hiện này có ý nghĩa quan trọng trong việc cải thiện tính an toàn của ngôn ngữ Move.

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

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
  • 4
  • Chia sẻ
Bình luận
0/400
PositionPhobiavip
· 18giờ trước
Mã này có bao nhiêu cái bẫy vậy, đi được một cái thì tính một cái.
Xem bản gốcTrả lời0
TradFiRefugeevip
· 18giờ trước
move này an toàn còn chơi gì nữa
Xem bản gốcTrả lời0
APY追逐者vip
· 18giờ trước
Lại sập, độ tin cậy của Move này...
Xem bản gốcTrả lời0
MemeEchoervip
· 18giờ trước
move lại gặp vấn đề rồi
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)