Phân tích Mosca Hack

Bài viết này được dịch máy
Xem bản gốc

Vào ngày 8 tháng 1 năm 2025, hợp đồng Mosca trên BSC đã bị hack do lỗi khi cập nhật số dư của người dùng, dẫn đến mất khoảng 19.485 USD.

Tổng quan

Phân tích

Khi người dùng join(), họ được thêm vào rewardQueue. Từ nay, họ sẽ nhận được phần thưởng bất cứ khi nào người dùng khác buy() hoặc swap() Token.

Cảm ơn bạn đã đọc Verichains! Đăng ký miễn phí để nhận các bài đăng mới và ủng hộ công việc của tôi.

Khi người dùng quyết định rời đi, exitProgram() sẽ được gọi. Nó sẽ lặp qua rewardQueue, khi tìm thấy người dùng, nó sẽ gọi withdrawAll() để chuyển tất cả phần thưởng đang chờ đến cho người dùng.

Trong withdrawAll(), tổng phần thưởng của người dùng được tính như sau:
balance = user.balance + user.balanceUSDT + user.balanceUSDC
Tuy nhiên, trong exitProgram(), chỉ user.balance được đặt về 0, user.balanceUSDTuser.balanceUSDC vẫn giữ giá trị sau khi người dùng rời đi. Kẻ tấn công đã khai thác lỗ hổng này trong cuộc tấn công.

Kẻ tấn công đầu tiên join() giao thức và thành công gửi một số tài sản (bước 4). Sau đó, họ sử dụng một pool để thực hiện một Khoản vay nhanh (bước 15) và tạo một hoạt động buy() 'giả' (bước 23) để nhận phần thưởng cho chính họ. Cuối cùng, họ liên tục gọi join()exitProgram() để rút USDC khỏi hợp đồng.

Kết luận

Các nhà phát triển đã vi phạm mẫu Kiểm tra-Hiệu ứng-Tương tác và triển khai hợp đồng Mosca chỉ vài ngày trước khi bị hack, điều này có thể cho thấy họ đang chịu áp lực thời gian cao và sản phẩm thiếu kiểm tra. Để ngăn chặn các vấn đề như vậy, chúng tôi rất khuyến nghị thực hiện các quy trình kiểm tra an ninh nghiêm ngặt từ các giai đoạn ban đầu của quá trình phát triển và suốt cả vòng đời của dự án. Các cuộc kiểm tra an ninh định kỳ, đánh giá mã nguồn và đánh giá lỗ hổng nên là thực hành tiêu chuẩn để xác định và giải quyết các rủi ro tiềm ẩn trước khi chúng bị khai thác.

Cảm ơn bạn đã đọc Verichains! Đăng ký miễn phí để nhận các bài đăng mới và ủng hộ công việc của tôi.

Nguồn
Tuyên bố từ chối trách nhiệm: Nội dung trên chỉ là ý kiến của tác giả, không đại diện cho bất kỳ lập trường nào của Followin, không nhằm mục đích và sẽ không được hiểu hay hiểu là lời khuyên đầu tư từ Followin.
Thích
Thêm vào Yêu thích
Bình luận