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



