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

robot
Đang tạo bản tóm tắ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ó.

MORPHO-6,78%
USDC0,01%
Xem bản gốc
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
  • Phần thưởng
  • Bình luận
  • Đăng lại
  • Retweed
Bình luận
Thêm một bình luận
Thêm một bình luận
Không có bình luận
  • Gate Fun hot

    Xem thêm
  • Vốn hóa:$2.27KNgười nắm giữ:2
    0.00%
  • Vốn hóa:$0.1Người nắm giữ:1
    0.00%
  • Vốn hóa:$2.26KNgười nắm giữ:1
    0.00%
  • Vốn hóa:$2.27KNgười nắm giữ:1
    0.00%
  • Vốn hóa:$0.1Người nắm giữ:1
    0.00%
  • Ghim