Cách đây 48 giờ, một giao dịch bất thường trên mạng Ethereum đã thu hút sự chú ý của tôi khi tôi đang kiểm tra mempool. Một địa chỉ mới tạo đã gọi hàm withdraw của AuraSwap – một giao thức thanh khoản tập trung mới nổi – với số tiền 2.300 ETH, tương đương khoảng 4,5 triệu USD. Điều kỳ lạ là không có bất kỳ giao dịch deposit nào trước đó từ cùng địa chỉ. Tôi lập tức fork repo của AuraSwap và bắt đầu trace dòng chảy thực thi.
AuraSwap là một automated market maker (AMM) được quảng bá như là "Uniswap V3 nhưng với phí giao dịch động và thanh khoản tập trung thông minh hơn". Họ tự hào về cơ chế rebalancing tự động dựa trên oracle giá từ Chainlink. TVL của họ đạt 120 triệu USD chỉ sau 3 tháng ra mắt, chủ yếu từ các chiến dịch farm token AURA với APR lên tới 800%. Tuy nhiên, khi tôi đọc kỹ whitepaper, tôi thấy họ đã đưa ra một giả định tin cậy nguy hiểm: oracle giá Chainlink được coi là hoàn hảo và không cần kiểm tra độ trễ.
Nếu chúng ta nhìn vào merkle tree của các giao dịch thanh khoản, tôi nhận thấy một điểm bất thường: hợp đồng LiquidityPool sử dụng block.timestamp làm yếu tố chính để tính phí biến động, nhưng không hề có cơ chế chống lại việc thao túng timestamp thông qua các validator hợp tác. Đây là những gì code thực sự nói: trong file AuraMath.sol, dòng 147, hàm calculateDynamicFee chỉ dựa vào (block.timestamp - lastUpdateTime) để xác định biến động thị trường. Không có check rằng block.timestamp có nằm trong khoảng hợp lý so với oracle hay không. Kết hợp với việc pool cho phép bất kỳ ai gọi updateFee() mà không cần quyền, một kẻ tấn công có thể khai thác điều này để giảm phí về 0, sau đó thực hiện sandwich attack.
Báo cáo audit tiết lộ điều thú vị: công ty audit thứ ba đã cảnh báo về lỗ hổng này nhưng đội ngũ AuraSwap cho rằng "rủi ro thấp vì cần phối hợp với validator". Họ đã sai. Trong giao dịch tôi phát hiện, kẻ tấn công đã sử dụng một mạng lưới validator nhỏ để kiểm soát timestamp trong vòng 2 block, kích hoạt updateFee() với timestamp giả, đẩy phí về 0, sau đó rút toàn bộ thanh khoản của một pool stablecoin mà không mất phí. Tổn thất: 4,5 triệu USD trực tiếp, cộng thêm 12 triệu USD từ hiệu ứng domino khi các LP hoảng loạn rút vốn.
Nhiều người sẽ cho rằng đây là một vụ hack kỹ thuật cao. Nhưng tôi thấy một vấn đề sâu xa hơn: sự phụ thuộc mù quáng vào oracle và giả định rằng "validator sẽ không bao giờ làm điều đó". Trong thị trường downtrend hiện tại, khi lợi nhuận từ farm giảm, động cơ cho các cuộc tấn công phối hợp tăng lên. AuraSwap đã đặt giả định tin cậy vào một tập hợp validator nhỏ mà không có bất kỳ cơ chế phòng vệ nào. Tôi đã audit hơn 50 giao thức DeFi và tôi có thể nói: bất kỳ hệ thống nào dựa vào timestamp mà không có sự đồng thuận đa lớp đều là bom nổ chậm.
Takeaway: Khi thị trường đi xuống, các lỗ hổng kiến trúc sẽ lộ diện. Hãy nhìn vào code, không phải whitepaper. Nếu bạn đang nắm giữ token của một giao thức mà audit bỏ qua các giả định tin cậy cơ bản, đã đến lúc thoát ra. Câu hỏi đặt ra: liệu AuraSwap có thể sống sót sau cuộc tấn công này, hay nó sẽ trở thành một bài học khác về sự nguy hiểm của việc đánh đổi bảo mật lấy hiệu suất?