<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      【漏洞分析】Penpie 攻擊事件:重入攻擊構造獎勵金額

      背景信息

      2024 年 9月 3日,Penpie 合約遭受重入攻擊,攻擊者在重入階段向合約添加流動性來冒充獎勵金額,從而獲取合約內原有的獎勵代幣。資產損失高達 2734 萬美元。

      2024 年 5月,Penpie 平臺新增了推出了無需許可的資產池功能,即允許 Pendle 上的用戶可以在該平臺上自建任何 PT 或 YT 代幣的 LP 資金池,用戶在 Penpie 平臺上存入 LP 后,可以額外多獲得一份代幣獎勵。

      Trace 分析

      攻擊者首先在前置交易中新建了一個 market,并將 SY 地址設置為攻擊合約 0x4af4

      image

      隨后在攻擊交易中,攻擊者閃電貸了四種資產(由于四種資產的操作類似,我們選擇其中一種資產 wstETH 進行分析)

      image

      閃電貸內進行了這幾類操作

      image

      batchHarvestMarketRewards 函數中進行了重入攻擊

      image

      代幣流向分析

      1. 0x6e79.batchHarvestMarketRewards:
        1. redeemRewards:
          1. [Reentrancy] addLiquiditySingleTokenKeepYt:deposit 16010 wstETH to [Pendle: RouterV4], get 8860 [MarketToken]
          2. [Reentrancy] depositMarket:deposite 1751 [MarketToken] to [0x6e79], received 1751 [StakingToken]
        2. queueNewRewards:Claim 1751 [MarketToken] to 0xd128
      2. multiclaim:Claim 1751 [MarketToken] from 0xd128
      3. withdrawMarket:burn 1715 [StakingToken], get 1715 [MarketToken]
      4. removeLiquiditySingleToken:burn 10611 [MarketToken], get 18733 wstETH
      5. transfer:Repay flashloan

      漏洞分析

      CreatePool

      任何用戶都可以在 Pendle 上注冊 Pool(market)

      https://etherscan.io/address/0x588f5e5d85c85cac5de4a1616352778ecd9110d3#code

      image

      其中的 onlyVerifiedMarket 檢查,會檢查 pool 地址是否在 allMarkets 中。而任何人都可以創建池子,繞過這個限制。

      https://vscode.blockscan.com/ethereum/0x45cF29F501d218Ad045EB8d622B69968E2d4Ef5C

      image

      batchHarvestMarketRewards

      batchHarvestMarketRewards 函數中,通過計算調用 market.redeemRewards 函數前后的 MarketToken 數量差值,來得到作為獎勵代幣的 wstETH 數量。

      攻擊者利用這個設計缺陷,調用 0x6e79.batchHarvestMarketRewards 函數觸發重入攻擊,使得 bounsTokens 的值增大。

      https://vscode.blockscan.com/ethereum/0xff51c6b493c1e4df4e491865352353eadff0f9f8

      batchHarvestMarketRewards(Part1)

      image

      redeemRewards

      由于 market 合約為攻擊者創建的合約,其 SY 在創建時被設為了攻擊合約的地址。

      https://vscode.blockscan.com/ethereum/0x40789E8536C668c6A249aF61c81b9dfaC3EB8F32

      image

      函數調用流程

      redeemRewards -> _redeemRewards -> _updateAndDistributeRewards -> _updateAndDistributeRewardsForTwo -> _updateRewardIndex -> _redeemExternalReward -> StandardizedYield.claimRewards

      SY 為攻擊合約地址,在 claimRewards 函數中進行重入。

      image

      [Reentrancy] addLiquiditySingleTokenKeepYt & depositMarket

      [Reentrancy] addLiquiditySingleTokenKeepYt:deposit 16010 wstETH to [Pendle: RouterV4], get 8860 [MarketToken]
      [Reentrancy] depositMarket:deposite 1751 [MarketToken] to [0x6e79], received 1751 [StakingToken]

      重入攻擊 trace,通過 addLiquiditySingleTokenKeepYtdepositMarket 操作將 wstETH 轉換為 MarketToken ,并質押到 0x6e79合約中。

      image

      batchHarvestMarketRewards(Part2)

      通過重入攻擊,使得合約在計算 originalBonusBalance 獎勵數量時誤以為獲得了 1751 的獎勵(實際上并沒有獲得任何獎勵,余額多出來的部分是重入的時候添加流動性那部分)。

      image

      originalBonusBalanceleftBonusBalance 的值會按照 _harvestBatchMarketRewards -> _sendRewards -> _queueRewarder 的調用路徑傳遞到 _queueRewarder 函數中。

      此時合約會向 0xd128 地址發送 1751 _rewardToken

      攻擊者在通過重入添加流動性時,所添加的代幣數量 1751 等于 0x6e79 合約中代幣余額的數量 1751,其目的是構造“新增獎勵”的數量等于“賬戶余額”,使得接下來的 queueRewarder 函數將 0x6e79 合約中的所有代幣轉移到 0xd128。

      image

      queueNewRewards

      queueNewRewards:Claim 1751 [MarketToken] to 0xd128

      0xd128 從 0x6e79 處轉移獎勵代幣。其中0xd128是rewardPool合約。

      image

      multiclaim

      multiclaim:get 1751 [MarketToken] from 0xd128

      攻擊者從 0xd128 合約中領取獎勵(完成獲利,這筆資金的來源是 0x6e79 合約的余額)

      image

      withdrawMarket

      withdrawMarket:burn 1751 [StakingToken], get 1751 [MarketToken]

      取回在重入中通過 depositMarket 存入的 1751 [MarketToken]

      image

      removeLiquiditySingleToken

      removeLiquiditySingleToken:burn 10611 [MarketToken], get 18733 wstETH

      此時攻擊者手里持有原來的 8860 ,加上攻擊所得 1751,一共持有 10611 [MarketToken]

      最終攻擊者移除 10611 流動性,獲得 18733 的 wstETH。

      image

      Repay flashloan

      向閃電貸歸還 16010 wstETH,獲利 2723 wstETH。

      后記

      這次的攻擊事件影響挺大的,涉及的金額也是巨大。在事件發生以后,許多安全從業人員都對這件事情進行了分析,我也第一時間嘗試著從 trace 去分析這個攻擊事件。由于當時事發不久,還沒有廠商公布詳細的漏洞分析結果,再加上個人叛逆的心態想著難道不參考別人的分析報告我就分析不出來了嗎,這次的攻擊事件分析是在一天的時間內硬啃 trace 分析得來的。這樣的分析對我來說進行得并不容易,且最終輸出的分析文檔,也會缺乏了一些對項目架構與設計的理解,有骨沒肉,讀起來很干巴。我反思了一下我為何會落入如此窘境,歸根究底還是對項目的不熟悉。在不熟悉項目的前提下做的攻擊分析,有形無意,味如嚼蠟。這是一個不可忽視的問題,我需要想想辦法。

      posted @ 2024-09-05 23:24  ACai_sec  閱讀(653)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲一区在线成人av| 亚洲成人动漫av在线| 日本夜爽爽一区二区三区| 国产精品任我爽爆在线播放6080| 亚洲成女人图区一区二区| 亚洲永久精品ww47永久入口| 白嫩少妇无套内谢视频| 欧美精欧美乱码一二三四区 | 亚洲AV成人片在线观看| 强奷漂亮少妇高潮麻豆| 漠河县| 午夜精品福利亚洲国产| 午夜av高清在线观看| 加勒比中文字幕无码一区| 亚洲最大天堂在线看视频| 加勒比无码人妻东京热| 石渠县| 国产又黄又爽又不遮挡视频| 中国熟妇毛多多裸交视频| 亚洲欧洲日韩精品在线| 开心五月激情五月俺亚洲| 欧美国产综合视频| 成全我在线观看免费第二季| 亚洲综合伊人五月天中文| 国产成人无码A区在线观看视频| 欧美日韩中文字幕视频不卡一二区| 国产一区二区三区av在线无码观看| 亚洲AV日韩AV综合在线观看| 少妇一边呻吟一边说使劲视频| 国产成人拍国产亚洲精品| 日本一区二区三区专线| 大肉大捧一进一出视频| 亚洲欧美日韩综合久久| 国产亚洲国产精品二区| 人妻中文字幕不卡精品| 日韩av一区二区三区不卡| 欧美乱大交aaaa片if| 国产综合一区二区三区麻豆| 日韩中文字幕人妻一区| 国产成人综合久久久久久| 亚洲精品国产熟女久久久|