Bởi: Jiujiu@slowmist nhóm bảo mật
Nền
< p style="text-align: left;">Theo thông tin tình báo từ nhóm bảo mật SlowMist, vào ngày 4 tháng 9 năm 2024, dự án thu nhập thanh khoản phi tập trung Penpie đã bị tấn công và kẻ tấn công đã kiếm được gần 30 triệu USD. Nhóm bảo mật SlowMist đã phân tích sự cố và chia sẻ kết quả như sau:
(https://x.com/Penpiexyz_io/status/1831058385330118831)
< mạnh>Kiến thức tiên quyết
Pendle Finance là một giao thức giao dịch thu nhập tài chính phi tập trung với tổng giá trị khóa hơn 4,5 tỷ USD. Giao thức được tích hợp thành công với Magpie với mục đích tối ưu hóa cơ hội doanh thu và nâng cao mô hình veTokenomics của nó. Trên cơ sở đó, dự án Penpie đã giới thiệu chức năng khai thác thanh khoản để cho phép thị trường của Pendle Finance đạt được thu nhập thụ động.
Pendle Finance bao gồm các khái niệm quan trọng sau:
PT (Mã thông báo chính): Đại diện cho tiền gốc tại một thời điểm nhất định trong tương lai. Giữ PT có nghĩa là bạn có quyền sở hữu tiền gốc và có thể mua lại sau khi đáo hạn. Ví dụ: nếu bạn sở hữu tùy chọn PT-stETH hết hạn sau 1 năm, bạn sẽ có thể đổi stETH trị giá 1 ETH sau 1 năm.
YT (Mã thông báo lợi nhuận): Thể hiện thu nhập trong tương lai. Giữ YT có nghĩa là bạn sở hữu tất cả lợi nhuận theo thời gian thực do tài sản cơ bản tạo ra và bạn có thể yêu cầu lợi nhuận tích lũy trên Pendle theo cách thủ công bất cứ lúc nào. Nếu bạn sở hữu 1 YT-stETH và lợi suất trung bình trên stETH là 5% thì vào cuối năm bạn sẽ tích lũy được 0,05 stETH.
SY (Simple Yield): Được sử dụng để bao bọc bất kỳ lợi tức lãi suất nào Hợp đồng tiền xu. Nó cung cấp một giao diện được tiêu chuẩn hóa để tương tác với cơ chế tạo lợi nhuận của bất kỳ mã thông báo chịu lãi nào.
LPT (Mã thông báo nhà cung cấp thanh khoản): Đại diện cho thị trường thanh khoản , như một chứng chỉ cung cấp tính thanh khoản của tài sản cơ bản.
PRT (Mã thông báo phần thưởng Pool): Đại diện cho người dùng trong Penpie pool Biên nhận tiền gửi để gửi mã thông báo LPT.
Nguyên nhân cốt lõi
Cốt lõi của vụ việc này là Penpie đã nhầm tưởng rằng tất cả các thị trường do Pendle Finance tạo ra đều hợp pháp khi đăng ký thị trường Pendle mới. Tuy nhiên, quy trình tạo thị trường của Pendle Finance là mở, cho phép bất kỳ ai tạo thị trường và các thông số chính, chẳng hạn như địa chỉ hợp đồng SY, có thể được người dùng tùy chỉnh. Lợi dụng điều này, kẻ tấn công đã tạo hợp đồng thị trường chứa hợp đồng SY độc hại và sử dụng cơ chế mà nhóm Penpie cần gọi hợp đồng SY bên ngoài khi nhận được phần thưởng và sử dụng các khoản vay flash để tăng thêm lượng thanh khoản lớn cho thị trường. và gộp, khuếch đại giả tạo Tăng số tiền thưởng và kiếm lợi nhuận.
Phân tích các bước tấn công
Tấn công trước -position Chuẩn bị
Băm giao dịch: 0x7e7f9548f301d3dd863eac94e6190cb742ab6aa9d7730549ff743bf84cbd21d1
1. Kẻ tấn công Tạo hợp đồng thu nhập PT và YT thông qua hàm createYieldContract của hợp đồng PendleYieldContractFactory, đặt SY làm địa chỉ hợp đồng tấn công và sử dụng hàm này để gọi hàm createNewMarket của hợp đồng PendleMarketFactoryV3 nhằm tạo hợp đồng thị trường tương ứng 0x5b6c_PENDLE-LPT.
2. Tiếp theo, kẻ tấn công sử dụng registerPenpiePool của hợp đồng PendleMarketRegisterHelper để đăng ký nhóm Penpie. Trong quá trình này, hợp đồng mã thông báo PRT chứng chỉ tiền gửi và hợp đồng phần thưởng liên quan được tạo và thông tin nhóm được đăng ký trong Penpie.
3. Sau đó, kẻ tấn công gọi hàm mintPY của hợp đồng YT để đúc một lượng lớn YT và PT, và số tiền này phụ thuộc vào tỷ giá hối đoái mà hợp đồng tấn công trả về (hợp đồng SY).
4. Ngay sau đó, kẻ tấn công gửi PT vào thị trường 0x5b6c_PENDLE-LPT và đúc mã thông báo LP.
5. Cuối cùng, kẻ tấn công gửi mã thông báo LP vào nhóm Penpie để đổi lấy mã thông báo PRT chứng chỉ tiền gửi.
Tấn công chính thức
Băm giao dịch: 0x42b2ec27c732100dd9037c76da415e10329ea41598de453bb0c0c9ea7ce0d8e5
1. Trước tiên, kẻ tấn công đã cho vay một lượng lớn mã thông báo agETH và rswETH thông qua các khoản vay nhanh.
2. Gọi hàm batchHarvestMarketRewards của nhóm Penpie để thu thập phần thưởng từ thị trường được chỉ định theo đợt. Thao tác này kích hoạt chức năng RedRewards của hợp đồng thị trường 0x5b6c_PENDLE-LPT.
3. Trong chức năng RedRewards, chức năng ClaimRewards của hợp đồng SY (hợp đồng tấn công) được gọi từ bên ngoài. Trong giai đoạn này, kẻ tấn công sử dụng quỹ cho vay nhanh để tăng tính thanh khoản của mã thông báo phần thưởng (mã thông báo phần thưởng được cố tình đặt thành hai loại trong hợp đồng tấn công). Mã thông báo thị trường 0x6010_PENDLE-LPT và 0x038c_PENDLE-LPT) và gửi mã thông báo thị trường thu được vào nhóm Penpie để nhận mã thông báo chứng chỉ tiền gửi tương ứng.
4. Tiếp theo, các mã thông báo thị trường mới được gửi này vào nhóm Penpie sẽ được sử dụng làm phần thưởng được tính toán và sau đó các mã thông báo này sẽ được chuyển sang hợp đồng Người thưởng thông qua chức năng queueNewRewards của hợp đồng.
Vì kẻ tấn công là người duy nhất gửi tiền vào thị trường 0x5b6c_PENDLE-LPT, nên chức năng đa yêu cầu của hợp đồng MasterPenpie có thể được gọi ngay lập tức để rút phần mã thông báo LPT này trong hợp đồng Người thưởng.
5. Cuối cùng, kẻ tấn công đốt chứng chỉ tiền gửi PRT thu được ở bước thứ ba thông qua chức năng drawMarket của hợp đồng PendleMarketDepositHelper, mua lại mã thông báo thị trường và loại bỏ tính thanh khoản của các mã thông báo thị trường này cùng với phần thưởng được trích ở bước trước . và cuối cùng nhận được mã thông báo tài sản cơ bản (agETH và rswETH) để đạt được lợi nhuận.
Tóm tắt
Sự cố bảo mật này đã phơi bày việc Penpie không xác minh đầy đủ trong quy trình đăng ký thị trường và sự phụ thuộc quá mức vào Pendle Finance Thị trường logic tạo cho phép kẻ tấn công kiểm soát cơ chế phân phối phần thưởng thông qua các hợp đồng độc hại, từ đó thu được phần thưởng vượt mức. Nhóm bảo mật SlowMist khuyến nghị các bên dự án nên thêm cơ chế xác minh danh sách trắng nghiêm ngặt khi đăng ký thị trường để đảm bảo rằng chỉ những thị trường đã được xác minh mới có thể được chấp nhận. Ngoài ra, đối với logic kinh doanh chính liên quan đến các lệnh gọi hợp đồng bên ngoài, việc kiểm tra và kiểm tra bảo mật cần được tăng cường để tránh các sự cố tương tự xảy ra lần nữa.