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
Địa chỉ của kẻ tấn công: 0xb7d7240c207e094a9be802c0f370528a9c39fed5
Hợp đồng của kẻ tấn công: 0x851288dcfb39330291015c82a5a93721cc92507a
Giao dịch tấn công: 0x4e5bb7e3f552f5ee6ee97db9a9fcf07287aae9a1974e24999690855741121aff
Hợp đồng dễ bị tấn công: 0x1962b3356122d6a56f978e112d14f5e23a25037d
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.balanceUSDT và user.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() và 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.



