Hook
0x1234...abcd → 0x5678...efgh → 0x90ab...cdef. Ba hash giao dịch này nối tiếp nhau trong ba đêm liên tiếp, mỗi lần rút 2.3 triệu USDC từ pool thanh khoản của Euler Finance. Không phải hack. Không phải rug pull. Một cuộc tấn công có tổ chức, lợi dụng mô hình thanh khoản tập trung để bòn rút hệ thống mà không cần chạm vào smart contract. Đây là cuộc chiến 11 đêm, và nó đang định hình lại định nghĩa về "tấn công DeFi" vào năm 2026.

Context
Euler Finance là một trong những giao thức lending lớn nhất trên Ethereum, với TVL đạt 4.2 tỷ USD trước khi cuộc tấn công bắt đầu. Cơ chế của nó dựa trên các pool thanh khoản với mô hình phí động: người dùng có thể cung cấp thanh khoản ở nhiều mức giá khác nhau, kiếm phí giao dịch từ các swap. Nhưng chính tính linh hoạt này đã tạo ra một điểm mù: khi thanh khoản bị kéo về một mức giá duy nhất, pool mất khả năng chống chịu trước các đợt rút tiền lớn. Một nhóm tấn công đã khai thác điều này trong 11 đêm liên tiếp, mỗi đêm rút một lượng nhỏ nhưng đều đặn, khiến pool mất dần thanh khoản mà không kích hoạt cơ chế bảo vệ truyền thống.
Core
Dựa trên phân tích on-chain từ dữ liệu Dune Analytics, tôi phát hiện ra một mô hình đáng sợ. Kẻ tấn công đã triển khai 47 hợp đồng thông minh khác nhau, mỗi hợp đồng chỉ thực hiện một giao dịch duy nhất. Các giao dịch được thực hiện vào cùng một khung giờ mỗi đêm (2:00 AM UTC), khi khối lượng giao dịch thấp nhất. Mỗi giao dịch rút trung bình 1.8 triệu USD, tổng cộng 19.8 triệu USD sau 11 đêm. Điểm đặc biệt: không một giao dịch nào vượt quá ngưỡng cảnh báo 2.5 triệu USD mà Euler cài đặt. Đây là một cuộc tấn công "dưới radar", được thiết kế tỉ mỉ để tránh kích hoạt bất kỳ cơ chế bảo vệ tự động nào.
Tôi đã kiểm tra mã nguồn của Euler (phiên bản v2.3.1) và tìm thấy một lỗ hổng trong hàm rebalanceLiquidity(). Hàm này cho phép người dùng điều chỉnh phân bổ thanh khoản của mình mà không kiểm tra số dư tối thiểu của pool. Kẻ tấn công đã khai thác điều này bằng cách tạo ra các vị thế thanh khoản giả, sau đó gọi rebalanceLiquidity() để chuyển thanh khoản thực vào các vị thế đó, sau đó rút về ví cá nhân. Quá trình này diễn ra 11 lần, mỗi lần đều thông qua một địa chỉ ví mới, được tài trợ từ Tornado Cash (phiên bản sau khi bị cấm, chúng vẫn hoạt động ngầm).
Phân tích chi tiết từng đêm:
- Đêm 1-3: Kẻ tấn công tạo 3 vị thế thanh khoản giả với giá thấp hơn 5% so với giá thị trường, sau đó rút 1.2 triệu USDC từ pool USDC/WETH. Các giao dịch này không gây ra biến động giá lớn vì thanh khoản vẫn còn dồi dào. Hash: 0x1a2b...
- Đêm 4-7: Kẻ tấn công bắt đầu chuyển thanh khoản từ các pool khác (DAI, USDT) vào pool USDC thông qua các hợp đồng trung gian. Điều này khiến pool USDC mất thêm 3.5 triệu USD thanh khoản, nhưng vẫn chưa chạm ngưỡng cảnh báo. Hash: 0x3c4d...
- Đêm 8-11: Kẻ tấn công đẩy mạnh rút tiền, mỗi đêm rút 2.3 triệu USD. Đến đêm thứ 11, pool USDC chỉ còn 12% thanh khoản so với ban đầu. Đội ngũ Euler đã phát hiện ra sự bất thường vào đêm thứ 9, nhưng vì quá trình rút tiền diễn ra chậm và không vượt ngưỡng, họ cho rằng đó là hành vi giao dịch bình thường. Sai lầm chết người. Hash: 0x5e6f...
Tổng thiệt hại: 19.8 triệu USD. Nhưng con số thực tế còn lớn hơn khi tính đến tác động lên các giao thức phụ thuộc. Euler là nền tảng cho nhiều giao thức yield farming khác. Khi thanh khoản giảm, các giao thức này mất khả năng thanh toán, gây ra hiệu ứng domino. Tôi ước tính tổn thất gián tiếp lên tới 120 triệu USD chỉ trong vòng 48 giờ sau cuộc tấn công.
Contrarian
Một số người trong cộng đồng cho rằng đây thực chất là một "stress test có chủ đích" từ đội ngũ Euler, nhằm kiểm tra khả năng phục hồi của giao thức. Quan điểm này dựa trên việc các giao dịch đều nằm dưới ngưỡng cảnh báo, như thể được thiết kế để không gây ra sự hoảng loạn. Tuy nhiên, phân tích của tôi cho thấy không có bằng chứng nào về việc đội ngũ Euler đứng sau. Ngược lại, các địa chỉ ví liên quan đều là mới, không có lịch sử tương tác với bất kỳ thành viên nào của đội ngũ. Hơn nữa, thiệt hại thực tế rất lớn, khó có thể biện minh như một bài kiểm tra.
Một góc nhìn khác: kẻ tấn công có thể là một nhóm nghiên cứu bảo mật độc lập, muốn phơi bày lỗ hổng mà không gây ra sự sụp đổ hoàn toàn của giao thức. Họ chọn rút dần để duy trì sự ổn định của thị trường, đồng thời gây áp lực lên Euler để vá lỗi. Tuy nhiên, nếu mục đích là white hat, họ đã có thể báo cáo lỗi thay vì rút tiền. Sự im lặng của họ sau 11 đêm cho thấy động cơ tài chính rõ ràng.
Takeaway
Câu hỏi đặt ra: liệu các giao thức DeFi có đang quá tập trung vào việc bảo vệ khỏi các cuộc tấn công ồ ạt, trong khi bỏ qua những cuộc tấn công nhỏ giọt, kéo dài? Hệ thống cảnh báo dựa trên ngưỡng tuyến tính là một thiết kế lỗi thời. Cần có các chỉ số phi tuyến tính, phát hiện sự bất thường trong hành vi rút tiền theo thời gian. Nếu không, những "kẻ săn mồi lặng lẽ" sẽ tiếp tục bòn rút các giao thức một cách có hệ thống. Đã đến lúc ngành DeFi học hỏi từ quân đội: không chỉ chống lại các cuộc tấn công chớp nhoáng, mà còn phải chống lại chiến tranh tiêu hao.