Hệ thống cảnh báo BlockSec Phalcon phát hiện lỗ hổng liên quan đến hàm transferFrom, gây thiệt hại khoảng 90.000 USD on-chain Base và cho thấy kiểm soát quyền truy cập không đầy đủ trong callback cho phép gọi thấp cấp tùy ý.
Vấn đề cho phép hợp đồng lạ thực hiện các cuộc gọi low-level trong hàm callback; giải pháp khuyến nghị là thu hồi tất cả quyền phê duyệt (approvals) cho địa chỉ hợp đồng 0xD9f4a3238154ff6439e37F98c9B11489353715Bb ngay lập tức để hạn chế rủi ro tiếp theo.
- Phát hiện lỗ hổng transferFrom dẫn đến mất ~90.000 USD on-chain Base.
- Nguyên nhân: kiểm soát quyền truy cập không đầy đủ; callback cho phép gọi low-level tùy ý.
- Hành động khuyến nghị: thu hồi tất cả approvals cho hợp đồng 0xD9f4a3238154ff6439e37F98c9B11489353715Bb.
Vấn đề tổng quan
Lỗ hổng liên quan đến hàm transferFrom đã bị phát hiện, dẫn tới tổn thất khoảng 90.000 USD on-chain Base.
Lỗ hổng xuất phát từ việc thiếu cơ chế kiểm soát quyền truy cập đủ chặt, cho phép thực thi các cuộc gọi low-level bên trong callback, làm lộ đường tấn công để rút tiền từ tài khoản đã cấp quyền.
Nguyên nhân kỹ thuật
Nguyên nhân chính là giao tiếp callback mà không kiểm soát chặt quyền gọi thấp cấp, kết hợp với approvals đã được cấp trước đó.
Khi hợp đồng nhận được callback, nếu không xác thực nguồn hoặc hạn chế các cuộc gọi low-level, kẻ tấn công có thể tận dụng approvals để chuyển Token qua transferFrom hoặc thực hiện các thao tác không mong muốn khác.
Rủi ro và ảnh hưởng
Tác động trực tiếp là mất tài sản on-chain Base và rủi ro tiếp tục nếu approvals vẫn còn hiệu lực cho hợp đồng xấu.
Ngay cả khi số tiền bị mất có thể được giới hạn, approvals mở cho hợp đồng không rõ nguồn gốc tạo ra nguy cơ rút tiền tiếp theo hoặc khai thác bổ sung trên các ví/địa chỉ đã cấp quyền.
Khuyến nghị hành động
Thu hồi ngay tất cả approvals đã cấp cho hợp đồng 0xD9f4a3238154ff6439e37F98c9B11489353715Bb và kiểm tra các hợp đồng tương tác với ví liên quan.
Thực hiện kiểm toán quyền truy cập, áp dụng xác thực nguồn trong callback, và cập nhật hợp đồng để loại trừ khả năng gọi low-level không kiểm soát.
Làm sao để thu hồi approvals?
Thu hồi approvals bằng cách gọi hàm approve( Token, spender, 0 ) hoặc sử dụng dịch vụ quản lý quyền trên ví để đặt allowance về 0 cho địa chỉ hợp đồng nghi ngờ.
Nên làm gì nếu đã bị mất tiền?
Ngừng mọi thao tác với ví liên quan, thu hồi approvals, kiểm tra logs giao dịch và thông báo cho cộng đồng dự án để hạn chế thiệt hại tiếp theo.
Làm sao phòng tránh tương lai?
Áp dụng nguyên tắc ít quyền nhất, kiểm tra approvals định kỳ, dùng multisig cho tài khoản quan trọng và audit hợp đồng trước khi tương tác.