1月28日、QBridgeが攻撃を受け、約8000万米ドル相当の資産が盗まれました。分析の結果、コードの根本原因はsafeTransfer(およびsafeTransferFrom)関数の実装にあることが判明しました。
根本原因
まず、このプロジェクトでは、トークン転送に一般的なOpenZeppelin SafeERC20ライブラリを使用せず、代わりにSafeTokenというライブラリを実装していました。
次に、実装では、ターゲットが有効なコントラクトであるか(またはゼロアドレスであるか)を確認していませんでした。
第三に、EVMの低レベルコールは、ターゲットコントラクトがゼロである場合にfalseを返しません。これは開発者の常識に反します。

もちろん、このインシデントには、例えばゼロアドレスがホワイトリストに入れられていたなど、他の理由もいくつかあります。しかし、コードがこの特別なケースを適切に処理できれば、脆弱性はありません。
ちなみに、類似のコードを使用している他のプロジェクトも存在します。それらも同様の問題の影響を受ける可能性があります。
実験
VMがターゲットコントラクトがゼロの場合にfalseを返さないという3番目の理由を確認するために、以下に示すテストコントラクトを開発しました。

TestSafeTransfer.test()の実行はリバートしません。

教訓とリスク軽減策
私たちは以下を提案します。
- 非常に良い理由がない限り、自分で車輪を再発明するのではなく、一般的なライブラリを使用してください。
- 資産転送の前後に残高を確認し、転送された資産の数量が期待値と一致することを確認してください。これにより、デフレまたはインフレトークンの問題も回避できます。
BlockSecについて
BlockSecは、2021年に世界的に著名なセキュリティ専門家グループによって設立された、先駆的なブロックチェーンセキュリティ企業です。当社は、新興のWeb3世界におけるセキュリティとユーザビリティの向上に専念し、その普及を促進することを目指しています。この目的のために、BlockSecはスマートコントラクトおよびEVMチェーンのセキュリティ監査サービス、セキュリティ開発とプロアクティブな脅威ブロックのためのPhalconプラットフォーム、資金追跡と調査のためのMetaSleuthプラットフォーム、そしてWeb3開発者が仮想通貨の世界を効率的にサーフィンするためのMetaDock拡張機能を提供しています。
現在までに、当社はMetaMask、Uniswap Foundation、Compound、Forta、PancakeSwapなど300社以上の著名なクライアントにサービスを提供し、Matrix Partners、Vitalbridge Capital、Fenbushi Capitalなどの著名な投資家から2回の資金調達で数千万米ドルを受け入れています。
公式ウェブサイト:https://blocksec.com/
公式Twitterアカウント:https://twitter.com/BlockSecTeam



