CertiK: Pickle Finance bị mất gần 20 triệu USD Phân tích cuộc tấn công
CertiK
2020-11-23 08:15
本文约3168字,阅读全文需要约13分钟
Pickle Finance đã bị hack và giá tiền tệ đã giảm một nửa. Chuyện gì đã xảy ra thế? Bài viết này sẽ mang đến cho bạn đọc những phân tích chi tiết về sự kiện tấn công này.

Vào lúc 2:37 sáng ngày 22 tháng 11 theo giờ Bắc Kinh, nhóm nghiên cứu bảo mật CertiK đã phát hiện ra thông qua Skynet rằng dự án Pickle Finance đã bị tấn công và tổng cộng 19,75 triệu DAI trị giá gần 130 triệu RMB đã bị mất.

Kể từ khi Pickle Finance bắt đầu khai thác vào ngày 10 tháng 9, không có cảm giác tồn tại.

Với kinh nghiệm thăng trầm rõ rệt của đội quân lương thực, bản thân các nhà đầu tư luôn duy trì một mức độ cảnh giác nhất định trước sự xuất hiện đột ngột của dự án Pickle.

Tuy nhiên, kể từ khi có được nền tảng cá nhân của V God vào ngày 14 tháng 9, Pickle Gherkin đã đạt được mức tăng gấp 10 lần giá khởi điểm từ nền tảng bằng phẳng với lối chơi DeFi mới và nhiều chứng thực khác nhau trong làn sóng DeFi hỗn loạn.

"Tôi vừa bán chiếc Pickle trị giá 10.000 đô la của mình với giá 5 đô la, và sau khi tôi ngủ, nó trị giá 60 đô la??? Cái này???"

Ngay khi các nhà đầu tư chuẩn bị mua loại mã thông báo thực phẩm mới này hoặc đã tham gia sâu, tin tức được đưa ra vào ngày 23 tháng 11 đã gây sốc cho các nhà đầu tư.

Theo dữ liệu của Messari, kể từ khi Pickle Finance bị hack, token gốc PICKLE của nó đã giảm mạnh 50,12% xuống còn 10,17 đô la, sau đó phục hồi nhẹ. Hiện tại, giá trị thị trường của nó là 11,41 đô la.

tiêu đề phụ

Toàn bộ quá trình tấn công như sau:

Toàn bộ quá trình tấn công như sau:

Bước 1: Kẻ tấn công sử dụng chức năng StrategyCmpdDAIV2.getSuppliedUnleveraged() để lấy số Dai có thể rút trong hợp đồng StrategyCmpdDAIV2 tại địa chỉ 0xcd892a97951d46615484359355e3ed88131f829d, được ghi là Amount_A.

Bước 2: Kẻ tấn công gọi hàm swapExactJarForJar() trong hợp đồng thông minh ControllerV4 có tại địa chỉ 0x6847259b2b3a4c17e7c43c54409810af48ba5210 và chuyển vào lọ bẩn số 1 và số 2, Amount_A và 0, [], [] làm tham số khi gọi.

hàm swapExactJarForJar()

Trong số đó, jar bẩn số 1 và jar bẩn số 2 do kẻ tấn công tự triển khai và tuân theo hợp đồng thông minh của giao diện IJar, do đó, việc thực hiện logic chức năng token() và các chức năng khác do kẻ tấn công quyết định bản thân anh ấy. Bước này được thiết lập vì chức năng Pickle Finance swapExactJarForJar() không xác minh xem bình đến có phải là địa chỉ hợp đồng thông minh chính thức hay không.

Bình được truyền trong hàm swapExactJarForJar() có thể xác định loại mã thông báo

Gọi hàm rútForSwap()

Với việc thực thi hàm swapExactJarForJar(), khi hàm rútForSwap() trong hàm swapExactJarForJar() ở dòng 289 ở trên được thực thi, sau một loạt lệnh gọi hàm, hàm deleverageToMin() và hàm deleverageUntil() tại 0xcd892a97951d46615484359355e3ed88131f829d cuối cùng cũng được thực thi , hãy chuyển mã thông báo (Amount_A) có thể rút trong StrategyCmpdDAIV2 hiện tại sang hợp đồng thông minh PickleJar tại địa chỉ 0x6949bb624e8e8a90f87cd2058139fcd77d2f3f87.

hàm deleverageToMin() và hàm deleverageUntil()

Ảnh chụp màn hình giao dịch nội bộ chuyển mã thông báo từ hợp đồng thông minh StrategyCmpdDAIV2 sang hợp đồng thông minh PickleJar
Hàm Earn() trong hợp đồng thông minh PickleJar

Bước 3: Gọi hàm Earn() trong hợp đồng thông minh PickleJar tại địa chỉ 0x6949bb624e8e8a90f87cd2058139fcd77d2f3f87 (như trong hình trên).

Tổng cộng có ba cuộc gọi được thực hiện để chuyển số pDAI trong PickleJar hiện tại từ địa chỉ 0x6b175474e89094c44da98b954eedeac495271d0f sang hợp đồng thông minh ControllerV4 tại địa chỉ 0x6847259b2b3a4c17e7c43c54409810af48ba5210 Dòng 87 gọi số tiền kiếm được () trong hợp đồng ControllerV4 (như trong hình bên dưới) được hiển thị), chuyển hàm Deposit() vào dòng 152 trong hình bên dưới.

Theo cách này, hàm Deposit() trong hợp đồng StrategyCmpdDAIV2 là 0xcd892a97951d46615484359355e3ed88131f829d được gọi và cDAI với số lượng pDAI trong PickleJar được chuyển thành StrategyCmpdDAIV2.

Hàm Earn() trong hợp đồng thông minh ControllerV4
Hàm ký gửi () trong hợp đồng StrategyCmpdDAIV2

Bước 4: Gọi lại hàm swapExactJarForJar() trong hợp đồng thông minh ControllerV4 tại địa chỉ 0x6847259b2b3a4c17e7c43c54409810af48ba5210 và chuyển vào các lọ bẩn số 3 và số 4, 0, 0, địa chỉ của hợp đồng thông minh CurveProxyLogic và 0x20 làm tham số .

Ở đây 0x20 là một tham số injection, mục đích là để hợp tác với địa chỉ hợp đồng thông minh CurveProxyLogic để thực thi chức năng add_liquiditya() trong hợp đồng thông minh CurveProxyLogic tại địa chỉ 0x6186e99d9cfb05e1fdf1b442178806e81da21dd8.

Hũ bẩn số 3:

0xa2da08093a083c78c21aeca77d6fc89f3d545aed

Hũ bẩn số 4:

0xa445e12d69e8bd60290f6935d49ff39ba31c6115

Địa chỉ hợp đồng thông minh CurveProxyLogic: 0x6186e99d9cfb05e1fdf1b442178806e81da21dd8

Hàm swapExactJarForJar() sử dụng địa chỉ hợp đồng thông minh CurveProxyLogic và các tham số chèn để thực thi chức năng đã chỉ định
Hàm add_liquiditya() trong hợp đồng thông minh CurveProxyLogic

Sau bước này, dung lượng lưu trữ trong StrategyCmpDAIV2 được chuyển từ hợp đồng thông minh StrategyCmpDAIV2 sang hợp đồng thông minh ControllerV4 trong bước thứ ba.

Cho đến nay, tất cả các mã thông báo có thể rút được lưu trữ trong hợp đồng thông minh ControllerV4 dưới dạng cDAI và kẻ tấn công có đủ điều kiện để rút cDAI.

Trong bước thứ năm, kẻ tấn công gọi hàm redeUnderlying() trong hợp đồng thông minh CErc20Delegator tại địa chỉ 0x5d3a536e4d6dbd6114cc1ead35777bab948e3643 và gọi nội bộ CErc20 tại địa chỉ 0xbb8be4772faa655c255309afc3c5207aa7b896fd các chức năng nói dối(), mua lạiUnderlyingInternal() và mua lạiFresh().

Cuối cùng, chuyển đổi tất cả cDAI thu được thành DAI, rút ​​tất cả DAI và hoàn thành cuộc tấn công.

Hàm redeUnderlying() trong CErc20Delegator

Chức năng redeUnderlying() trong CErc20

Lời khuyên an toàn

Lời khuyên an toàn

Nhiều cuộc tấn công DeFi đã chỉ ra một thực tế: "được kiểm toán" không có nghĩa là nó được đảm bảo về mặt bảo mật.

Thực tế là Pickle Finance đã vượt qua cuộc kiểm toán bảo mật vào tháng 10 hoặc sớm hơn không có nghĩa là tất cả các hợp đồng thông minh mới của họ đã được kiểm tra bảo mật theo thời gian thực.

Lợi nhuận cao đi kèm với rủi ro cao và sự bùng phát của lỗ hổng này cũng là một lời cảnh báo.

Đảm bảo an ninh hoàn chỉnh = kiểm toán bảo mật + phát hiện thời gian thực + bảo vệ tài sản = dịch vụ kiểm toán CertiK +CertiK phát hiện các nhà tiên tri bảo mật trong thời gian thực+Quét nhanh CertiK+Nhóm quỹ bảo vệ tài sản phi tập trung của CertiKShield

Chuỗi dịch vụ và công cụ bảo mật của CertiK đáp ứng nhu cầu bảo mật tài sản của các dự án và người dùng.

Nếu bạn có nhu cầu kiểm toán, vui lòng nhấp vào hộp thoại ở cuối tài khoản chính thức của CertiK và để lại tin nhắn để được tư vấn và báo giá miễn phí!

CertiK
作者文库