BTC
ETH
HTX
SOL
BNB
Xem thị trường
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

50 triệu USDT đổi lấy 35 nghìn đô la AAVE: Thảm họa xảy ra như thế nào? Và chúng ta nên đổ lỗi cho ai?

Ethanzhang
Odaily资深作者
@ethanzhang_web3
2026-03-13 12:44
Bài viết này có khoảng 6410 từ, đọc toàn bộ bài viết mất khoảng 10 phút
Do lỗ hổng chết người trong đường dẫn giao dịch, một hoạt động DeFi trị giá 50 triệu đô la đã được thực hiện với hầu như không có biện pháp bảo vệ, dẫn đến việc vốn gần như bốc hơi hoàn toàn trong một pool thanh khoản nhỏ.
Tóm tắt AI
Mở rộng
  • Quan điểm cốt lõi: Bài viết này phân tích sâu sắc một sự kiện mất mát tài sản lớn do thiết kế hệ thống định tuyến giao dịch có lỗ hổng, chỉ ra rằng vấn đề cốt lõi nằm ở việc các cơ chế kiểm tra đa tầng của hệ thống đều thất bại ở khía cạnh tính hợp lý kinh tế, chứ không phải do lỗ hổng giao thức cơ bản hay lỗi thao tác của người dùng.
  • Yếu tố then chốt:
    1. Bản chất sự việc là người dùng thông qua giao diện Aave khởi tạo một giao dịch luân chuyển tài sản thế chấp trị giá 50,4 triệu đô la (aEthUSDT đổi lấy aEthAAVE), cuối cùng chỉ nhận được AAVE trị giá 35,9 nghìn đô la, tổn thất nặng nề.
    2. Định tuyến giao dịch đã dẫn một lượng vốn khổng lồ vào một pool thanh khoản thấp SushiSwap chỉ nắm giữ khoảng 331 AAVE, khối lượng WETH đầu vào gấp khoảng 1017 lần dự trữ trong pool, dẫn đến giá thực hiện chênh lệch hơn 1000 lần so với giá giao ngay.
    3. Lỗ hổng cốt lõi nằm ở logic cạnh tranh báo giá của giao thức CoW, "tính hợp lý" của nó chỉ được xác định dựa trên phí Gas dương và số tiền đầu ra khác không, thiếu kiểm tra chênh lệch giá và đánh giá rủi ro thanh khoản.
    4. Giao diện phía trước của Aave đã vô hiệu hóa dữ liệu chuyên dụng của bộ điều hợp khi yêu cầu báo giá, dẫn đến báo giá không hoàn toàn khớp với nội dung thực thi cuối cùng, và cảnh báo tác động giá cao của nó chỉ là hộp kiểm xác nhận, không phải là rào cản cứng.
    5. Giá trị mà người dùng mất đi đã bị các nhà đầu cơ MEV trong cùng khối chiếm đoạt, ngay sau khi giao dịch được thực hiện đã xảy ra arbitrage chạy ngược, chứng minh rằng chính giao dịch bất thường đã tạo ra sự biến dạng giá.
    6. Trách nhiệm chính thuộc về hệ thống định tuyến/báo giá của giao thức CoW thiếu kiểm tra tính hợp lý kinh tế, trách nhiệm phụ thuộc vào các biện pháp kiểm soát rủi ro không đầy đủ ở giao diện phía trước của Aave.

Bài viết từ: @Ehsan1579

Biên dịch|Odaily (@OdailyChina); Dịch giả| Ethan (@ethanzhang_web 3)

Chỉ nhìn vào tiêu đề sự kiện, rất có thể sẽ hiểu nhầm đây là một cuộc tấn công khai thác lỗ hổng.

Cốt lõi sự kiện là: Một người đã đổi 50.4 triệu USD USDT, cuối cùng chỉ nhận được AAVE trị giá 35.9 nghìn USD.

Lần đầu tiên tôi nghe về việc này, thực sự bị sốc. Vì vậy, tôi đã phân tích toàn bộ sự kiện từ đầu đến cuối: theo dõi giao dịch, đường dẫn solver, gọi hợp đồng, dự trữ lịch sử, dữ liệu thanh toán, quy trình adapter, mã giao diện Aave, SDK flash loan của CoW, và mã định tuyến đánh giá báo giá có "hợp lý" hay không.

Đây không phải là một cuộc tấn công của hacker.​ Giao thức cốt lõi Aave không gặp sự cố. Việc thanh toán CoW không gặp sự cố. Uniswap không gặp sự cố. SushiSwap không gặp sự cố. Giao dịch là hợp lệ, chữ ký là hợp lệ, tất cả hợp đồng đều được thực thi chính xác theo mã. Tuy nhiên, gần như toàn bộ giá trị kinh tế đã bị phá hủy, chỉ vì nó được phép đi vào một đường dẫn định tuyến cực kỳ vô lý.

Public chain không có vấn đề, vấn đề nằm ở định tuyến.

Theo tôi, việc xem nhẹ và coi đây chỉ là "lỗi thao tác của người dùng" là không khách quan và nghiêm túc. Đúng là người dùng đã ký vào lệnh, nhưng toàn bộ hệ thống phần mềm lại cho phép một thao tác luân chuyển tài sản thế chấp gần 50 triệu USD, hoàn thành báo giá, ký, lập kế hoạch định tuyến cho đến khi thực thi cuối cùng, và toàn bộ quy trình đều hướng đến một pool thanh khoản thấp chỉ nắm giữ khoảng 331 AAVE. Điều này lẽ ra hoàn toàn không thể xảy ra, ít nhất lẽ ra phải bị hệ thống chặn và từ chối cứng rắn trước khi bắt đầu quá trình thanh toán.

Truy nguồn thông tin cốt lõi giao dịch

Hash giao dịch bất thường lần này là: 0x9fa9feab3c1989a33424728c23e6de07a40a26a98ff7ff5139f3492ce430801f, được xác nhận vào ngày 12 tháng 3 năm 2026 trên Ethereum mainnet tại block height 24643151, transaction index là 1, tiêu thụ 3780570 đơn vị Gas, giao dịch thực thi thành công. Địa chỉ ví sở hữu lệnh bắt đầu bằng 0x98b9, địa chỉ solver (người gửi giao dịch) thực thi thực tế bắt đầu bằng 0x3980, được đánh dấu là tsolver trong dữ liệu cuộc thi CoW.

Trước hết cần hiểu, đây không phải là một giao dịch hoán đổi USDT sang AAVE đơn giản ở cấp độ ví. Token bán ra là aEthUSDT, tức là chứng chỉ tiền gửi USDT sinh lãi trên nền tảng Aave. Token mua vào là aEthAAVE, tức là chứng chỉ tiền gửi AAVE sinh lãi trên nền tảng Aave. Vì vậy, đây thực chất là một thao tác luân chuyển tài sản thế chấp Aave thông qua hệ thống thanh toán của giao thức CoW và quy trình adapter flash loan của nó.

Trước giao dịch, ví này nắm giữ khoảng 50,432,693.075254 aEthUSDT và 0 aEthAAVE. Sau giao dịch, nó chỉ còn lại 4.980399 aEthUSDT và nhận được 327.241335505966487788 aEthAAVE. Trên thực tế, ví này đã bán gần như toàn bộ vị thế.

Metadata cho thấy rõ hơn rằng đường dẫn đã "độc hại" ngay từ trước khi thực thi. Lệnh đến từ quy trình aave-v3-interface-collateral-swap. API của CoW hiển thị nó là lệnh bán đã ký, trong khi metadata ứng dụng đánh dấu nó là hoán đổi tài sản thế chấp kiểu thị trường sử dụng smart slippage 121 basis points. Số lượng bán đã ký là 50,432,688.41618 aEthUSDT. Số lượng mua tối thiểu đã ký là 324.949260918413591035 aEthAAVE. Thanh toán thực tế đã trả 327.241335505966487788 aEthAAVE.

Đây là một chi tiết cực kỳ quan trọng. Lệnh này không hề kỳ vọng nhận được hàng nghìn AAVE rồi bị phá hủy giữa chừng vì lý do nào đó. Ngay từ khi được xây dựng, nó đã xoay quanh kết quả chỉ hơn ba trăm AAVE.

Chuỗi liên kết đầy đủ của sự sụp đổ định tuyến

Một khi bạn theo dõi vết giao dịch, toàn bộ quá trình trở nên tàn nhẫn và thẳng thắn.

Luồng tiền cấp cao nhất chủ yếu dựa vào hợp đồng thanh toán GPv2Settlement của giao thức CoW bắt đầu bằng 0x9008. Đầu tiên, hợp đồng HooksTrampoline bắt đầu bằng 0x60bf hoàn thành thao tác ủy quyền aEthUSDT, cho phép bộ chuyển tiếp kho bạc CoW rút tài sản của người dùng mà không cần giao dịch ủy quyền riêng biệt; sau đó, hợp đồng GPv2VaultRelayer bắt đầu bằng 0xc92e rút 50432688.41618 aEthUSDT từ ví người dùng vào quy trình thanh toán, cho đến giai đoạn này, tất cả thao tác đều tuân theo logic bình thường.

Hợp đồng thanh toán sau đó cấp quyền thao tác aEthUSDT cho hợp đồng phụ trợ chưa mở nguồn bắt đầu bằng 0xd524, và khởi động lệnh gọi thông qua function selector 0x494b3137; hợp đồng phụ trợ này lại chuyển quyền thực thi cho hợp đồng executor chưa mở nguồn bắt đầu bằng 0x699c, đến đây, toàn cảnh đường dẫn giao dịch bất thường hoàn toàn lộ ra.

Lệnh gọi hiệu quả đầu tiên hướng đến hợp đồng pool Aave bắt đầu bằng 0x87870, thông qua hàm withdraw (selector 0x69328dec) để đốt aEthUSDT, đổi lấy USDT gốc cơ bản; sau đó đường dẫn nhảy đến pool giao dịch sâu USDT/WETH Uniswap V3 bắt đầu bằng 0x4e68, đổi toàn bộ 50432688.41618 USDT thành 17957.810805702142342238 WETH.

Giai đoạn giao dịch này hoàn toàn bình thường: tỷ giá hoán đổi khoảng 2808.4 USDT đổi 1 WETH, phù hợp với tình hình thị trường lúc đó, không có vấn đề thanh khoản không đủ, không có sai lệch tính toán, không có bất kỳ bất thường nào trong liên kết giao dịch đầu tiên.

Vấn đề nằm ở bước nhảy thứ hai, một khi bạn thấy dự trữ thanh khoản, phần còn lại của câu chuyện là không thể tránh khỏi.

Sau khi executor nhận được 17957.810805702142342238 WETH, nó chuyển toàn bộ số tiền vào pool giao dịch SushiSwap V2 AAVE/WETH tại địa chỉ 0xd75ea151a61d06868e31f8988d28dfe5e9df57b4.

Tôi đã kiểm tra dữ liệu dự trữ thanh khoản lịch sử của pool giao dịch này ngay trước khi giao dịch bất thường xảy ra (block height 24643150), pool chỉ nắm giữ:

331.631982538108027323 AAVE, 17.653276196397688066 WETH

Đây không phải là lỗi nhập dữ liệu, mà là sự thật sắt đá.

Đường dẫn giao dịch này, đã bơm gần 17958 WETH vào một pool giao dịch siêu nhỏ chỉ dự trữ 17.65 WETH, với tổng kho AAVE tương ứng chỉ 331.63, khối lượng WETH đầu vào gấp khoảng 1017 lần dự trữ WETH trong pool.

Đây không phải là vấn đề thông thường như "slippage cao hơn" hoặc "thanh khoản hơi mỏng", mà là một đường dẫn thực thi lệnh thị trường cực kỳ vô lý, tương đương với việc buộc một pool AMM sản phẩm không đổi có quy mô cực nhỏ tiếp nhận một giao dịch khổng lồ vượt quá hàng nghìn lần quy mô của chính nó.

Pool giao dịch AMM đã thực thi thao tác theo thuật toán đã định, gần như cạn kiệt toàn bộ dự trữ AAVE trong pool.

Cặp giao dịch SushiSwap kích hoạt sự kiện trao đổi Swap cốt lõi: executor chuyển vào 17957.810805702142342238 WETH, chỉ đổi lại được 331.305315608938235428 AAVE. Sau khi giao dịch hoàn tất, thanh khoản còn lại của pool này là khoảng:

0.326666929169791895 AAVE, 17975.464081898540030304 WETH

Nói thẳng ra, khoảng 99.9%​ kho AAVE trong pool đã bị rút cạn trong một bước nhảy.

Theo dự trữ trước giao dịch, giá AAVE ngụ ý của pool là khoảng 149.50 USD. Giá thực thi thực tế của người dùng là khoảng 154,114.66​ USDT đổi 1 AAVE. Con số này chênh lệch hơn 1000 lần so với giá giao ngay trước giao dịch.

Sau đó, những AAVE này được cung cấp trở lại pool Aave, sử dụng selector 0x617ba037, tức là supply(address,uint256,address,uint16). Kết quả là aEthAAVE mới được đúc được gửi trở lại hợp đồng thanh toán. Hợp đồng thanh toán cuối cùng chuyển 327.241335505966487788 aEthAAVE cho người dùng. Khoảng 4.06398010297174764 aEthAAVE, như là thặng dư so với số tiền người dùng đã trả, được để lại trong hợp đồng thanh toán.

Vì vậy, việc thanh toán không đột ngột bóp méo một kết quả thực thi tốt thành một kết quả xấu. Nó chỉ đơn giản là cuối cùng đã hoàn tất kết quả mà đường dẫn đã tạo ra từ trước.

Đây là điểm then chốt, đáng để nói rõ:​ Kết quả thảm khốc đã được "đặt sẵn" trong đó trước khi đường dẫn được thực thi.

Trong dữ liệu gọi hợp đồng phụ trợ được nhúng trong đường dẫn, số lượng mục tiêu ở phía mua vào là khoảng 331.272185078031026739, số lượng mua tối thiểu đã ký thỏa thuận bởi người dùng là 324.949260918413591035, số lượng thanh toán thực tế là 327.241335505966487788, tất cả các giá trị cốt lõi trước khi thanh toán, đã bị khóa ở mức độ hơn ba trăm AAVE.

Đường dẫn này sinh ra đã hỏng.

Lỗ hổng ở đâu?

Câu trả lời là: Mỗi lớp cơ chế kiểm tra của hệ thống đều đang kiểm tra chiều sai.

Tất cả các cấp độ chỉ kiểm tra xem giao dịch có thể thực thi được không, chữ ký có hợp lệ không, số tiền có khác không, nhưng hầu như không có cấp độ cốt lõi nào kiểm tra xem đường dẫn giao dịch có hợp lý về mặt kinh tế hay không, đây là nguồn gốc cốt lõi của sự thất thủ cơ chế.

Khiếm khuyết mã trong đường dẫn báo giá adapter của giao diện Aave

Điểm bất thường mã rõ ràng đầu tiên, xuất hiện trong quy trình báo giá adapter CoW của giao diện Aave: hàm ban đầu được sử dụng để đính kèm dữ liệu ứng dụng độc quyền của adapter khi yêu cầu báo giá, đã bị vô hiệu hóa trực tiếp.

Nguồn: rates.helpers.ts:93adapters.helpers.ts:194

Điều này có nghĩa là giao diện Aave khi yêu cầu báo giá từ CoW, đã không đính kèm metadata flash loan và hooks mà lệnh thực tế sẽ đăng lên. Nói cách khác, thứ được báo giá không hoàn toàn là thứ sẽ được thực thi. Nhận xét mã thậm chí còn nói rằng mục đích của hàm trợ giúp này là để làm cho báo giá adapter chính xác hơn, nhưng hàm này lại bị v

ETH
USDT
Aave
Chào mừng tham gia cộng đồng chính thức của Odaily
Nhóm đăng ký
https://t.me/Odaily_News
Nhóm trò chuyện
https://t.me/Odaily_CryptoPunk
Tài khoản chính thức
https://twitter.com/OdailyChina
Nhóm trò chuyện
https://t.me/Odaily_CryptoPunk
Tìm kiếm
Mục lục bài viết
Tải ứng dụng Odaily Nhật Báo Hành Tinh
Hãy để một số người hiểu Web3.0 trước
IOS
Android