Cơ bản
Giao ngay
Giao dịch tiền điện tử một cách tự do
Giao dịch ký quỹ
Tăng lợi nhuận của bạn với đòn bẩy
Chuyển đổi và Đầu tư định kỳ
0 Fees
Giao dịch bất kể khối lượng không mất phí không trượt giá
ETF
Sản phẩm ETF có thuộc tính đòn bẩy giao dịch giao ngay không cần vay không cháy tải khoản
Giao dịch trước giờ mở cửa
Giao dịch token mới trước niêm yết
Futures
Truy cập hàng trăm hợp đồng vĩnh cửu
TradFi
Vàng
Một nền tảng cho tài sản truyền thống
Quyền chọn
Hot
Giao dịch với các quyền chọn kiểu Châu Âu
Tài khoản hợp nhất
Tối đa hóa hiệu quả sử dụng vốn của bạn
Giao dịch demo
Giới thiệu về Giao dịch hợp đồng tương lai
Nắm vững kỹ năng giao dịch hợp đồng từ đầu
Sự kiện tương lai
Tham gia sự kiện để nhận phần thưởng
Giao dịch demo
Sử dụng tiền ảo để trải nghiệm giao dịch không rủi ro
Launch
CandyDrop
Sưu tập kẹo để kiếm airdrop
Launchpool
Thế chấp nhanh, kiếm token mới tiềm năng
HODLer Airdrop
Nắm giữ GT và nhận được airdrop lớn miễn phí
Launchpad
Đăng ký sớm dự án token lớn tiếp theo
Điểm Alpha
Giao dịch trên chuỗi và nhận airdrop
Điểm Futures
Kiếm điểm futures và nhận phần thưởng airdrop
Đầu tư
Simple Earn
Kiếm lãi từ các token nhàn rỗi
Đầu tư tự động
Đầu tư tự động một cách thường xuyên.
Sản phẩm tiền kép
Kiếm lợi nhuận từ biến động thị trường
Soft Staking
Kiếm phần thưởng với staking linh hoạt
Vay Crypto
0 Fees
Thế chấp một loại tiền điện tử để vay một loại khác
Trung tâm cho vay
Trung tâm cho vay một cửa
Phân tích sâu: Cuộc tấn công thao túng NAV vay nhanh của Morpho Vault sau khi USR mất chốt
Vào ngày 22 tháng 3 năm 2026, giao thức Resolv gặp sự cố rò rỉ khoá riêng, kẻ tấn công đã tạo ra 80 triệu USR không thế chấp một cách vô lý, khiến giá USR từ 1 USD giảm mạnh xuống còn 0.025 USD.
Hậu quả của thảm họa này không chỉ dừng lại ở người sở hữu USR, mà còn có một nhóm người thông minh hơn đã thực hiện một cuộc tấn công thao túng NAV của kho bạc trên Morpho một cách tinh vi.
Bài viết sẽ phân tích từng bước logic nền tảng của cuộc tấn công này.
一、Hiểu về kiến trúc hai lớp của Morpho
Trước khi nói về cuộc tấn công, bạn cần hiểu rõ thiết kế kiến trúc của Morpho, nếu không sẽ không thể hiểu được phần sau.
Thế giới của Morpho được chia thành hai lớp:
Lớp nền:
Morpho Blue (còn gọi là Morpho Core). Đây là một giao thức cho vay tối giản, không thể nâng cấp. Triết lý thiết kế của nó là “không cấp phép” — bất kỳ ai cũng có thể tạo ra thị trường cho vay, gửi tiền, cho vay, thanh lý.
Mỗi thị trường được xác định duy nhất bởi năm tham số: tài sản vay, tài sản thế chấp, mức thanh lý (LLTV), địa chỉ oracle, mô hình lãi suất.
Các thị trường hoàn toàn độc lập, một sự cố của một thị trường sẽ không ảnh hưởng đến các thị trường khác.
Lớp trên:
MetaMorpho Vault (kho bạc). Đây là một kho theo tiêu chuẩn ERC-4626, tương đương như một “quỹ đầu tư”.
Người dùng gửi USDC vào kho, quản lý kho (Curator) sẽ phân bổ số tiền này vào các thị trường Morpho Blue khác nhau để cho vay lấy lãi.
Người dùng sở hữu phần của kho (shares), giá trị của phần này tăng theo lãi suất tích lũy.
Công thức cốt lõi — giá trị ròng mỗi cổ phần (NAV / Giá mỗi cổ phần): Giá trị ròng mỗi cổ phần = tổng tài sản / tổng cung
totalAssets là tổng vị thế cung cấp của kho trong tất cả các thị trường (bao gồm phần đã cho vay, vì đó là “tài khoản phải thu”). totalSupply là tổng số phần kho phát hành. Khi lãi tích lũy, totalAssets tăng nhưng totalSupply không đổi, do đó giá trị mỗi cổ phần tăng — đó chính là nguyên lý bạn kiếm lời.
二、Supply (onBehalf) — Ai cũng có thể gửi tiền thay cho kho
Đây là điểm mấu chốt của toàn bộ cuộc tấn công.
Trong Morpho Blue, hàm supply() có tham số onBehalf. Thiết kế này nhằm tạo điều kiện cho bên thứ ba thay mặt gửi tiền — ví dụ, hợp đồng chiến lược tự động có thể thay người dùng gửi tiền.
Nhưng nó hoàn toàn không có giới hạn: bất kỳ ai cũng có thể chỉ định bất kỳ địa chỉ nào làm onBehalf, kể cả địa chỉ của kho.
Tài liệu chính thức của Morpho rõ ràng cảnh báo: “Warning: Anyone can supply on behalf of the vault so the call to updateWithdrawQueue that expects a market to be empty can be griefed by a front-run.”
Khi bạn supply 10.000 USDC thay cho kho, vị thế supply của kho trong thị trường này tăng thêm 10.000, tổng tài sản (totalAssets) cũng tăng theo 10.000. Nhưng tổng phần kho (totalSupply) không thay đổi — vì không ai gửi tiền mới qua hàm deposit() của kho.
Kết quả: giá trị mỗi cổ phần bị đẩy lên cao.
Trong điều kiện bình thường, điều này giống như “quyên góp” cho kho — bạn tự bỏ tiền ra để tăng lợi nhuận cho tất cả cổ đông, chỉ những kẻ ngốc mới làm vậy. Nhưng trong một số điều kiện nhất định, điều này có thể bị lợi dụng.
三、Hạn mức cung cấp (Supply Cap) = 0 ≠ An toàn
Sau khi USR mất peg, một số quản trị viên kho đã khẩn cấp đặt hạn mức cung USR/USDC của thị trường này về 0, nghĩa là quản trị viên không thể gửi thêm tiền vào thị trường này nữa. Nghe có vẻ vấn đề đã được giải quyết?
Vấn đề nằm ở chỗ: Hạn mức cung là giới hạn ở cấp độ kho, không phải giới hạn của Morpho Blue Core.
Quản trị viên kho chỉ có thể kiểm soát hàm nội bộ _supplyMorpho() của chính kho.
Nhưng supply(onBehalf=vault) là tương tác trực tiếp với hợp đồng Morpho Blue Core, hoàn toàn bỏ qua mọi logic của kho: hàng đợi cung cấp (supply queue), hạn mức cung (supply cap), kiểm tra quyền của bộ phân bổ (allocator), tất cả đều không được kiểm soát.
So sánh: Quản trị viên kho khóa cửa trước (Cap=0), nhưng kẻ tấn công có thể đột nhập qua cửa hậu của Morpho Core để gửi tiền trực tiếp vào.
四、Oracle cố định — Chiếc áo chống nợ âm thầm
Đây là điều kiện thứ hai then chốt.
Thị trường USR/USDC có oracle cố định 1:1. Nói cách khác, dù USR trên thị trường ngoài giảm giá bao nhiêu, trong thế giới của Morpho, 1 USR luôn bằng 1 USDC.
Tại sao quản trị viên kho lại dùng oracle cố định? Bởi USR là “stablecoin”, bình thường giá biến động rất nhỏ. Oracle cố định giúp tránh các “lệnh thanh lý giả” do thiếu thanh khoản ngắn hạn gây ra.
Nhưng khi USR thực sự mất peg, oracle cố định trở thành thảm họa — người vay dùng USR không đáng giá làm tài sản thế chấp để vay USDC đầy đủ, trong khi giao thức không hề hay biết.
Cơ chế xử lý nợ xấu của Morpho ở đây hoàn toàn vô hiệu — các cơ chế phản ánh theo thời gian thực (V1.0) và phân bổ đều (V1.1) đều dựa trên giả định giao thức có thể nhận diện nợ xấu.
Oracle cố định thì không thể nhận diện được gì.
五、Toàn bộ quá trình tấn công — vòng kín 5 bước
Giờ đây, tất cả điều kiện đã hội tụ. Dưới đây là các thao tác nguyên tử trong một giao dịch duy nhất:
六、Tại sao nhất định cần dùng flash loan?
Đây là vấn đề dễ bị bỏ qua nhất. Lợi nhuận của cuộc tấn công dựa trên việc “tăng tổng tài sản ảo rồi phân chia theo phần” để hưởng lợi. Nếu kẻ tấn công không dùng flash loan, họ sẽ giữ phần sở hữu 0% — dù tổng tài sản tăng vọt, phần tăng đó sẽ thuộc về các cổ đông khác, còn họ thì không có gì.
七, Ai là người thiệt hại?
Số USDC 12,300 mà kẻ tấn công lấy đi không phải là tự nhiên sinh ra. Số tiền này đến từ thanh khoản thực của các thị trường khác trong kho.
Khi kho rút tiền, sẽ theo thứ tự hàng đợi rút (withdraw queue) để lấy USDC từ các thị trường. USDC trong thị trường USR đã bị vay hết, không thể rút ra được. Do đó, số tiền rút ra đến từ các thị trường khác — ví dụ như wETH/USDC, cbBTC/USDC, các thị trường hoạt động bình thường khác.
八、Hiệu ứng chồng chất của ba lỗ hổng
Lần này, cuộc tấn công không chỉ dựa vào một lỗ hổng đơn lẻ, mà là sự cộng hưởng của ba vấn đề thiết kế:
Kết luận
Triết lý thiết kế tối giản của Morpho — không cấp phép, không thể nâng cấp, quản trị tối thiểu — phần lớn là lợi thế. Nhưng sự kiện này cho thấy, thiết kế tối giản đi kèm với trách nhiệm lớn hơn đặt lên vai các bên tham gia ở cấp cao hơn.
Giao thức không thực hiện xác thực oracle, quản trị viên phải tự làm tốt việc này. Giao thức không giới hạn supply(onBehalf), nên kho phải có các biện pháp phòng ngừa bổ sung.
Đối với người gửi tiền, “chọn Curator đúng” còn quan trọng hơn “chọn Morpho”. Giao thức là công cụ, và độ an toàn của công cụ phụ thuộc vào người sử dụng nó.