Back to Blog

BlockSecの「カウンターエクスプロイト」ジャンプに関する見解:脆弱性は本当に存在するのか?

Code Auditing
March 1, 2023
7 min read

最近、Oasisマルチシグを介したMakerDao Vaultからの資金移動に対する「カウンターエクスプロイト」 に大きな注目が集まっています。その中で、2月18日にPlatypusを支援して240万ドルを救済するためのカウンターエクスプロイトに関与した ため、BlockSecがこの操作の背後にある「ホワイトハット」ではないかという問い合わせをいくつか受けています。BlockSecはJumpの事件のいかなる行為にも関与していないことを明確にしたいと考えています。 詳細な分析(Dan SmithによるBlockWorksの優れた分析に感謝)の後、Jumpの「カウンターエクスプロイト」のやり方はPlatypusのケースとは根本的に異なると考えています。

さらに、Oasisの声明によれば、カウンターエクスプロイトは管理マルチシグアクセスにおける脆弱性により可能になった とされています。

Oasisの声明からのスクリーンショット
Oasisの声明からのスクリーンショット

しかし、我々の分析によれば、カウンターエクスプロイトの主要なステップは以下の通りです。

  • 遅延実行を無効にする。これは、Service RegistryコントラクトのオーナーであるOasisマルチシグウォレットによって実行されるように設計されています。
  • AutomationBotコントラクトのAUTOMATION_EXECUTORやCloseCommandコントラクトのMCD_VIEW、MULTIPLY_PROXY_ACTIONSなど、重要なロールに登録されたコントラクトアドレスを変更する。これにより、OasisマルチシグウォレットはAutomationBotを直接呼び出してクローズコマンドを実行できるようになり、その実際の実行操作は、ExploiterのVaultをシフトするために新しいものに置き換えられます。

我々の分析は、これらの主要なステップが、管理マルチシグアクセスにおける主張されている脆弱性によるものではないことを示唆しています。

免責事項:このブログは、オンチェーントランザクションと公開情報に基づいて書かれています。ご質問やコメントがありましたら、[email protected]までお気軽にお問い合わせください。

全体的なプロセス

この操作には複数のアドレスが関与していました。それらの一部を以下のGoogleドキュメントにリストアップします。

https://docs.google.com/spreadsheets/d/1k0PEci8wQ16X7JT7KRq9SvhaCA2yerJcqLn6EfAoPZs/edit?usp=sharing

具体的には、Jumpのカウンターエクスプロイトのハイレベルなアイデアは以下の通りです。

  1. ExploiterがOasisが提供する自動売買サービスを有効にしたため、ExploiterのMaker VaultはOasis AutomationBotスマートコントラクトによって管理できます。

  2. AutomationBotは、AUTOMATION_EXECUTORのロールを持つアドレスによってのみ操作できます。このアドレスは、Oasis Service Registryコントラクトの設定であり、Oasisマルチシグウォレットによって更新できます。しかし、Oasis Service Registryコントラクトの設定の更新には遅延実行メカニズムがあり、Oasisマルチシグウォレットによって無効にすることができます。

  3. AutomationBotによって実行される実際のコントラクトと関数も、Oasis Service Registryで設定可能です。

したがって、OasisマルチシグウォレットはまずOasis Service Registryコントラクトの遅延実行を無効にし、Oasis Service Registryコントラクトの設定を変更して、AUTOMATION_EXECUTORロールを自身(マルチシグウォレット)に設定します。この変更は即座に有効になります。その後、マルチシグウォレットはAutomationBotを呼び出して、ExploiterのMaker Vaultを乗っ取ることができるコマンド(シフトと付与)を実行します。AutomationBotはExploiterのVaultを管理できるため、操作全体は成功します。

このプロセスは、我々が攻撃者のコントラクトに脆弱性を見つけ、Platypusと共有したPlatypusのケースとは根本的に異なると考えています。 その後、Platypusは攻撃者のコントラクトを悪用して、自身の資金を移動させた。しかし、Jumpのケースでは、Oasisマルチシグは遅延実行メカニズムを無効にし、コントラクトの動作を完全に変更できる重要な設定を更新し、AutomationBotの管理ロールを利用してExploiterに代わってMakerのVaultを操作しました。

以下で、Jumpの「カウンターエクスプロイト」の全体像を詳しく説明します。

詳細なステップ

この操作には、Jump、Oasis、Wormhole Exploiter、Makerを含む複数のプロトコルと当事者が関与しています。Makerはこの操作中にいかなる行動も取らないことに注意してください。

具体的には、ExploiterはMaker Vault(30100 および 30179)を作成し、ETHを担保として使用し、VaultからDAIを借入します。Exploiterはまた、Oasisが提供する自動売買サービスを活用してMaker Vaultの担保率を管理しました。

Oasisの自動化サービスを使用するためには、Oasisから提供されるAutomationBot というスマートコントラクトを、Vaultの管理リストに追加する必要があります。これは、AutomationBotがExploiterによって作成されたMaker Vaultを制御できることを意味します。その後、AutomationBotはVaultを操作し、Vaultの担保と負債をJumpが制御する別のVaultに転送できます。これが「カウンターエクスプロイト」の基本的なプロセスです。なお、AutomationBotを呼び出すには、ServiceRegistry コントラクトにAUTOMATION_EXECUTORとして登録されているアドレスからトランザクションを呼び出す必要があります。

ステップ1:アドレス04e1をOasisマルチシグウォレットに追加

トランザクション により、アドレス04e1がOasisマルチシグウォレット に追加されました。このウォレットには現在12のアドレスがあり、4つの署名者による確認が必要です。

ステップ2:Oasis Service Registryの遅延実行を無効にする

このトランザクション は、changeRequiredDela(0)を呼び出すことにより、Oasis Service Registry の遅延実行を無効にします。Oasis Service Registryは、「カウンターエクスプロイト」で使用されるAutomationBotによって使用される重要な設定情報が格納されているスマートコントラクトです。通常、設定変更には、例えば「カウンターエクスプロイト」で使用されるupdateNamedServiceのような重要な操作のための遅延実行メカニズムがあります。通常、遅延実行は透明性を確保するためのセキュリティメカニズムであり、重要な情報の更新は即座には有効にならず、他の人が再確認できるようになっています。

なお、changeRequiredDelayの呼び出しは、reqDelayへの変更がまだ有効になっていないため、遅延実行によって制限されています。

ServiceRegistry.sol
ServiceRegistry.sol
ServiceRegistry.sol
ServiceRegistry.sol

ステップ3:「カウンターエクスプロイト」を実行する

このトランザクション は、「カウンターエクスプロイト」を実行します。BlockSecが開発したトランザクション分析ツールであるPhalcon によって出力された実行トレースを見てみましょう。

このトランザクションはアドレス04e1から開始され、Oasisマルチシグウォレットを通じて実行されていることに注意してください。これは、操作が少なくとも4つの署名者によって署名されていることを意味します。

ステップ3.1:遅延実行を無効にする

トレースに示すように、遅延は再度ゼロに設定されています。これは、ステップ2で遅延実行を無効にするアクションを適用するためです。

ステップ3.2:2つのコントラクトを作成し、サービスレジストリを更新する

2つの新しいコントラクトが作成され、これらはMCD_VIEWおよびMULTIPLY_PROXY_ACTIONSコントラクトとして使用されます。

  • MCD_VIEW: 0xceca8d8410797bc6c575fd8ba957708d1e85ed36
  • MULTIPLY_PROXY_ACTIONS: 0xcaef24016d0fba2c1a9427371e0d79c5781b6ea8

その後、これらの2つのコントラクトはOasisサービスレジストリコントラクトに更新されます。

ステップ3.3:Automation Executorを変更する

Oasisマルチシグは、ServiceRegistry コントラクトにAUTOMATION_EXECUTORとして登録されています。これは、このロールを持つ登録済みコントラクトのみがAutomationBotコントラクトを呼び出すことができるため、必要です。

AutomationBot.sol
AutomationBot.sol
AutomationBot.sol
AutomationBot.sol

ステップ3.4:ExploiterのVaultをクローズするようにAutomationBotに依頼する

重要なプロセスは、AutomationBotのexecute関数から始まります。詳細な実行関数は引数で渡されます。

プロセス全体を理解するために、まずこの関数を見てみましょう。

AutomationBot.sol
AutomationBot.sol

ハイレベルなロジックは、ボットがまずVaultからDAIを引き出し(268行目)、その後、指定されたcdpIdのVaultで実行するために具体的なコマンドコントラクトを呼び出す(274行目から278行目)ことです。このプロセス中、コマンドアドレスはCloseCommandコントラクトです。その後、isExecutionCorrectのチェックが必要です。

以下は、CloseCommandコントラクトのexecute関数を示しています。これは、Service RegistryコントラクトからKEY MULTIPLY_PROXY_ACTIONS を使用して実際の実行者コントラクトアドレスを取得します。MULTIPLY_PROXY_ACTIONS に対応するコントラクトアドレスは新しいものに更新されていることに注意してください。そのため、CloseCommandの実際の実行は、新しいコントラクトで任意の操作を実行するように制御可能です。

CloseCommand.sol
CloseCommand.sol
CloseCommand.sol
CloseCommand.sol

isExecutionCorrectがCloseCommandで呼び出され、実行が成功したかどうかを確認することに注意してください(AutomationBot.solの278行目)。viewアドレスが更新されているため、viewerContract.getVaultInfo(cdpId)の戻り値は、24行目(CloseCommand.sol)のチェックを通過できる任意の値を返すことができます。

コードをすべて確認した後、実行トレースを見てみましょう。トレースから、automationBotがCloseCommandコントラクトを呼び出していることがわかります。CloseCommandコントラクトは、置き換えられたMULTIPLY_PROXY_ACTIONSコントラクトを呼び出して新しいVault(30231)を作成し、Vault 30100(Exploiterの)を30231(新しく作成されたもの)にシフトし、新しいVault 30231をOasisマルチシグウォレットに付与します。Exploiterのもう一方のVault(30179)にも同様の操作が行われます。

ステップ3.5:状態を復元する

Service Registryで変更されたエントリを復元し、遅延実行を再度有効にします。

ステップ3.6:Vaultをアドレス1536に付与する

これで、新しいVault(30231および30232)はOasisマルチシグウォレットによって制御されるようになります。その後、VaultはこれらのトランザクションTX1 TX2で0x15364305a06ba3ac6ba13dfe97ca0bad639adf41に付与されます。その後、このアドレスはVaultの負債を支払い、担保(Ethereum)を引き出すことができます。担保率は高い(Vault 30100で約293%)ため、返済して担保を引き出すことで、Vault 30100の約7600万の負債を支払うコストで、約12万Ethereumを取り戻すことができます。これらの操作の詳細については、Makerプロトコルのドキュメント を参照してください。

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

Sign up for the latest updates
The Decentralization Dilemma: Cascading Risk and Emergency Power in the KelpDAO Crisis
Security Insights

The Decentralization Dilemma: Cascading Risk and Emergency Power in the KelpDAO Crisis

This BlockSec deep-dive analyzes the KelpDAO $290M rsETH cross-chain bridge exploit (April 18, 2026), attributed to the Lazarus Group, tracing a causal chain across three layers: how a single-point DVN dependency enabled the attack, how DeFi composability cascaded the damage through Aave V3 lending markets to freeze WETH liquidity exceeding $6.7B across Ethereum, Arbitrum, Base, Mantle, and Linea, and how the crisis forced decentralized governance to exercise centralized emergency powers. The article examines three parameters that shaped the cascade's severity (LTV, pool depth, and cross-chain deployment count) and provides an exclusive technical breakdown of Arbitrum Security Council's forced state transition, an atomic contract upgrade that moved 30,766 ETH without the holder's signature.

Weekly Web3 Security Incident Roundup | Apr 13 – Apr 19, 2026
Security Insights

Weekly Web3 Security Incident Roundup | Apr 13 – Apr 19, 2026

This BlockSec weekly security report covers four attack incidents detected between April 13 and April 19, 2026, across multiple chains such as Ethereum, Unichain, Arbitrum, and NEAR, with total estimated losses of approximately $310M. The highlighted incident is the $290M KelpDAO rsETH bridge exploit, where an attacker poisoned the RPC infrastructure of the sole LayerZero DVN to fabricate a cross-chain message, triggering a cascading WETH freeze across five chains and an Arbitrum Security Council forced state transition that raises questions about the actual trust boundaries of decentralized systems. Other incidents include a $242K MMR proof forgery on Hyperbridge, a $1.5M signed integer abuse on Dango, and an $18.4M circular swap path exploit on Rhea Finance's Burrowland protocol.

Weekly Web3 Security Incident Roundup | Apr 6 – Apr 12, 2026
Security Insights

Weekly Web3 Security Incident Roundup | Apr 6 – Apr 12, 2026

This BlockSec weekly security report covers four DeFi attack incidents detected between April 6 and April 12, 2026, across Linea, BNB Chain, Arbitrum, Optimism, Avalanche, and Base, with total estimated losses of approximately $928.6K. Notable incidents include a $517K approval-related exploit where a user mistakenly approved a permissionless SquidMulticall contract enabling arbitrary external calls, a $193K business logic flaw in the HB token's reward-settlement logic that allowed direct AMM reserve manipulation, a $165.6K exploit in Denaria's perpetual DEX caused by a rounding asymmetry compounded with an unsafe cast, and a $53K access control issue in XBITVault caused by an initialization-dependent check that failed open. The report provides detailed vulnerability analysis and attack transaction breakdowns for each incident.

Best Security Auditor for Web3

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

BlockSec Audit