Lỗi tràn số nguyên trong mô-đun bảo mật tham chiếu Move có thể dẫn đến Nút từ chối dịch vụ

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

Mô-đun an toàn tham chiếu ngôn ngữ Move tồn tại lỗ hổng tràn số nguyên

Gần đây, các nhà nghiên cứu an ninh đã phát hiện ra một lỗ hổng tràn số nguyên nghiêm trọng khi phân tích sâu về ngôn ngữ Move. Lỗ hổng này nằm trong mô-đun xác thực bảo mật tham chiếu, có thể dẫn đến các cuộc tấn công từ chối dịch vụ. Bài viết này sẽ giới thiệu chi tiết nguyên lý và ảnh hưởng của lỗ hổng này.

Bối cảnh lỗ hổng

Ngôn ngữ Move sẽ thực hiện xác minh mã trước khi thực thi bytecode, bao gồm kiểm tra an toàn tham chiếu. Quá trình này được chia thành nhiều bước, và lỗ hổng được phát hiện lần này xuất hiện trong giai đoạn xác minh reference_safety.

Quy trình chính của xác thực an toàn là:

  1. Chia mã thành các khối cơ bản
  2. Phân tích từng khối cơ bản
  3. Phân tích trạng thái trước và sau khi hợp nhất
  4. Truyền kết quả đến các khối tiếp theo

Trong đó sử dụng cấu trúc AbstractState để biểu thị trạng thái phân tích, bao gồm thông tin locals và đồ thị borrow.

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

Chi tiết lỗ hổng

Lỗi xuất hiện trong hàm join_ của trạng thái phân tích hợp nhất. Hàm này sử dụng kiểu u8 để lặp qua locals, nhưng nếu tổng chiều dài của tham số và chiều dài của biến cục bộ vượt quá 256, sẽ xảy ra tràn số nguyên.

Cụ thể là:

  • sử dụng self.iter_locals() để lặp qua locals trong hàm join_
  • iter_locals() trả về bộ lặp loại u8
  • Nếu chiều dài tham số + chiều dài biến cục bộ > 256, bộ lặp sẽ tràn.

Mặc dù 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 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 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 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 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 độ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 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

Khai thác lỗ hổng

Kẻ tấn công có thể xây dựng một khối mã vòng lặp, lợi dụng sự tràn để thay đổi trạng thái của khối:

  1. Số lượng tham số và biến cục bộ được thiết lập lớn hơn 256
  2. Sau lần thực hiện đầu tiên, độ dài của bản đồ locals mới sẽ tràn và trở nên nhỏ hơn.
  3. Khi thực thi lại, việc truy cập chỉ mục locals không tồn tại sẽ gây ra panic

Điều này có thể gây ra từ chối dịch vụ của nút.

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 nghiêm trọng khác trong 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

Ảnh hưởng của lỗ hổng

Lỗ hổng này có thể dẫn đến:

  1. Trình xác thực bytecode Move bị sập
  2. Các nút blockchain phụ thuộc vào Move từ chối dịch vụ
  3. Vượt qua một số kiểm tra an toàn

Đề xuất sửa chữa

  1. Thêm kiểm tra độ dài tham số trong kiểm tra biên locals.
  2. Sử dụng kiểu số nguyên lớn hơn như u16 để lặp qua locals
  3. Thêm kiểm tra an ninh bổ sung trong quá trình thực thi

Tóm tắt

Lỗ hổng này một lần nữa cho thấy ngay cả những ngôn ngữ được thiết kế chặt chẽ cũng có thể tồn tại rủi ro an ninh. Đối với ngôn ngữ Move, nên bổ sung các kiểm tra an ninh cần thiết không chỉ trong giai đoạn xác minh mà còn trong thời gian chạy. Các nhà nghiên cứu an ninh sẽ tiếp tục phân tích sâu ngôn ngữ Move để phát hiện thêm nhiều vấn đề tiềm ẩn.

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

MOVE1.86%
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
  • Đăng lại
  • Chia sẻ
Bình luận
0/400
BackrowObservervip
· 08-11 11:51
move lại một lần nữa thất bại
Xem bản gốcTrả lời0
MidnightTradervip
· 08-10 07:32
Đây lại là mã của ai mà tân binh viết vậy, quỳ quá.
Xem bản gốcTrả lời0
MevShadowrangervip
· 08-10 07:30
Lại đang chơi tràn số nguyên
Xem bản gốcTrả lời0
WagmiOrRektvip
· 08-10 07:29
Cũng may tôi đã đóng tất cả các vị thế Move trước đó.
Xem bản gốcTrả lời0
CommunityWorkervip
· 08-10 07:27
move lại sắp bùng nổ rồi? Hoảng gì vậy
Xem bản gốcTrả lời0
CryingOldWalletvip
· 08-10 07:26
Lại có lỗ hổng? move cũng không còn hấp dẫn nữa nhỉ.
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)