Back to Blog

「安全な転送」が安全でなくなる時:QBridgeセキュリティインシデントからの教訓

Code Auditing
2022年1月28日
3 min read

1月28日、QBridgeが攻撃を受け、約8000万米ドル相当の資産が盗難に遭いました。分析の結果、コードにおける根本的な原因は safeTransfer (および safeTransferFrom)関数の実装にあることが分かりました。

根本原因

第一に、このプロジェクトではトークン転送に一般的なOpenZeppelinのSafeERC20ライブラリを使用していませんでした。その代わりに、SafeTokenと呼ばれるライブラリを独自に実装していました。

第二に、実装においてターゲットが有効なコントラクトであるか(あるいはゼロアドレスではないか)のチェックが行われていませんでした。

第三に、 EVMの低レベルコール(low-level call)は、ターゲットコントラクトがゼロアドレスである場合にfalseを返しません。 これは開発者の一般的な認識とは矛盾する挙動です。

もちろん、今回のインシデントには他にも、ゼロアドレスがホワイトリストに入れられていたなど、いくつかの理由があります。しかし、コードがこの特別なケースを適切に処理できていれば、脆弱性にはなり得ませんでした。

ちなみに、同様のコードを使用している他のプロジェクトも存在します。それらも同様の問題に対して脆弱である可能性があります。

実験

ターゲットコントラクトがゼロの場合にVMがfalseを返さないという第三の理由を確認するために、以下のようなテスト用コントラクトを作成しました。

TestSafeTransfer.test() を実行しても、リバート(revert)することはありません。

教訓とリスク軽減策

私たちは以下を推奨します:

  • 非常によく練られた理由がない限り、車輪の再発明はせず、広く使われているライブラリを使用すること。
  • 資産転送の前後で残高を確認し、転送された資産の数量が期待通りであることを保証すること。これにより、デフレトークンやインフレトークンの問題も回避できます。

BlockSecについて

BlockSecは、世界的に著名なセキュリティ専門家グループによって2021年に設立された、先駆的なブロックチェーンセキュリティ企業です。当社は、Web3の普及を促進するため、新興の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

Sign up for the latest updates
安全な保管を超えて、第2部:ウォレットの暗号技術を安全に実装する
Security Insights

安全な保管を超えて、第2部:ウォレットの暗号技術を安全に実装する

攻撃者は、保護された秘密鍵のコピーを読み取らずに、その秘密鍵を復元できるのでしょうか。『Beyond Secure Storage』の第2部では、乱数の品質不足、エントロピーの損失、署名用ノンスの不備によって鍵の予測や復元が可能になった6件の事例を検証します。そこから鍵生成と署名に関する実装要件を導き出し、決済機関がコードレビューと導入済みシステムのテストを通じて、それらをどう評価できるかを説明します。

安全な保管を超えて、第1部:安全な決済・署名ワークフローの設計
Security Insights

安全な保管を超えて、第1部:安全な決済・署名ワークフローの設計

攻撃者が秘密鍵を盗まずに、認可されていない操作が有効な署名を得ることは、なぜ可能なのでしょうか。「安全な保管の先へ」第1回では、Bitget、Bybit、Binanceなどの事例を通じて、支払い要求、トランザクションの構築、署名、実行、決済の各段階における認可の不備を検討します。そのうえで、認可されていない操作を防ぎ、損失を抑えるための設計原則を導き出し、レビュー、監査、ペネトレーションテスト、演習によって、それらの防御策をどう検証できるかを説明します。

NEAR Intentsの悪用:返金処理の欠陥とセキュリティ上の教訓
Security Insights

NEAR Intentsの悪用:返金処理の欠陥とセキュリティ上の教訓

NEAR Intentsへの攻撃では、過大な払い戻しイベントを利用し、預け入れた資産が返還された後も内部残高を維持しました。本分析では、レシートの処理の流れと、合計3,865,021 USDTに上るBNB Chainでの7件の出金を再構成します。また、これらの資金流出とプロジェクトが報告した全額回収を区別し、NEARスマートコントラクトの開発と監査におけるセキュリティ上の考慮事項を示します。

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit
「安全な転送」が安全でなくなる時:QBridgeセキュリティインシデントからの教訓