Flash loan chiếm được hai ghế quản trị, vụ X100 bị đánh cắp có ý nghĩa gì với ngành?
- Quan điểm cốt lõi: Dự án X100 do cơ chế quản trị DAO tồn tại lỗ hổng nghiêm trọng, hacker đã lợi dụng flash loan vay vốn để chiếm ghế quản trị, thông qua đề xuất độc hại chuyển tài sản kho bạc với giá thấp, gây thiệt hại khoảng 4,85 triệu USDT trong một ngày, token X lao dốc hơn 96%, phơi bày rủi ro an ninh hệ thống của quản trị phi tập trung.
- Yếu tố then chốt:
- Kho bạc X100 do ba ghế "Thượng viện" quản lý, không có thời gian chờ hiệu lực quyền quản trị, cùng một người kiểm soát có thể chiếm ghế qua nhiều địa chỉ, và đề xuất được thực thi ngay sau khi thông qua.
- Hacker vay khoảng 1,94 triệu USDT flash loan để mua token X, chỉ với số dư đóng băng nhiều hơn một phần triệu token đã chiếm được hai ghế, ngay sau đó trong cùng một giao dịch thông qua đề xuất độc hại, bán 400.000 token X với giá khoảng 35,68 USD.
- Khoảng 24 phút sau đợt tấn công đầu tiên, hacker thứ hai lợi dụng cùng cơ chế chiếm thêm hai ghế, thu lợi khoảng 96.400 USDT; kẻ tấn công thứ ba mượn hợp đồng phụ trợ của kẻ trước đó trực tiếp chuyển đi khoảng 550.000 token X, cả ba đợt tấn công đều hoàn thành trong vòng nửa giờ.
- Năm nay các cuộc tấn công quản trị tương tự liên tục xảy ra: Bonk DAO thiệt hại khoảng 20,5 triệu USD, Term Finance thiệt hại khoảng 8,5 triệu USD, Arkadiko thiệt hại khoảng 1,09 triệu USD.
- Ngưỡng của một số cuộc tấn công bất thành cực thấp—kẻ tấn công Moonwell chỉ chi khoảng 1.808 USD, kẻ tấn công Olas chỉ chi khoảng 135 USD đã đạt ngưỡng đề xuất, cho thấy kẻ tấn công không cần nắm đa số phiếu, chỉ cần có tư cách đề xuất là có thể tạo cơ hội tấn công.
Nguyên bản | Odaily
Tác giả | Asher(@Asher_0210)

Ngày 24 tháng 10, dự án DeFi trên Ethereum X100 đã bị tấn công quản trị, khoảng 4,85 triệu USDT bị đánh cắp. Theo dữ liệu từ GMGN , vốn hóa của token X đã giảm từ khoảng 760 triệu USD trước cuộc tấn công xuống còn khoảng 24 triệu USD, mức giảm trong một ngày vượt quá 96%.

Kho bạc vốn được quản lý chung bởi ba ghế "Thượng viện", đã bị hacker chiếm được hai trong số đó bằng nguồn vốn vay flash loan. Sau khi nắm được đa số phiếu, hacker đã đệ trình một đề xuất độc hại, rồi dùng chính các ghế do mình kiểm soát để bỏ phiếu thông qua, khiến kho bạc phê duyệt giao dịch chuyển tài sản cho chính hacker. Sau khi vòng tấn công đầu tiên thành công, các kẻ tấn công khác liên tiếp lợi dụng cùng cơ chế quản trị này để tiếp tục chuyển đi tài sản của dự án.
Dưới đây, Odaily sẽ điểm lại toàn bộ quá trình của cuộc tấn công quản trị này, cũng như những rủi ro bảo mật trong quản trị DAO mà sự kiện X100 đã phơi bày.
Vay 1,94 triệu USD, hacker đã chiếm hai ghế "Thượng viện" như thế nào?
Kho bạc của X100 được quản lý bởi một "Thượng viện" gồm ba ghế, các thành viên bỏ phiếu quyết định việc bán token kho bạc, cung cấp thanh khoản và các hoạt động khác. Chỉ cần kiểm soát được hai trong số ba ghế là có thể thông qua đề xuất, điều động tài sản kho bạc. Người nắm giữ nạp token dự án X vào hợp đồng Freezer, chọn khóa trong một năm, ba năm hoặc năm năm, sau đó trả 100 X làm phí đăng ký để tham gia tranh cử. Ba ghế được sắp xếp theo thời gian thực dựa trên số dư khóa hiện tại của địa chỉ ứng cử, ba địa chỉ đứng đầu sẽ có quyền quản trị.
Cơ chế này không giới hạn việc cùng một người kiểm soát có thể giành ghế thông qua nhiều địa chỉ, cũng không có thời gian chờ trước khi quyền quản trị có hiệu lực. Kẻ tấn công chỉ cần khiến số dư khóa của hai địa chỉ do mình kiểm soát đồng thời lọt vào top ba là có thể ngay lập tức nắm được đa số phiếu; đề xuất được thông qua lại có thể thực thi ngay lập tức, khiến việc chiếm ghế và chuyển tài sản có thể hoàn thành trong cùng một giao dịch.
Trước khi cuộc tấn công xảy ra, địa chỉ giữ ghế thứ hai đã khóa khoảng 19.000 X. Lúc 22 giờ 11 phút ngày 24 tháng 10, hacker đã vay khoảng 1,94 triệu USDT qua flash loan của Aave, mua X và phân bổ cho hai hợp đồng phụ trợ, lần lượt hoàn thành việc khóa và tranh cử. Mỗi hợp đồng khóa 19.000,000001 X, chỉ nhiều hơn ghế thứ hai cũ một phần triệu token, đã đồng thời chiếm được ghế thứ hai và thứ ba, đẩy ghế thứ hai cũ ra khỏi danh sách quản trị.
Sau khi có được đa số phiếu, hacker đã khiến tài sản kho bạc chảy vào tay mình như thế nào?
Hai phiếu thuận, khiến kho bạc bán 400.000 X với giá 35,68 USD
Sau khi chiếm được hai ghế, hacker ngay lập tức đệ trình đề xuất độc hại, yêu cầu kho bạc bán 400.000 X vào pool PancakeSwap V3 X/USDT do chính mình tạo ra, đồng thời đặt số lượng nhận tối thiểu bằng không, rồi thông qua một hợp đồng khác do mình kiểm soát để bỏ phiếu ủng hộ, khiến đề xuất nhận được hai phiếu thuận và được thực thi ngay lập tức. Theo phân tích của GoPlus, X100 cho phép đề xuất quản trị chỉ định pool giao dịch, nhưng lại thiếu biện pháp bảo vệ hiệu quả về giá trị giao dịch tối thiểu. Hacker vừa có thể quyết định kho bạc bán token ở đâu, vừa có thể tự đặt điều kiện giao dịch, rồi dùng đa số phiếu do mình kiểm soát để phê duyệt giao dịch.
Pool nói trên được hacker tạo ra trong cùng giao dịch đó, chỉ bơm vào khoảng 100 USD thanh khoản. Khi kho bạc bán 400.000 X vào đó, pool chỉ có thể trả một lượng nhỏ USDT, mà số lượng nhận tối thiểu lại bằng không, khiến giao dịch không bị thất bại vì lợi tức quá thấp. Cuối cùng, kho bạc đã giao ra 400.000 X, chỉ đổi lại được khoảng 35,68 USD. Hacker sau đó rút thanh khoản khỏi pool tự tạo, lấy lại lượng X trong đó, rồi bán một phần token vào pool giao dịch Uniswap V3 X/USDT đã có sẵn để đổi lấy USDT. Sau khi trả các khoản chi phí như flash loan, hacker đầu tiên thu lợi khoảng 4,75 triệu USDT.
Từ việc vay tiền mua token, chiếm ghế, đến việc phê duyệt kho bạc bán token giá thấp, chốt lời và trả nợ, tất cả đều được hoàn thành trong cùng một giao dịch. Token mà kho bạc giao ra trở thành con bài để hacker chốt lời, còn USDT trong pool giao dịch thật thì được dùng để trả khoản vay, và chuyển hóa thành lợi nhuận của cuộc tấn công.
Các cuộc tấn công tiếp theo liên tiếp xảy ra, dòng tiền bị đánh cắp đã đi đâu?
Khoảng 24 phút sau vòng tấn công đầu tiên, hacker thứ hai lại chiếm được hai ghế quản trị thông qua flash loan, gỡ bỏ một phần vị thế thanh khoản Uniswap V3 do Freezer nắm giữ, và tiếp tục chuyển đi tài sản bằng pool giao dịch tự tạo, thu được khoảng 96.400 USDT. Khoảng năm phút sau, ví thứ ba lợi dụng hợp đồng phụ trợ mà hacker thứ hai để lại, vốn không giới hạn người gọi, trực tiếp mượn ghế quản trị của hắn để thông qua đề xuất, chuyển đi khoảng 550.000 X. Hai vòng tấn công đầu tiên gây thiệt hại tổng cộng khoảng 4,85 triệu USDT, vòng tấn công thứ ba chuyển đi thêm khoảng 550.000 X, cả ba vòng tấn công diễn ra trong chưa đầy nửa giờ.
Theo dấu vết của Bitquery, hacker đầu tiên đã đổi phần lớn lợi nhuận USDT sang ETH trong vòng vài phút sau cuộc tấn công, sau đó phân tán đến năm ví, tổng cộng khoảng 2.022,86 ETH. Hacker thứ hai thì đổi USDT sang ETH, chuyển qua địa chỉ trung gian đến ChangeNOW, toàn bộ quá trình chuyển khoản mất khoảng 21 phút.
Một khi quyền quản trị bị mất, việc chuyển tài sản nhanh chóng từ một cuộc tấn công đơn lẻ của hacker đầu tiên, biến thành việc rút ruột liên tiếp với sự tham gia của nhiều ví. Những người tham gia sau thậm chí không cần mua lại token để tranh cử, mà vẫn có thể lợi dụng quyền hạn sẵn có để tiếp tục chuyển đi tài sản.
Thế giới on-chain với chi phí tấn công quản trị ngày càng thấp
X100 không phải là trường hợp cá biệt, và tấn công quản trị cũng không nhất thiết đòi hỏi hacker phải đầu tư trước một khoản tiền lớn. Kẻ tấn công vừa có thể mua token để có quyền bỏ phiếu, vừa có thể lợi dụng ngưỡng đề xuất thấp để tìm cơ hội, mà flash loan còn khiến nguồn vốn vay được có thể tham gia vào việc cướp quyền quản trị.
Từ đầu năm nay, các cuộc tấn công quản trị tương tự đã nhiều lần gây thiệt hại lớn. Tháng 7, kẻ tấn công Bonk DAO đã chi khoảng 4,09 triệu USD để mua lượng token chiếm 1,003% nguồn cung, vừa vượt ngưỡng phê duyệt quản trị, sau đó thông qua đề xuất độc hại chuyển đi khoảng 20,5 triệu USD tài sản, và còn lấy lại token đã stake sau khi bỏ phiếu xong. Tháng 8, Term Finance bị thiệt hại khoảng 8,5 triệu USD do tấn công quản trị. Ngay cả khi cần đầu tư hàng triệu USD để mua quyền bỏ phiếu, khoản tiền đó cũng chưa chắc là chi phí cuối cùng mà kẻ tấn công phải gánh chịu.
Ngưỡng của một số cuộc tấn công bất thành thậm chí chỉ vài trăm USD. Tháng 3 năm nay, kẻ tấn công Moonwell chỉ chi khoảng 1.808 USD để mua MFAM và tự ủy quyền, đã đệ trình đề xuất độc hại, nhằm giành quyền quản lý bảy thị trường cho vay và hợp đồng cốt lõi liên quan đến khoảng 1,08 triệu USD tiền của người dùng. Tháng 9, kẻ tấn công Olas chỉ chi khoảng 135 USD để khóa 5.100 OLAS, đã vượt ngưỡng đề xuất. Dù cả hai cuộc tấn công đều bị chặn, nhưng điều đó cho thấy kẻ tấn công không nhất thiết phải nắm đa số phiếu, chỉ cần có được tư cách đề xuất cũng đủ tạo ra cơ hội tấn công.
Ngày 22 tháng 10, Arkadiko cũng bị tấn công quản trị. Kẻ tấn công mua đủ lượng DIKO, tự mình bỏ phiếu thông qua đề xuất đưa vào hợp đồng độc hại, trong quá trình đó không có phiếu phản đối nào, ước tính thiệt hại khoảng 1,09 triệu USD.
Quyền quản trị có thể vay được, bỏ phiếu thông qua là có thể chuyển đi tài sản. Khi quyền kiểm soát kho bạc dễ dàng đổi chủ đến vậy, cái gọi là quản trị phi tập trung, rốt cuộc có thể bảo vệ ai?


