Slow Mist: Phân tích ngắn gọn về việc Stars Arena bị hack

lý lịch

Theo cảnh báo bảo mật hệ thống SlowMist MistEye, vào ngày 7 tháng 10 năm 2023, Stars Arena, giao thức xã hội trên chuỗi Avalanche, đã bị tấn công gây thiệt hại khoảng 2,9 triệu USD. Nhóm bảo mật SlowMist đã phân tích ngắn gọn sự cố tấn công và chia sẻ kết quả như sau.

Thông tin liên quan

Địa chỉ của kẻ tấn công:

Hợp đồng tấn công:

Giao dịch tấn công:

Lõi tấn công

Kẻ tấn công khai thác lỗ hổng đăng nhập lại để giả mạo giá tương ứng với cổ phần tiền gửi của mình. Sau này, khi bán, hành vi thao túng giá tương tự cũng xảy ra do sự phụ thuộc vào việc tính giá của hành vi thao túng ác ý. Bằng cách tính toán chính xác giá cổ phiếu được cập nhật khi truy cập lại, kẻ tấn công sẽ đánh cắp tiền từ hợp đồng.

Phân tích giao dịch

Chúng tôi có thể thấy rằng có một lệnh gọi được gửi lại trong giao dịch tấn công và chúng tôi dần dần phân tích phương thức gọi bằng cách giải mã mã.

Kẻ tấn công lần đầu tiên tạo các hợp đồng tấn công (0x7f283 và 0xdd9af), được gọi là phương thức 0xe9ccf3a3 của Stars Arena: Hợp đồng chia sẻ thông qua hợp đồng tấn công, sau đó gửi 1 mã thông báo AVAX.

Theo theo dõi từng bước của mã được dịch ngược, phương thức 0xe9ccf3a3 được kẻ tấn công sử dụng lần đầu tiên là một chức năng tương tự như tiền gửi, gọi phương thức 0x326c và 0x2058. Phương thức 0x326c chỉ là một cuộc gọi được trả về dưới dạng tham số, trong khi phương thức 0x2058 tương tự như một hàm xử lý việc mua hoặc trao đổi một mã thông báo nhất định. Phương thức này sử dụng số lượng mã thông báo AVAX và địa chỉ được truyền trong 0xe9ccf3a3 để thực hiện thao tác tiếp theo , chia sẻ và tính phí.

Theo logic gọi dòng 92 của phương thức 0x2058, chúng ta có thể thấy rằng phương thức 0x1a9b là một hàm tính toán. Kết quả được tính toán là một giá trị tương tự như giá và giá trị trả về của nó là v24 / 0xde0b6b3a7640000 hoặc _initialPrice mới được tính toán.

Có các lệnh gọi cấp thấp trong phương thức 0x307c và 0x30ef trên các dòng 109, 110 và 116, và lệnh gọi 0x30ef vẫn là lệnh gọi bên ngoài tới g1, là địa chỉ hợp đồng tấn công 0xdd9af đến. Hàm này không có ràng buộc khóa chống truy cập lại và sau khi lệnh gọi bên ngoài được thực thi, phương thức này sẽ thực thi phán quyết if tiếp theo để cập nhật các tham số field0.length và field0. Không có nghi ngờ gì rằng sự quay trở lại xảy ra ở đây.

Chúng ta hãy xem dữ liệu do kẻ tấn công xây dựng trong cuộc gọi lại.

Lệnh gọi bên ngoài được gửi lại là phương thức 0x5632b2e4 và 4 tham số do kẻ tấn công xây dựng được truyền vào. Các tham số này được chuyển đổi thành 91000000000 thông qua chuyển đổi thập lục phân.

Như đã đề cập ở trên, lệnh gọi bên ngoài tới phương thức 0x5632b2e4 được thực thi trước phán quyết if (g0 == _getMyShares[address(g1)][msg.sender]). Tại thời điểm này, giá trị của field0.lengt là 0 và chưa được cập nhật. Kẻ tấn công vừa sử dụng phương pháp này để bỏ qua phán đoán trong phương thức 0x5632b2e4 và thay đổi bốn trạng thái tham số sau của msg.sender, tức là hợp đồng tấn công 0xdd9af, thành dữ liệu được xây dựng khi thực hiện lệnh gọi bên ngoài.

Sau các hoạt động trên, kẻ tấn công đã gọi sellShares để bán cổ phần của mình và thu được 266.102,97278 AVAX.

Đi sâu vào hàm sellShares, hàm này đầu tiên được gọi là phương thức 0x1a9b và có một lệnh gọi trong phương thức 0x2058 trước đó, đây là một hàm xử lý việc mua hoặc trao đổi một số mã thông báo nhất định. Chúng ta có thể thấy rằng phương thức 0x2329 trong phương thức 0x1a9b sẽ cập nhật owner_9f [g0] và tham số này đã được sửa đổi thành 91000000000 do kẻ tấn công tạo ra trong quá trình nhập lại.

Quay lại phương thức 0x1a9b và tính toán lại dựa trên giá trị được tạo độc hại trước đó (xem nhận xét để biết số tiền tính toán).

Sau phép tính trên, giá tương ứng với cổ phần mới tính đã thay đổi, kết quả tính được là 274.333.061476814e18. Sau một loạt lần thu phí, kẻ tấn công đã sử dụng một cấu trúc độc hại để thao túng giá mà không sửa đổi cổ phiếu, bán cổ phiếu và kiếm được lợi nhuận thành công.

Tóm tắt

Cốt lõi của cuộc tấn công này nằm ở bản cập nhật phụ thuộc tính toán giá do cuộc tấn công reentrancy gây ra, từ đó dẫn đến hành vi thao túng giá độc hại tương tự. Nhóm bảo mật SlowMist khuyến nghị bên dự án nên cố gắng hết sức để trải qua quá trình kiểm tra của nhiều công ty bảo mật trước khi triển khai và phát hành hợp đồng; đồng thời, đặc tả mã hóa Kiểm tra-Hiệu ứng-Tương tác phải được đáp ứng nhiều nhất có thể khi mã hóa, và nên bổ sung thêm khóa chống quay lại.

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
  • Bình luận
  • Chia sẻ
Bình luận
0/400
Không có bình luận
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)