
Phân tích vụ việc MOBOX bị tấn công
Tuyển chọn TechFlowTuyển chọn TechFlow

Phân tích vụ việc MOBOX bị tấn công
Vào ngày 14 tháng 3 năm 2024, giao thức cho vay phi tập trung MOBOX trên chuỗi Optimism đã bị tấn công, thiệt hại khoảng 750.000 đô la Mỹ.
Tác giả: Doris
Bối cảnh
Ngày 14 tháng 3 năm 2024, theo cảnh báo từ hệ thống giám sát an ninh MistEye của SlowMist, giao thức cho vay phi tập trung MOBOX trên chuỗi Optimism đã bị tấn công, thiệt hại khoảng 750.000 USD. Nhóm an ninh SlowMist đã tiến hành phân tích sự việc và chia sẻ kết quả như sau:

(https://twitter.com/SlowMist_Team/status/1768167772230713410)
Thông tin liên quan
Địa chỉ kẻ tấn công:
0x4e2c6096985e0b2825d06c16f1c8cdc559c1d6f8
0x96f004c81d2c7b907f92c45922d38ab870a53945
Địa chỉ hợp đồng bị tấn công:
0xae7b6514af26bcb2332fea53b8dd57bc13a7838e
Giao dịch tấn công:
0x4ec3061724ca9f0b8d400866dd83b92647ad8c943a1c0ae9ae6c9bd1ef789417
Cốt lõi vụ tấn công
Vụ tấn công lần này chủ yếu xoay quanh hai điểm then chốt. Thứ nhất, tin tặc đã lợi dụng lỗ hổng trong hàm borrow() của hợp đồng, mỗi lần gọi hàm này đều kích hoạt việc phân phối phần thưởng cho địa chỉ người giới thiệu. Vì phần thưởng được tính toán dựa trên số lượng token chuyển đi, nên kẻ tấn công có thể chuyển ngược lại phần thưởng nhận được cho người giới thiệu vào chính hợp đồng bị tấn công, qua đó làm tăng số lượng vay mượn trong lần tiếp theo. Thứ hai, mỗi lần gọi hàm borrow() sẽ đốt một phần token MO trong pool, dẫn đến giá token MO không ngừng tăng cao. Cuối cùng, tin tặc thu lợi bằng cách vay liên tục và tích lũy phần thưởng.
Phân tích giao dịch
Chúng ta có thể thấy toàn bộ quá trình tấn công chủ yếu là lặp đi lặp lại việc gọi hàm borrow() có lỗ hổng, sau đó ngay lập tức gọi hàm redeem() để rút tiền, rồi chuyển token thưởng dành cho người giới thiệu về lại hợp đồng tấn công.

Tiếp tục phân tích hàm borrow(), ta thấy mỗi lần gọi hàm này đều đốt một phần token MO trong pool.

Tuy nhiên, số lượng USDT được vay ra lại được tính toán dựa trên giá token MO trong pool. Do giá token MO liên tục tăng do bị đốt cháy, cuối cùng khiến kẻ tấn công có thể dùng một lượng rất nhỏ token MO để vay ra lượng lớn USDT.

Hơn nữa, mỗi lần vay mượn đều phân phối phần thưởng hoa hồng cho một địa chỉ người giới thiệu, và hàm này tính toán dựa trên số lượng token MO đầu vào.

Tuy nhiên, vì địa chỉ người giới thiệu cũng do chính kẻ tấn công (0x96f004c81d2c7b907f92c45922d38ab870a53945) kiểm soát, nên sau khi hoàn tất thao tác vay mượn, hắn có thể chuyển ngược phần thưởng này về, qua đó làm tăng số lượng vay và phần thưởng cho lần tiếp theo.

Sau các vòng lặp như trên, kẻ tấn công đã đẩy giá token MO lên cao, cuối cùng có thể dùng một lượng cực nhỏ token MO để vay ra toàn bộ lượng lớn USDT trong hợp đồng, rồi trực tiếp đổi hết USDT khỏi pool đang mất cân bằng, thu lợi và rút lui.

Tổng kết
Cốt lõi của vụ tấn công này nằm ở việc tin tặc tận dụng cơ chế đốt một phần token trong pool khi gọi hàm borrow(), liên tục vay tài sản, nâng cao giá token trong pool và nhận thưởng người giới thiệu, sau đó chuyển token về lại và tiếp tục vay, qua đó tích lũy phần thưởng và thao túng giá cả. Nhóm an ninh SlowMist khuyến nghị các dự án nên thêm thời gian khóa đối với các hàm chức năng tương tự, đồng thời xem xét nhiều yếu tố khác nhau khi thiết kế mô hình định giá cho vay nhằm tránh tái diễn các sự cố tương tự.
Chào mừng tham gia cộng đồng chính thức TechFlow
Nhóm Telegram:https://t.me/TechFlowDaily
Tài khoản Twitter chính thức:https://x.com/TechFlowPost
Tài khoản Twitter tiếng Anh:https://x.com/BlockFlow_News










