先週金曜日、当社の監視システムは、BSC上のCoin98スマートコントラクト(0x8aaf408e06feed6a6a6182ea3c464035748b9b31 - 被害者コントラクト)に対する攻撃を検知しました。直ちにTwitter経由でプロジェクトオーナーにDMを送りましたが、返信はありませんでした。当時、脆弱性はまだ存在していたため、公開しませんでした。その後数時間後、プロジェクトオーナーが脆弱性を修正した新しいコントラクトを作成したことが判明しました。そのため、ここで脆弱性と修正についてまとめることが安全であると判断しました。
攻撃トランザクションと根本原因
当社の内部監視システムによって提起されたトランザクションが私たちの注意を引きました。慎重な調査の結果、swapExactTokensForTokens関数におけるrouteパラメータ(つまりルーター)のアクセス制御に起因することを確認しました。以下にそのコードを示します。
このコントラクトはrouteを盲目的に信頼し、ルーターのswapExactTokensForTokens関数を呼び出しました。これに先立ち、被害者コントラクトが所有するすべてのトークンをrouteに承認しました。しかし、routeは攻撃者によって侵害される可能性がありました。この場合、攻撃者は被害者コントラクトが所有するすべてのトークンを自身に転送し、WBNBと交換して利益を得ることができました。
以下は、攻撃トランザクションの例です。
脆弱性のステルス修正
先週金曜日にTwitterでプロジェクトオーナーにDMを送りましたが、返信はありませんでした。その後、本日コントラクトを再確認したところ、新しいスマートコントラクト(0x83f25d16bdf91f51120032f264dad0e1ab1c8227)がデプロイされていることがわかりました。この新しいコントラクトには、routeのためのホワイトリストがあります。
結論
スマートコントラクトが渡されたパラメータを盲目的に信頼するというケースを数多く見てきました。これは深刻なセキュリティホールを生み出します。
制御外のパラメータを信頼しないでください!
BlockSecについて
BlockSecは、世界的に著名なセキュリティ専門家グループによって2021年に設立された、先駆的なブロックチェーンセキュリティ企業です。当社は、Web3の普及を促進するために、新興の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



