Phân tích sự cố Penpie

Bài viết này được dịch máy
Xem bản gốc

Vào ngày 3 tháng 9 năm 2024, dự án Penpie , cung cấp dịch vụ tăng cường lợi nhuận và veTokenomics cho Pendle Finance, đã bị khai thác, gây ra thiệt hại khoảng 27 triệu đô la. Hãy cùng xem xét chi tiết về cách thức cuộc tấn công này diễn ra.

Tổng quan

Địa chỉ của kẻ tấn công:

https://etherscan.io/address/0x7a2f4d625fb21f5e51562ce8dc2e722e12a61d1b

Giao dịch tấn công:

https://etherscan.io/tx/0x7e7f9548f301d3dd863eac94e6190cb742ab6aa9d7730549ff743bf84cbd21d1
https://etherscan.io/tx/0x42b2ec27c732100dd9037c76da415e10329ea41598de453bb0c0c9ea7ce0d8e5

Lý lịch

Pendle Finance cho phép người dùng giao dịch lợi nhuận tương lai bằng cách chia tài sản mang lại lợi nhuận thành hai thành phần, PT và YT:

  1. PT (Principal Token): Đại diện cho quyền sở hữu tài sản cơ sở (tiền gốc), không còn tạo ra lợi nhuận sau khi tách.

  2. YT (Yield Token): Biểu thị quyền nhận lợi nhuận trong tương lai từ tài sản cho đến khi đáo hạn.

Để tạo một cặp mã thông báo PT và YT mới, người tạo cần cung cấp địa chỉ hợp đồng SY khi gọi hàm PendleYieldContractFactory.createYieldContract() .

SY (Standardized Yield) là một Tiêu chuẩn token (Đề xuất cải tiến Ethereum (EIP)-5115) do nhóm Pendle tạo ra. Nó bao bọc bất kỳ Token nào mang yield và cung cấp một giao diện chuẩn để tương tác với các cơ chế tạo yield của các token đó.

Nếu người dùng muốn gửi token của họ vào giao thức Pendle , lấy stETH làm ví dụ, họ sẽ gửi stETH của mình vào Pendle và nhận SY-stETH (phiên bản Standardized Yield của stETH). Sau đó, Pendle chia SY-stETH này thành PT-stETH và YT-stETH.

Để cho phép giao dịch giữa các token PT và SY, thị trường Pendle ( PendleMarketV3 ) được tạo ra giữa PT và Token SY tương ứng của nó. Các token khuyến khích được trả cho các nhà cung cấp thanh khoản là token Pendle . Bằng cách khóa Pendle, người dùng có thể nhận được token quản trị vePENDLE, với giá trị của chúng tỷ lệ thuận với số lượng và thời hạn của Stake (tối đa là 2 năm).

Penpie là một giao thức được xây dựng trên Pendle Finance, được thiết kế để cung cấp cho người dùng các dịch vụ tăng cường lợi nhuận và veTokenomics. Được tích hợp với Pendle Finance, Penpie tập trung vào việc khóa các token Pendle để có được quyền quản lý và lợi ích lợi nhuận được tăng cường trong Pendle Finance.

Penpie cho phép các hợp đồng thị trường do Pendle tạo ra được đăng ký trong hợp đồng PendleStaking, đây là hợp đồng chính nắm giữ các vị thế vePENDLE thay mặt cho người dùng để tăng lợi nhuận và quyền biểu quyết.

Phân tích khai thác

Cuộc tấn công có thể được chia thành hai bước, có thể được phân tích thông qua hai giao dịch dưới đây:

Giao dịch đầu tiên

Trong giao dịch đầu tiên, kẻ tấn công đã cố gắng chèn một hợp đồng SY độc hại để tạo một cặp (PT, YT) mới bằng cách sử dụng lệnh gọi PendleYieldContractFactory.createYieldContract() , sau đó tạo một thị trường giả bằng cách sử dụng PendleMarketFactoryV3.createNewMarket() . Hợp đồng SY độc hại này sau đó sẽ được gọi bởi hợp đồng Penpie để yêu cầu phần thưởng.

Với thị trường Pendle mới tạo, kẻ tấn công đã gọi hàm registerPenpiePool của hợp đồng PendleMarketRegisterHelper từ Penpie để đăng ký thị trường này cho nhóm phần thưởng Penpie tương ứng. Bất kỳ thị trường nào do PendleMarketFactoryV3 tạo ra đều được Penpie tin cậy.

Sau khi đăng ký, một Token mới, PRT ( PenpieReceiptToken ), tương ứng với Token NHÀ CUNG CẤP THANH KHOẢN Pendle market, sẽ được tạo. Ngoài ra, một hợp đồng người thưởng mới ( BaseRewardPoolV2 ) sẽ được tạo để quản lý phần thưởng (token Pendle ) cho NHÀ CUNG CẤP THANH KHOẢN của Pendle market này. Thông tin về stakingToken, receiptToken và người thưởng sau đó sẽ được thêm vào hợp đồng MasterPenpie .

Tiếp theo, kẻ tấn công gọi hàm mintPY của hợp đồng PendleYieldToken . Hàm này được sử dụng để Token hóa SY thành PT và YT. Vì hợp đồng SY do kẻ tấn công kiểm soát nên chúng có thể Mint một lượng lớn mã thông báo PT và YT.

Sau đó, kẻ tấn công đã cung cấp mã thông báo PT và SY (trong đó mã thông báo SY được kẻ tấn công đúc tùy ý) cho thị trường Pendle để Mint Token của người cung cấp thank khoản (LP Tokens) ( fake_0x5b6c_PENDLE-LPT ).

Sau đó, kẻ tấn công gọi hàm depositMarket của PendleMarketDepositHelper từ Penpie để gửi Token của người cung cấp thank khoản (LP Tokens) của thị trường Pendle và Mint các PRT tương ứng ( PenpieReceiptToken ).

Giao dịch thứ hai

Sau khi thiết lập thị trường và nhóm giả mạo trong Pendle và Penpie, kẻ tấn công đã thực hiện giao dịch thứ hai để đánh cắp tiền. Đầu tiên, chúng cần vay một lượng lớn token agETH và rswETH bằng cách sử dụng Khoản vay nhanh từ BalancerVault .

Bằng cách gọi hàm batchHarvestMarketRewards của hợp đồng PendleStaking từ Penpie, điều này kích hoạt hàm redeemRewards của thị trường Pendle giả mạo và hàm claimRewards của hợp đồng SY của kẻ tấn công. Khi gọi hàm claimRewards , kẻ tấn công đã sử dụng agETH và rswETH đã vay để thêm thanh khoản vào các thị trường Pendle tương ứng và sau đó gửi Token của người cung cấp thank khoản (LP Tokens) này vào nhóm Penpie , giữ lại các token PRT để rút sau. Mục tiêu thực sự là lừa hợp đồng Staking Penpie nhận dạng Token của người cung cấp thank khoản (LP Tokens) của thị trường Pendle này là token phần thưởng.

Để lừa hợp đồng Staking Penpie nhận ra các token thị trường mới được thêm vào (agETH và rswETH) là phần thưởng, kẻ tấn công đã tạo ra hàm getRewardTokens() của riêng chúng trong hợp đồng SY. Hàm này được thiết kế để bao gồm hai token thị trường này làm phần thưởng và sẽ được hàm getRewardTokens() gọi từ thị trường.

Vì hai mã thông báo này ( 0x6010_PENDLE-LPT-agETH , 0x038c_PENDLE-LPT-rswETH ) được thêm vào danh sách bonusTokens nên chúng được gửi dưới dạng phần thưởng cho người dùng thông qua hợp đồng thưởng trong hàm queueNewRewards .

Cuối cùng, kẻ tấn công gọi hàm multiclaim của hợp đồng MasterPenpie để rút tất cả phần thưởng khỏi hợp đồng người thưởng. Với các token PRT (thu được khi thêm thanh khoản vào Penpie trong lệnh gọi lại claimRewards ), kẻ tấn công có thể chuyển đổi chúng trở lại thành token thị trường bằng cách gọi withdrawMarket từ hợp đồng Penpie và trả lại khoản vay.

Phần kết luận

Các cuộc tấn công, được thực hiện trên Ethereum và Arbitrum, nhắm vào nhiều nhóm Penpie , gây ra thiệt hại khoảng 27 triệu đô la. Nguyên nhân gốc rễ của cuộc tấn công là giả định rằng tất cả các thị trường được tạo ra bởi hợp đồng Pendle Factory đều hợp pháp. Sự cố này nhấn mạnh nhu cầu về các biện pháp bảo mật nghiêm ngặt và kiểm toán hợp đồng kỹ lưỡng để bảo vệ chống lại các lỗ hổng như vậy. Đảm bảo các quy trình xác minh mạnh mẽ sẽ rất quan trọng trong việc ngăn chặn các cuộc tấn công trong tương lai.

Nguồn
Tuyên bố từ chối trách nhiệm: Nội dung trên chỉ là ý kiến của tác giả, không đại diện cho bất kỳ lập trường nào của Followin, không nhằm mục đích và sẽ không được hiểu hay hiểu là lời khuyên đầu tư từ Followin.
Thích
Thêm vào Yêu thích
Bình luận