Phân tích sự cố hacker GMX, thiệt hại vượt quá 40 triệu đô la

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

GMX bị hacker tấn công, thiệt hại vượt quá 40 triệu đô la. Kẻ tấn công đã lợi dụng một lỗ hổng có thể nhập lại và mở vị thế đầu cơ giá xuống trong trường hợp hợp đồng kích hoạt chức năng đòn bẩy.

Nguyên nhân gốc rễ nằm ở việc sử dụng sai hàm executeDecreaseOrder. Tham số đầu tiên của hàm này lẽ ra phải là tài khoản bên ngoài (EOA), nhưng kẻ tấn công đã truyền vào một địa chỉ hợp đồng thông minh. Điều này cho phép kẻ tấn công có thể nhập lại hệ thống trong quá trình rút tiền, thao túng trạng thái nội bộ, cuối cùng rút được tài sản vượt xa giá trị GLP thực tế mà họ nắm giữ.

Cơ chế rút GLP bình thường

Trong GMX, GLP là token của nhà cung cấp thanh khoản, đại diện cho phần chia của tài sản trong kho (như USDC, ETH, WBTC). Khi người dùng gọi unstakeAndRedeemGlp, hệ thống sử dụng công thức sau để tính số lượng tài sản phải hoàn trả:

redeem_amount = (user_GLP / total_GLP_supply) * AUM

Trong đó AUM (tổng tài sản quản lý) được tính như sau:

AUM = Tổng giá trị của tất cả các nhóm token + Lỗ chưa thực hiện của vị thế đầu cơ giá xuống toàn cầu - Lãi chưa thực hiện của vị thế đầu cơ giá xuống toàn cầu - Số tiền đã dự trữ - Khoản khấu trừ được đặt trước (aumDeduction)

Cơ chế này đảm bảo rằng người nắm giữ GLP nhận được phần tài sản thực tế của kho theo tỷ lệ.

Vấn đề sau khi kích hoạt đòn bẩy

Khi enableLeverage được bật, người dùng có thể mở vị thế đòn bẩy (long hoặc short). Kẻ tấn công đã mở một vị thế short lớn WBTC trước khi rút GLP.

Do vị thế short ngay khi mở sẽ làm tăng quy mô vị thế short toàn cầu, hệ thống mặc định cho rằng vị thế này bị lỗ trong trường hợp giá chưa thay đổi, và phần lỗ chưa thực hiện này sẽ được tính là "tài sản" của kho, dẫn đến AUM tăng một cách nhân tạo. Mặc dù kho không thực sự nhận được giá trị bổ sung, nhưng việc tính toán rút sẽ dựa trên AUM bị đẩy cao này, do đó cho phép kẻ tấn công nhận được tài sản vượt xa những gì họ đáng được.

Quy trình tấn công

Giao dịch tấn công

https://app.blocksec.com/explorer/tx/arbitrum/0x03182d3f0956a91c4e4c8f225bbc7975f9434fab042228c7acdc5ec9a32626ef?line=93

AUM

AUM

Lời kết

Vụ tấn công này đã phơi bày những khiếm khuyết nghiêm trọng trong cơ chế đòn bẩy và thiết kế bảo vệ chống nhập lại của GMX. Vấn đề cốt lõi nằm ở chỗ logic rút tài sản quá tin tưởng vào AUM, không thực hiện xác minh an toàn đủ đối với các thành phần của nó (như lỗ chưa thực hiện). Đồng thời, giả định về danh tính người gọi của các hàm quan trọng (EOA so với hợp đồng) cũng thiếu xác thực bắt buộc. Sự kiện này một lần nữa nhắc nhở các nhà phát triển rằng trong các thao tác nhạy cảm với tiền bạc, phải đảm bảo rằng trạng thái hệ thống không thể bị thao túng, đặc biệt là khi giới thiệu các logic tài chính phức tạp (như đòn bẩy, phái sinh), cần phải đặc biệt cảnh giác với các rủi ro hệ thống do việc nhập lại và ô nhiễm trạng thái gây ra.

Khu vực:
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