Paraluniプロジェクト(https://twitter.com/paraluni)は、3月13日午前(UTC+8時)に攻撃を受けました。攻撃者は2つの脆弱性を利用してプロトコルを攻撃しました。最初の脆弱性は、渡されたトークンの検証の欠如であり、2番目は一般的なリエントランシーです。攻撃者はいくつかの攻撃トランザクションを実行しました。以下では、そのうちの1つ(0xf2bba649019ce40a67f0fb74e5e800257d359d9094b6ba6faea14ffa4d3446b1)を使用して、攻撃プロセス全体を説明します。
ステップI:paraRouterにliquidityを追加

攻撃者はBTCB-WBNBプール(インデックス=9)にaddLiquidityを呼び出し、プールはLPトークンを発行してUBT(攻撃者が作成したトークン)に与えます。この操作の後、UBTトークンはプールのLPトークンを保持します。BTCBとWBNBはフラッシュローンから借りていることに注意してください。
ステップII:MasterChefのdepositByAddLiquidityを呼び出す
攻撃者は、_pidを9としてdepositByAddLiquidityを呼び出し、UGTおよびUBTトークンをパラメータとして使用しました。しかし、この関数は、プールの準備トークンが渡されたトークン(UGTおよびUBT)と一致するかどうかをチェックしません。

次に、この関数はdepositByAddLiquidityInternalを呼び出し、それがparaRouterのaddLiquidityを呼び出します。この関数は、UGTおよびUBTトークンのtransferFrom関数を呼び出します。しかし、これらの2つのトークンは攻撃者によって制御されています。UBTのtransferFrom関数内で、攻撃者はMasterChefコントラクトのdeposit関数を呼び出し、最初のステップで取得したLPトークンをMasterChefコントラクトに預けました。

残念ながら、deposit関数での残高の変更により、addLiquidity後のnewBalanceはoldBalanceよりもはるかに大きくなりました。この方法で、攻撃者はMasterChefコントラクトで二重のクレジットを得ました。

ステップIII:利益を得る
攻撃者は最終的にUBT.withdrawAssetとMasterChef.withdrawを呼び出し、LPトークンを償還してBTCBとWBNBを取得しました。流動性の数は攻撃者が持つべき数よりも多いため、攻撃者は利益を得ました。

教訓
リエントランシーの問題に加えて、渡されたトークンが検証されていなかったことが根本原因の1つです。VisorケースやCoin98ケースのような同様の問題も発生しています。
BlockSecについて
BlockSecは、2021年に世界的に著名なセキュリティ専門家グループによって設立された、先駆的なブロックチェーンセキュリティ企業です。当社は、Web3の世界のセキュリティと使いやすさを向上させ、その大規模な普及を促進することに尽力しています。この目的のために、BlockSecはスマートコントラクトとEVMチェーンのコード監査サービス、セキュリティ開発と脅威のプロアクティブなブロックのためのPhalconプラットフォーム、資金追跡と調査のためのMetaSleuthプラットフォーム、およびWeb3開発者が暗号世界を効率的にサーフィンするためのMetaSuites拡張機能を提供しています。
現在までに、当社はMetaMask、Uniswap Foundation、Compound、Forta、PancakeSwapなど300社以上の著名なクライアントにサービスを提供し、Matrix Partners、Vitalbridge Capital、Fenbushi Capitalなどの著名な投資家から2回の資金調達で数千万米ドルを受け取っています。
公式ウェブサイト:https://blocksec.com/ 公式Twitterアカウント:https://twitter.com/BlockSecTeam



