Ngày 20 tháng 9 năm 2021, sáu ngày sau khi Vee Finance được ra mắt như một trong những giao thức lending bản địa đầu tiên của Avalanche, một kẻ tấn công duy nhất đã rút 35 triệu đô la trong một gói giao dịch duy nhất mà không khai thác lỗi mã hóa hoặc đánh cắp một khóa riêng. Sự tấn công vào Vee Finance là một thất bại trong việc "manipulate oracle" theo đúng quyển giáo khoa: các smart contract của Vee đã hỏi một kho chứa Pangolin DEX "giá của AVAX là gì?" và tin tưởng câu trả lời, ngay cả khi kẻ tấn công đã thay đổi câu trả lời đó vài giây trước bằng cách trao đổi đủ token để tăng gấp ba lần giá hiện hành của kho. Với giá trị đảm bảo bị pha trộn, giao thức đã vui vẻ cho phép kẻ tấn công vay 26 triệu đô la trong các stablecoin cùng với AVAX, WBTC và WETH vượt quá bất kỳ giới hạn hợp pháp nào. Các kho đã trống trước khi các nhà arbitrage khôi phục giá trong khối tiếp theo.
Vee Finance là gì và tại sao nó bị tấn công?
Vee Finance được ra mắt vào 14 tháng 9 năm 2021 trên chuỗi C của Avalanche, tận dụng làn sóng khuyến khích Avalanche Rush, đẩy tổng giá trị bị khóa vượt quá 10 tỷ đô la trong tuần đó. Thông qua giao thức này, người dùng có thể tham gia các thị trường lending quen thuộc – gửi WAVAX, WETH hoặc WBTC làm tài sản thế chấp, vay USDT, USDC hoặc DAI với tỷ lệ lending lên tới 75% – dựa trên logic lending Ethereum đã được thiết lập nhưng được kết nối với dữ liệu giá của Avalanche.
Khoản rút gọn nguy hiểm của nó là cung cấp giá. Vee Finance định giá từng thị trường tài sản thế chấp bằng cách đọc Pangolin, phiên bản fork của Uniswap V2 là DEX chủ đạo của Avalanche vào thời điểm đó. Cách gọi đơn giản là: pair.getReserves() → price = reserve1 / reserve0. Đó là giá hiện tại – tỷ lệ dự trữ tức thời của một hồ chứa có lưu lượng thanh khoản thấp. Lối suy luận lending ở phía trên giả định số lượng đại diện cho thực tế:
` collateralValue = collateralAmount × oraclePrice borrowLimit = collateralValue × LTV // e.g., 75% `
Ba đặc điểm làm cho Vee bị lộ ra ngoài bất thường. Thứ nhất, nó là mới hoàn toàn – đã có sáu ngày tuổi, thử nghiệm chiến đấu hạn chế, xử lý hàng chục triệu đô la trong tuần đầu tiên. Thứ hai, oracle là độc nhất – mỗi tài sản có một hồ chứa Pangolin, không có Chainlink, không có giá trung bình cân bằng theo thời gian (TWAP), không có bảo vệ sai lệch. Thứ ba, các hồ chứa sử dụng là thấp – WAVAX/USDT, WETH/USDT và WBTC/USDT trên Pangolin chỉ có ~1–3 triệu đô la mỗi hồ, có nghĩa là một giao dịch lớn có thể thay đổi tỷ lệ dự trữ lên đến 200–300% trong một giao dịch.
Thời gian: Từ khởi động đến các bể trống trong sáu ngày
Toàn bộ chu trình từ sự ra mắt được chào mừng đến việc phân tích sau khi sản phẩm ra mắt chỉ kéo dài trong một tuần:
14 tháng 9, 2021 — Vee Finance triển khai trên mainnet Avalanche. Thị trường cho AVAX, WETH, WBTC, USDT, USDC và DAI được mở, oracle được kết nối với các dự trữ hiện tại của Pangolin. Mức TVL ban đầu được xây dựng nhanh chóng.
14–19 tháng 9 — Hoạt động bình thường. Các khoản gửi và vay được lưu chuyển, không phát hiện bất thường về sự sai lệch của oracle hoặc khối lượng vay đơn lẻ.
20 tháng 9, ~14:48 UTC — Người tấn công triển khai ba hợp đồng khai thác, mỗi hợp đồng nhắm vào một cặp Pangolin (WAVAX, WETH, WBTC). Trong một gói giao dịch gọn gàng, mỗi hợp đồng thực hiện flash-swap hoặc large-swap trên nhóm Pangolin của mình để tăng giá đảm bảo, sau đó ngay lập tức gọi borrow() trên Vee Finance với giá trị đã tăng. Khoảng 35 triệu USD rời khỏi các nhóm lending: ~26 triệu USDT/USDC và ~9 triệu AVAX, WBTC, và WETH.
20 tháng 9, UTC muộn – Vee Finance tạm dừng tất cả các hợp đồng, đăng tweet xác nhận ("hợp đồng bị tấn công, ~35 triệu USD bị đánh cắp"), công bố địa chỉ của kẻ tấn công và yêu cầu các sàn giao dịch và các công ty phân tích đưa các khoản tiền đó vào danh sách đen. Các diễn đàn quản trị AVAX phản ứng trong vòng vài phút.
21 tháng 9, 2021 — SlowMist công bố chủ đề chi tiết đầu tiên về nguyên nhân gốc: phụ thuộc oracle Pangolin duy nhất, tăng giá atom → vay quá mức, ba hồ chứa bị sập. PeckShield báo cáo các giao dịch khai thác và địa chỉ kẻ tấn công một cách độc lập, xác nhận con số 35 triệu USD và mẫu ba cặp.
22 tháng 9, 2021 — Vee Finance công bố báo cáo sự cố chính thức: xác nhận sự cố của một oracle duy nhất, chi tiết về chuỗi hành động mạo hiểm – vay mượn, và công bố kế hoạch bồi thường — các thiệt hại sẽ được bù đắp từ các khoản dự trữ, phân bổ token của đội ngũ, và doanh thu của quy trình tương lai. Giao dịch vẫn bị tạm dừng.
Từ tháng 10 năm 2021 trở đi — Vee được tái khởi động với một oracle hỗn hợp (Chainlink chính, TWAP fallback, bảo vệ sai lệch) và giới hạn lending chặt chẽ hơn. TVL không bao giờ phục hồi đến mức trước khi bị tấn công. Mặt khác với kẻ tấn công của mạng Poly, kẻ tấn công của Vee không bao giờ trả lại tiền.
Số liệu: Từ đâu mà 35 triệu USD đến và đi đâu
Vào thời điểm vụ tấn công (AVAX ~$65, ETH ~$3,400, BTC ~$47,000), số tiền 35 triệu USD đã bị phá vỡ một cách lộ liễu – kẻ tấn công đã tối ưu hóa việc khai thác stablecoin, không phải tài sản thế chấp biến động:
| Loại tài sản | Khoảng 1000 bị đánh cắp | Ghi chú |
|---|---|---|
| USDT + USDC | ~ 26 triệu USD | Tiền ổn định được vay mượn – điểm ra có tính thanh khoản cao, không có ma sát từ phía oracle |
| AVAX (native) | ~$3–4 triệu | Vay tiền dựa trên tài sản đảm bảo WAVAX bị pha trộn |
| WETH (được kết nối) | ~$2–3 triệu | Hồ WETH/USDT có lượng thanh khoản thấp đã bị bong bóng để tạo ra dòng tiền |
| WBTC (được kết nối) | ~$2–3 triệu | Sự linh hoạt thấp nhất trong ba trường hợp – mức biến dạng giá cao nhất cho mỗi đô la swap |
| DAI / các loại khác | phần còn lại | — |
| Tổng | ~$35 triệu | Được trích dẫn là 34–35,6 triệu USD trên các nguồn (khác biệt về giá); thường được biểu diễn bằng ~8.800 ETH tương đương |
Chi phí/tổng lợi nhuận mô tả về lợi thế của oracle:
- Chi phí thủ đoạn: ~$50,000–$200,000 cho mỗi nhóm trong phí trượt và thay đổi. Để biến đổi một nhóm trị giá 2 triệu USD 3 lần, cần ~$2–4 triệu vốn tạm thời nhưng sẽ trả lại trong cùng một giao dịch atom — chi phí thực tế chỉ là phí và thiệt hại do trượt có thể được giải quyết.
Một thang đo hữu ích: 35 triệu đô la là một số nhỏ so với 611 triệu đô la của Poly Network trước đó 6 tuần, nhưng đây là sự khai thác vay lớn nhất của Avalanche đến nay vào tháng 9 năm 2021 và sự thất bại của oracle Avalanche thứ hai sau Zabu Finance (3,2 triệu đô la, tháng 7 năm 2021) – một xu hướng buộc các kiểm toán viên Avalanche phải xem các oracle đơn-DEX như là mức độ nghiêm trọng.
Nguyên nhân: Giá cả mà bất cứ người nào có vốn đều có thể thay đổi
Hack của Vee Finance không có tình trạng tràn bộ nhớ, không có sự lặp lại và không có khóa bị đánh cắp. Đó là một sự thất bại trong mối phụ thuộc của giá – quy trình đã chuyển giao sự hiểu biết về thực tế của mình cho một nguồn dữ liệu mà kẻ tấn công có thể mua quyền kiểm soát trong một khối.
Hai hợp đồng quan trọng
Trên Avalanche, Vee Finance bao gồm:
- Các thị trường lending (cTokens):
cAVAX,cETH,cBTClàm tài sản thế chấp; các nhóm USDT/USDC chứa lượng tiền ảo có thể vay. Mỗi thị trường theo dõi nguồn cung, số tiền vay và yếu tố thế chấp (LTV).
Tiến trình dự kiến cho người dùng hợp pháp gửi 1.000 WAVAX để vay USDT là: gửi 1.000 WAVAX → PriceOracle đọc giá hiện tại của Pangolin WAVAX/USDT → 1.000 × 65 USD = 65.000 USD giá trị thế chấp → vay tối đa 48.750 USD với tỷ lệ LTV 75% → USDT được chuyển.
Lợi dụng hai bước (lặp lại ba lần)
Bước 1 — Thực hiện đáp án. Trong một giao dịch nguyên tử đơn lẻ, kẻ tấn công sử dụng giao dịch flash swap của Pangolin (giao dịch swap của Uniswap V2 với callback — tương đương với giao dịch pre-flash-loan của Avalanche) hoặc giao dịch swap được tài trợ lớn để đổ một lượng lớn USDT vào nhóm WAVAX/USDT. Kho dự trữ WAVAX của nhóm giảm, kho dự trữ USDT tăng, và tỷ lệ dự trữ hiện nay cho rằng WAVAX có giá trị 2–3 lần giá thực. Không có TWAP được tham khảo — chỉ có tỷ lệ tức thời — nên lời nói đó có tính chất có thẩm quyền.
Bước 2 – Vay dựa trên sự nói dối. Trong cùng một giao dịch (trước khi bất kỳ bot arbitrage nào có thể khôi phục giá), kẻ tấn công nạp một số tiền bảo đảm vừa phải (ví dụ, WAVAX) và gọi borrow(USDT) với mức tối đa được phép. Vee Finance đọc giá oracle bị phình lên, tính collateralValue = amount × 3 × price, và cho phép vay 3 lần lớn hơn thực tế. Kẻ tấn công rút stablecoin lên đến mức giá bị phình lên đó, làm cạn kiệt các kho bạc lending.
Vì toàn bộ chuỗi là một chuỗi nguyên tử – thay đổi, đọc oracle, vay mượn – không có giao dịch nào khác có thể can thiệp. Giá sẽ được khôi phục thông qua giao dịch hoán đổi trong khối sau đó, nhưng quy trình lending đã có một vị trí dưới nước: tài sản đảm bảo bị phồng lên hiện đã có giá chính xác là 1x, đảm bảo cho khoản nợ được phát hành với giá 3x. Người tấn công không cần phải điều chỉnh giá; họ đã có sẵn các khoản tiền vay trong ví của họ.
Mẫu này được lặp lại cho WETH/USDT và WBTC/USDT – cùng lỗi oracle, ba loại tài sản thế chấp và ba hợp đồng khai thác.
Tại sao điều này tốn một khối, không phải là vụ trộm chìa khóa
Để đánh cắp một khóa riêng, người tấn công phải sử dụng thủ đoạn lừa đảo, phần mềm độc hại hoặc quyền truy cập nội bộ – một quá trình tốn kém và gây ồn ào. Việc thay đổi giá trị một điểm trên một chuỗi mỏng chỉ yêu cầu vốn – một khoản phí giao dịch. Vùng lỗ hổng này vi phạm hai nguyên tắc cơ bản trong thiết kế oracle DeFi:
Đừng bao giờ để quyết định lending phụ thuộc vào giá được ghi trong một giao dịch duy nhất. Đừng bao giờ để một nhóm có lưu lượng thanh toán thấp là nguồn duy nhất của sự thật cho hàng trăm triệu đô la tài sản thế chấp.
Vee Finance đã vi phạm cả hai điều này. Giá trung bình theo trọng số thời gian (TWAP) trong 30 phút trên Avalanche (≈300 khối) sẽ yêu cầu kẻ tấn công duy trì giá bị pha trộn trong 300 khối – 300 lần vốn và hoàn toàn bị lộ cho các nhà giao dịch và bot MEV trong vòng nửa giờ – khiến việc rút 35 triệu USD trở nên không khả thi về mặt kinh tế. Giá tổng hợp ngoài chuỗi của Chainlink sẽ hoàn toàn bỏ qua sự biến dạng của DEX.
Chi tiết về lỗ hổng Pangolin Oracle
Sự lạm dụng oracle pangolin là một phân loại của defi điều khiển oracle đáng được nghiên cứu riêng, vì nó xuất hiện trên nhiều chuỗi với các tên DEX khác nhau (Uniswap V2 trên Ethereum, PancakeSwap trên BSC, Pangolin trên Avalanche) với cấu trúc giống hệt nhau.
Sự tiếp xúc của Pangolin: Pangolin, như một fork của Uniswap V2, lưu trữ hai số cho mỗi cặp: reserve0 và reserve1, cùng với price0CumulativeLast cho TWAP. Phương thức tiện lợi getReserves() chỉ trả về số dự trữ ngay lập tức. Các tài liệu và ví dụ tích hợp sớm của Pangolin đã trích dẫn getReserves() để định giá – và Vee Finance đã sao chép mẫu đó một cách chính xác.
Vee nên sử dụng: TWAP của Uniswap V2 thông qua giá tích lũy (price0CumulativeLast) được lấy mẫu ở hai điểm cách nhau 30 phút, cho ra trung bình không dễ bị lừa đảo. Thêm vào đó, Chainlink trên Avalanche (đang hoạt động kể từ đầu năm 2021) đã tổng hợp các giá từ nhiều nguồn CEX/DEX ngoài chuỗi – một đợt tăng giá của DEX sẽ được bình quân. Thước đo vàng được áp dụng sau: Chainlink chính + TWAP làm lựa chọn cuối cùng + thiết bị phá vỡ sai lệch.
Lợi thế vốn ít thanh khoản theo số liệu: Hệ thống WAVAX/USDT có TVL 2 triệu USD có ~1 triệu USD trên mỗi bên. Thay đổi 1 triệu USDT bằng WAVAX với phí 0,3% làm giảm tỷ lệ dự trữ từ ~65 WAVAX/USDT xuống ~180 – một biến dạng 2,8 lần. Chi phí trượt quay trở lại là ~150.000 USD – nhưng lợi nhuận từ khoản vay với LTV 75% trên tài sản đảm bảo 500.000 USD tăng lên ~1,35 triệu USD là ~515.000 USD ròng mỗi chu kỳ. Lặp lại điều này ba lần sẽ tạo ra 1,5 triệu USD; mở rộng tài sản đảm bảo và lặp lại trên thị trường ETH và BTC đạt 35 triệu USD.
Đây là lý do tại sao rủi ro của oracle đơn lẻ tăng theo chiều ngược với độ sâu của pool: pool nông hơn = chi phí di chuyển giá rẻ hơn = tỷ lệ vay cao hơn cho mỗi đô la bị mạo hiểm. Một pool trị giá 50 triệu đô la sẽ tốn 25 triệu đô la để di chuyển 3 lần – không có lợi nhuận nào cho vụ trộm 35 triệu đô la.
Vay không đổi che giấu lợi nhuận: Mặt khác với thủ đoạn DEX, nơi kẻ tấn công phải đổi lại tài sản bị phình lên (và phải chịu rủi ro mất giá hai lần), thủ đoạn vay mượn sử dụng các tài sản khác (stablecoin) thay vì tài sản bị phình lên trong hồ sơ bảo đảm. Việc vay không có rủi ro mất giá – quy trình vay mượn cung cấp USDT trực tiếp. Mất giá duy nhất xảy ra ở bước đầu vào (thuật pump). Sự bất đối xứng này khiến thủ đoạn vay mượn oracle gần như gấp đôi hiệu quả sử dụng vốn so với thủ đoạn đổi tài sản – và đó là lý do tại sao Vee ($35 triệu), MonoX ($31 triệu) và Inverse Finance ($1,2 triệu) đều sử dụng mô hình vay mượn.
Nhập dữ liệu, rửa tiền và phản ứng
Hacker đã sử dụng AVAX để tài trợ cho cuộc tấn công, kết nối qua Ethereum/nguồn tập trung, triển khai ba hợp đồng theo thứ tự (một hợp đồng cho mỗi cặp Pangolin), và thực hiện thủ đoạn trong một gói giao dịch được PeckShield xác định vào lúc ~14:48 UTC ngày 20 tháng 9. Các hợp đồng đã thu về ~35 triệu USD trong stablecoin và WAVAX/WBTC/WETH vào các EOA của hacker trong vòng vài phút. Mặt khác với hacker của mạng Poly – vốn có 611 triệu USD trong stablecoin có thể theo dõi đã bị Tether và tất cả các sàn giao dịch lớn đóng băng, buộc họ phải đàm phán – tài sản bị đánh cắp của Vee Finance nhỏ hơn, bao gồm stablecoin có thể kết nối nhanh chóng qua Avalanche, và không phải đối mặt với lệnh đóng băng của nhà phát hành được công bố.
Không có thông tin về việc trả lại tài sản trên chuỗi, không có thông báo của nhóm "bộ trang phục trắng" và không có thông tin về thành công trong việc theo dõi mức độ của máy trộn. Đội ngũ của Vee, dựa trên sự đồng thuận của các nhà kiểm toán (SlowMist, PeckShield, CertiK đều tập trung vào nguyên nhân gốc duy nhất), đã công bố một kế hoạch bồi thường ba trụ cột vào ngày hôm sau: các khoản dự trữ của ngân hàng, các phân bổ mã thông báo của nhóm bị khóa và doanh thu phí giao thức trong tương lai được chuyển hướng cho người dùng bị ảnh hưởng. Các hợp đồng lending vẫn bị tạm dừng trong vài tuần; lần tái khởi động đã giới thiệu:
- Hybrid oracle: Giá tổng hợp của Chainlink là chính, nếu Chainlink lỗi thời hoặc có sai lệch, sẽ sử dụng TWAP 30 phút làm lựa chọn cuối cùng.
Các bài học: 5 biện pháp phòng vệ có thể ngăn chặn vụ tấn công Vee Finance
Mỗi vụ khai thác lừa đảo liên quan đến giao dịch oracle lớn kể từ đó – MonoX (31 triệu USD, tháng 10 năm 2021), Inverse Finance (1,2 triệu USD, tháng 6 năm 2022), Mango Markets (100 triệu USD, tháng 10 năm 2022) – đều tái hiện thất bại của Vee: một con đường giá duy nhất có thể bị điều khiển dẫn đến quyết định vay mượn có quyền lợi quá cao.
1. Không bao giờ sử dụng giá chỉ định duy nhất – hãy sử dụng TWAP hoặc Chainlink. Trung bình TWAP trong 30 phút chống lại các hành vi chỉnh sửa khối duy nhất vì kẻ tấn công phải duy trì sự biến dạng trong hàng trăm khối dưới áp lực giao dịch. Công cụ tổng hợp ngoài chuỗi của Chainlink không xem xét bất kỳ sàn DEX nào. Giải pháp sau khi bị tấn công của Vee (Chainlink chính, TWAP phụ) là cơ sở; giá chỉ định getReserves() không bao giờ được chấp nhận cho lending.
2. Trung bình đa nguồn, không phải từ một nguồn duy nhất. Tính tổng hợp ít nhất hai oracle độc lập (trung bình của Chainlink + TWAP, hoặc ba TWAP trên DEX) và loại bỏ nếu bất kỳ nguồn nào có sai lệch >2%. Một chuỗi Pangolin có thể cung cấp 3 lần sẽ bị bỏ phiếu bởi trung bình của Chainlink trên các thị trường khác nhau không thay đổi. Các nguồn cung cấp giá chỉ là điểm rủi ro duy nhất – mỗi quy trình lending có giá trị > 10 triệu USD nên xem chúng là rủi ro quan trọng.
3. Bảo vệ chống sai lệch giá và độ cũ. Trả lại bất kỳ khoản vay nào mà giá oracle thay đổi >5% kể từ khối trước đó, hoặc khi updatedAt của Chainlink >1 giờ đã cũ. Điều này biến khoản vay quá mức thành một lệnh trả lại rõ ràng và cho phép theo dõi để dừng lại. Thang giới hạn 5% bắt được việc tăng giá 200–300% của Vee trong khi cho phép biến động bình thường.
4. Cấp giới hạn lending và các thiết bị ngắt mạch. Giới hạn lending cho mỗi khối (ví dụ, không quá 15% lượng tiền ảo trong kho của khối) và tạm dừng thị trường nếu hơn 20% lượng tiền ảo trong kho bị rút trong một giao dịch. Mặc dù một kẻ tấn công có thể làm tăng giá, nhưng giới hạn này chỉ cho phép rút tiền một lần – điều này đòi hỏi sự mạo hiểm kéo dài trên nhiều khối, điều mà TWAP đã làm không thể thực hiện được. Các lệnh ngừng dựa trên khối lượng tương đương với các thiết bị ngắt mạch trên sàn giao dịch cổ phiếu.
5. Xét duyệt và loại bỏ các cặp có lượng thanh khoản thấp. Yêu cầu lượng thanh khoản tổng hợp tối thiểu (ví dụ, 10 triệu USD) cho bất kỳ cặp nào trong vũ trụ oracle, hoặc loại bỏ hoàn toàn các cặp có lượng thanh khoản thấp. Các nhóm WAVAX/USDT và WBTC/USDT trên Pangolin với mức 1-3 triệu USD chưa đủ điều kiện. Nếu Vee lọc các nguồn oracle theo độ sâu, ba nhóm đã bị can thiệp sẽ bị từ chối làm nguồn giá trước khối đầu tiên.
Những câu hỏi thường gặp
Vee Finance bị đánh cắp bao nhiêu tiền? Khoảng 35 triệu USD (được đưa ra là 34-35,6 triệu USD tùy thuộc vào giá của các token vào ngày 20 tháng 9 năm 2021), thường được biểu diễn bằng ~8.800 ETH. Khoảng 26 triệu USD là stablecoin USDT/USDC và ~9 triệu USD là AVAX, WBTC và WETH. Người tấn công đã cạn kiệt các kho bạc lending của Vee bằng cách vay vượt quá giá trị thực của tài sản thế chấp của họ sau khi làm tăng giá của nó thông qua các kho bạc Pangolin.
Vee Finance bị tấn công như thế nào? Người tấn công đã sử dụng giao dịch flash swap của Pangolin (Uniswap V2 swap) để tăng giá hiện tại của WAVAX, WETH và WBTC gấp 2-3 lần trên các pool Pangolin mỏng trong một giao dịch duy nhất. PriceOracle của Vee Finance đọc giá hiện tại đã bị điều khiển thông qua getReserves() mà không có kiểm tra TWAP hoặc Chainlink, đánh giá tài sản thế chấp của người tấn công bằng 3 lần thực tế và cho phép vay 3 lần giới hạn hợp pháp. Người tấn công đã vay được khoảng 35 triệu USD trong stablecoin và AVAX/BTC/ETH, để lại một vị trí dưới nước – đó là manipulation defi thông qua oracle đơn lẻ theo cách truyền thống.
Pangolin oracle exploit là gì? Pangolin oracle exploit lạm dụng thực tế rằng Pangolin (fork DEX của Uniswap V2 của Avalanche) lưu giá hiện tại dưới dạng tỷ lệ dự trữ đơn giản reserve1/reserve0 mà bất kỳ ai cũng có thể thay đổi bằng một giao dịch lớn. Nếu một giao thức lending như Vee Finance coi tỷ lệ đó là có thẩm quyền mà không có cửa sổ TWAP hoặc tổng hợp Chainlink, một kẻ tấn công có thể làm tăng tỷ lệ trong một khối, vay dựa trên giá trị đã tăng, và giữ các khoản vay sau khi giá trở lại bình thường. Các nhóm có lưu lượng thanh khoản thấp là dễ di chuyển nhất, cho phép sử dụng đòn bẩy cao nhất.
Vee Finance đã thu hồi được các khoản tiền bị đánh cắp chưa? Không có thông báo về việc thu hồi trên chuỗi. Mặt khác, kẻ tấn công của mạng lưới Poly đã trả lại ~611 triệu đô la sau khi việc theo dõi làm cho số tiền bị đánh cắp trở nên phóng xạ, kẻ tấn công của Vee Finance không bao giờ trả lại tiền. Vee đã cam kết bồi thường cho người dùng bị ảnh hưởng từ các khoản dự trữ, các mã thông báo của nhóm bị khóa và phí giao thức trong tương lai – nhưng số tiền 35 triệu đô la đó không được thu hồi từ kẻ tấn công vào thời điểm viết bài này, và TVL cũng không bao giờ trở lại mức trước khi bị tấn công.
Việc hack Vee Finance có phải là một cuộc tấn công lending nhanh không? Theo nghĩa chính xác, đó là một vòng xoay nhanh (Uniswap V2 swap với callback) hơn là một khoản vay nhanh theo phong cách Aave – Avalanche có cơ sở hạ tầng lending nhanh hạn chế vào tháng 9 năm 2021. Sự khác biệt này quan trọng: kẻ tấn công đã điều khiển giá bằng các giao dịch swap lớn trên DEX trong cùng một giao dịch atom như người vay, đạt được hiệu quả tương tự như một khoản vay nhanh – vốn tạm thời để biến dạng giá – mà không có nhà cung cấp vay nhanh chính thức. Các báo cáo về bảo mật mô tả nó như "vòng xoay nhanh + vay" hoặc "giao dịch lớn + vay có tài sản đảm bảo quá mức".
Làm thế nào để ngăn chặn cuộc tấn công của Vee Finance? Năm lớp bảo vệ độc lập ngăn chặn nó: (1) Sử dụng giá TWAP 30 phút hoặc giá tổng hợp của Chainlink thay vì giá chợ hiện hành của Pangolin – việc can thiệp một khối trở nên không khả thi về mặt kinh tế. (2) Trung bình hóa hai nguồn độc lập hoặc nhiều hơn để một nhóm bơm duy nhất bị bỏ phiếu. (3) Thêm các biện pháp bảo vệ sai lệch/không mới, giúp khôi phục các khoản vay nếu giá thay đổi >5% trong một khối. (4) Cài đặt giới hạn cho các khoản vay mỗi khối và ngắt chuỗi khi lượng giao dịch cạn kiệt. (5) Chỉnh sửa các cặp có lưu lượng thấp khỏi tập hợp oracle. Một trong những biện pháp này sẽ ngăn chặn cuộc tấn công; Vee thực hiện các biện pháp (1)–(4) sau khi bị tấn công.
Kết luận
Hack Vee Finance tồn tại không phải vì quy mô của nó – 35 triệu đô la đã được vượt qua nhiều lần kể từ đó – mà vì đây là biểu hiện rõ ràng nhất về rủi ro của định danh đơn. Một kẻ tấn công không cần phải phá vỡ mật mã, đánh cắp khóa hoặc tìm ra sự lặp lại. Họ chỉ cần hỏi xem thông tin rẻ nhất để sửa đổi là gì – giá hiện tại trên một bể Pangolin nông – và thời điểm vay để vào khối mà Vee Finance tin rằng đó là một lời nói dối. Dạy bài học kỹ thuật là vô cùng tàn nhẫn: bất kỳ quyết định lending nào phụ thuộc vào giá có thể được viết trong một giao dịch là giá mà kẻ tấn công kiểm soát. Câu trả lời của ngành – tổng hợp Chainlink, giá trung bình TWAP, các biện pháp bảo vệ sai lệch, giới hạn vay, kiểm tra độ thanh khoản – không phải là điều kỳ lạ. Đó là sự cứng rắn, tăng cường nhân đôi mà phân biệt một định danh báo cáo thực tế với một định danh bán lại những giả định của kẻ tấn công trong một khối chết người.
