Phân tích sâu vụ Yearn mất 9 triệu đô la tài sản: Từ lỗ hổng giao thức đến việc giá trị đô la bị bốc hơi

Vào ngày 1 tháng 12 năm 2025, giao thức Earn đã trải qua một cuộc tấn công hỗn hợp nhiều lớp được lên kế hoạch kỹ lưỡng trong lịch sử DeFi, cuối cùng dẫn đến mất khoảng 9 triệu đô la tài sản của người dùng. Đây không phải là một điểm khai thác đơn lẻ, mà là một sự phá hủy có hệ thống bởi những kẻ tấn công sử dụng các khoản vay nhanh để tận dụng vốn, phá vỡ các cơ chế bảo vệ giao thức từng lớp, đúc các token LP liên quan đến yETH vô thời hạn và cuối cùng làm cạn kiệt nhóm. Sự cố này một lần nữa cảnh báo toàn ngành: rủi ro bảo mật của các giao thức DeFi không nằm ở một lỗ hổng duy nhất, mà nằm ở sự chồng chất của nhiều lỗ hổng - đây là chế độ tấn công khó bảo vệ nhất trong ngành.

Tổng quan về sự kiện: Flash Loans có thể là một cạy cho các cuộc tấn công nhiều giai đoạn như thế nào

Chiến lược tài trợ của kẻ tấn công có vẻ bình thường, nhưng nó đặt nền móng cho một loạt các hoạt động chuỗi tiếp theo. Họ đã tung ra các khoản vay nhanh từ các giao thức Balancer và Aave cùng một lúc, đồng thời cho vay một số lượng lớn các công cụ phái sinh ETH như wstETH, rETH, WETH, ETHx và cbETH cùng một lúc. Những tài sản này không được chuyển trực tiếp vào giao dịch mà được phân phối cẩn thận: 100 trong số 1.100 ETH đã được gửi đến Tornado.Cash để trộn – một bước có mục đích thực sự là che giấu nguồn tiền và mở đường cho các hoạt động “tẩy trắng” tiếp theo.

Sau khi quá trình trộn hoàn tất, kẻ tấn công đã rút 100 ETH 0x3e8e7533dcf69c698Cf806C3DB22f7f10B9B0b97 địa chỉ hợp đồng độc hại và kích hoạt chức năng dự phòng của nó. Trong đợt pullback bí mật này, tất cả các tài sản đã vay được chuyển đổi thành token LP cho nhóm stableswap có trọng số yETH – tương đương với việc mua “chứng chỉ cổ phiếu” cho nhóm này. Nhìn bề ngoài, đây là một đợt bơm thanh khoản thông thường, nhưng thực tế nó là sự chuẩn bị cuối cùng cho một “kỹ thuật làm rỗng hồ bơi” tinh tế.

Ba lỗ hổng cốt lõi: sự kết hợp chết người giữa mất độ chính xác, tước doanh thu và khởi tạo nguồn cung bằng không

Lỗ hổng lớp 1: mất độ chính xác và giả mạo trạng thái miễn phí

Trọng tâm kỹ thuật của toàn bộ cuộc tấn công là một lỗ hổng mã dường như tầm thường:Chức năng remove_liquidity không đoản mạch số lượng không

Động thái đầu tiên của kẻ tấn công là cố tình tạo ra sự mất cân bằng cực kỳ của tài sản trong nhóm. Ông nhiều lần gọi chức năng add_liquidity (thêm thanh khoản), nhưng cố tình bỏ qua việc bơm chỉ số 3 (rETH), chỉ số 6 (wOETH) và chỉ số 7 (mETH), từ đó nới rộng khoảng cách tỷ lệ giữa ba tài sản này và các tài sản khác một cách giả tạo. Sau đó, anh ta đơn phương bơm một lượng lớn rETH, tiếp tục mở rộng sự mất cân bằng.

Trong trạng thái pool cực kỳ mất cân bằng này, kẻ tấn công gọi remove_liquidity, nhưng nhập tham số số tiền rút là 0. Theo logic thông thường, việc rút token 0 sẽ trả về trực tiếp và không có bất kỳ thay đổi trạng thái nào. Nhưng hợp đồng pool.vy không làm điều này - nó vẫn thực hiện vòng lặp tính toán vb_prod đầy đủ (sản phẩm số dư ảo).

Trong môi trường toán học mất cân bằng trọng lượng cực độ, hàm _pow_down (làm tròn xuống) tạo ra sự mất độ chính xác đáng kể. Hợp đồng tính toán không chính xác một giá trị vb_prod nhỏ và ghi giá trị giả mạo này vào trạng thái toàn cầu packed_pool_vb. Về cơ bản, kẻ tấn công đã giả mạo thành công giá trị sổ sách của toàn bộ nhóm bằng hoạt động “không tốn kém” (không có token nào được chuyển).

Lỗ hổng Layer 2: thoái vốn doanh thu và xói mòn cổ phần

Lớp lỗ hổng thứ hai được che giấu nhiều hơn. Khi kẻ tấn công gọi update_rates hàm, nó sẽ kích hoạt logic _update_supply nội bộ. Vì vb_prod đã bị đàn áp một cách ác ý, hệ thống đã tạo ra nhận thức sai lầm rằng tổng giá trị của nhóm đã giảm mạnh. Để cân bằng sổ sách, hợp đồng sẽ tự động đốt một lượng lớn token LP do hợp đồng đặt cược nắm giữ.

Kẻ tấn công đã thực hiện chính xác các hoạt động chênh lệch giá trước và sau khi cập nhật tỷ giá hối đoái. Mỗi cuộc gọi update_rates cập nhật tỷ giá hối đoái của một tài sản cụ thể (ví dụ: wOETH, mETH), sau đó gọi ngay remove_liquidity rút tài sản. Vì một số lượng lớn cổ phiếu của hợp đồng đặt cược đã bị phá hủy, nên tỷ lệ cổ phiếu LP nằm trong tay kẻ tấn công tăng lên một cách thụ động. Bằng cách lặp lại chu kỳ “cập nhật-trích xuất-đốt” này, kẻ tấn công đã từng bước vắt kiệt số dư thực tế của wOETH và mETH trong nhóm, đồng thời đẩy Tổng nguồn cung của nhóm đến ranh giới giá trị không nguy hiểm.

Lỗ hổng lớp 3: điểm bùng phát của zero cung cấp đúc không giới hạn

Sau một loạt các hoạt động trong hai giai đoạn đầu, pool đã được làm trống: tổng nguồn cung gần bằng 0 và số dư wOETH và mETH cực kỳ thấp. Tại thời điểm này, kẻ tấn công tung ra đòn chí mạng cuối cùng: gọi add_liquidity với các tham số được tiêm [1, 1, 1, 1, 1, 9] - nghĩa là, bảy tài sản đầu tiên, mỗi tài sản tiêm 1 wei (đơn vị nhỏ nhất) và tài sản thứ tám (mETH) tiêm 9 wei.

Hoạt động có vẻ vô lý này đã gây ra sự sụp đổ tính toán của hợp đồng vào thời điểm quan trọng khi nhóm sắp bị phá hủy. Công thức lặp lại của _calc_supply không thành công khi xử lý giá trị nhỏ nhất và hợp đồng đã được đúc không chính xác235.443 yETH LP token。 Nó tương đương với việc tạo ra hàng triệu đô la tài sản giả mạo từ không khí.

Giải thích chi tiết về bốn giai đoạn của cuộc tấn công: từ mất cân bằng cực độ đến đúc vô hạn

Giai đoạn 1: Chuẩn bị quỹ và khởi tạo trạng thái nhóm

  • Mượn nhiều công cụ phái sinh ETH từ Balancer và Aave
  • Ngụy trang nguồn tiền thông qua Tornado.Cash mixing
  • Chuyển đổi tất cả các quỹ hỗn hợp và tài sản vay thành token yETH LP

Giai đoạn 2: Sản xuất nhân tạo mất cân bằng cực độ

  • Liên tục bơm thanh khoản đơn phương, bỏ qua các token cụ thể (rETH, wOETH, mETH)
  • Việc đơn phương bơm một lượng lớn rETH càng làm nới rộng sự mất cân bằng
  • Giai đoạn này tạo ra các điều kiện toán học để mất độ chính xác

Giai đoạn 3: Tước doanh thu và lấn chiếm cổ phần

  • Kích hoạt mất trạng thái chính xác bằng remove_liquidity (0).
  • Call update_rates cập nhật tỷ giá hối đoái, dẫn đến việc phá hủy token LP hợp đồng staking
  • Các hoạt động chênh lệch giá lặp đi lặp lại để rút số dư wOETH và mETH
  • Tổng nguồn cung của Pool được đẩy về 0

Giai đoạn 4: Không cung cấp đúc không giới hạn

  • Gọi add_liquidity khi hồ bơi sắp bị phá hủy ([1,1,1,1,1,1,9])
  • Tính toán _calc_supply hợp đồng bị lỗi, đúc không chính xác 235.443 token LP
  • Kẻ tấn công hoàn tất việc trao đổi tài sản thông qua Exchange and Redeem
  • Hoàn trả các khoản vay nhanh, đổi tài sản có được lấy tài sản thanh khoản như Bitcoin và đô la Mỹ để thanh lý

Đường dẫn theo dõi và thanh lý quỹ: Mất giá trị từ yETH sang USD

Bộ phim hài đen cuối cùng của cuộc tấn công này nằm ở chuỗi tiền trốn thoát. 235.443 token LP mà những kẻ tấn công thu được dần được trao đổi lấy ETH và stablecoin thông qua một loạt các hoạt động trao đổi. Những tài sản này sau đó được trao đổi thêm cho các dạng tài sản có thể che giấu hơn như Bitcoin thông qua các cặp giao dịch DEX và cuối cùng hàng triệu đô la tài sản được đổi thành tiền mặt hoặc Bitcoin thông qua các nền tảng OTC. Trong toàn bộ quá trình, 9 triệu đô la tiền của người dùng đã được chuyển trắng trợn từ số dư giao thức sang ví của kẻ tấn công trên chuỗi, sau đó dần dần đổi lấy đô la Mỹ, Bitcoin, v.v. và cuối cùng trốn thoát.

Ý nghĩa của ngành: Cách các giao thức DeFi có thể bảo vệ chống lại các cuộc tấn công thành phần phức tạp

Có ba bài học chính từ vụ việc này:

Bài 1: Tăng cường xác minh cảnh cạnh Các giao thức DeFi phải tiến hành kiểm tra logic nghiêm ngặt đối với các kịch bản biên như “số tiền bằng không” và “mất cân bằng cực độ”. remove_liquidity sẽ trả về ngay sau khi nhận được tham số 0, thay vì thực hiện một vòng lặp tính toán đầy đủ. Loại “xử lý ngắn mạch” này có vẻ đơn giản, nhưng nó có thể ngăn chặn hiệu quả khả năng giả mạo trạng thái.

Bài 2: Tối ưu hóa logic tính toán chính xác _pow_down và các chức năng khác liên quan đến tính toán tỷ lệ cực đoan phải đưa ra các cơ chế bảo vệ. Cân nhắc sử dụng thư viện xử lý số phức tạp hơn, thêm tính năng phát hiện tràn trung gian hoặc sử dụng các nhánh thuật toán khác nhau trong các tình huống khắc nghiệt. Trong lịch sử, giao thức Balancer đã bị tấn công do các vấn đề về độ chính xác tương tự, đây là một bài học từ quá khứ.

Bài 3: Thiết lập giám sát bất thường đa chiều Cần xây dựng hệ thống giám sát thời gian thực để cảnh báo sớm cho các nghiệp vụ sau:

  • Tần suất bơm thanh khoản đơn phương cao dẫn đến mất cân bằng cực kỳ trong nhóm
  • Biến động tỷ giá hối đoái bất thường và các sự kiện đốt tự động
  • Tần suất bất thường của các giao dịch số tiền bằng không và các hoạt động giá trị tối thiểu
  • Tổng cung pool biến động mạnh trong một khoảng thời gian ngắn

Đối với toàn bộ hệ sinh thái DeFi, sự cố này chứng minh một sự thật sâu sắc:Bảo mật không phải là sửa chữa lỗ hổng bảo mật, mà là ngăn chặn một cách có hệ thống sự kết hợp của nhiều lỗ hổng。 Các nhà phát triển giao thức cần xem xét logic mã từ góc độ quy trình đầy đủ và không bỏ qua bất kỳ lỗi thiết kế dường như “vô hại” nào. Đồng thời, ngành công nghiệp cần tăng cường khả năng theo dõi và đóng băng dòng vốn của kẻ tấn công trên chuỗi, đồng thời cải thiện khả năng bảo vệ tổng thể thông qua danh sách đen DEX và kiểm soát rủi ro nền tảng OTC. Vụ hack Yearn không phải là kết thúc, nhưng sẽ là chất xúc tác cho sự phát triển an toàn của toàn ngành.

BAL-2,19%
AAVE-6,64%
ETH-2,5%
BTC-1,62%
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
  • Ghim