Skip to content
DeFi

Polymarketエクスプロイト:コントラクトのバグではなく、流出した秘密鍵

By Anurag Verma•May 23, 2026
Polymarketエクスプロイト:コントラクトのバグではなく、流出した秘密鍵

2026年5月22日、オンチェーン調査員ZachXBTがPolymarketのウォレットの一つから資金が流出していることを指摘した。初期の見積もりでは約52万ドルとされていたが、チームが詳細を確認する頃には66万〜70万ドルに膨れ上がっていた。リエントランシーはない。オラクル操作もない。巧妙なフラッシュローンの演出もない。ただ、本来あってはならない場所に秘密鍵が渡ってしまっただけだ。

Polymarketのエクスプロイトは、誰もがTrail of BitsやOpenZeppelinに依頼して徹底的に監査させるスタックの部分には触れていなかった。攻撃されたのは内部のトップアップウォレット、報酬の支払いや運営を円滑に進めるための業務用アカウントだ。このようなウォレットが監査のスコープに含まれることはない。なぜなら、それはコントラクトではなく、誰かのインフラ上に置かれた鍵だからだ。

それが居心地の悪い部分だ。ブリッジやDVNの設定ミスが見出しを飾った一年を経て、世界で最も資金調達額の多い予測市場が、最も基本的な失敗によって資金を抜き取られた。

Polygonで実際に何が起きたか

流出したアカウントは、プロトコルのコアコントラクトで保管されているユーザー資金ではなく、業務用ウォレットだった。CoinDesk の報道によると、ZachXBTが約52万ドルの流出を発見し、Polymarketのチームはカスタマー資金は安全だと述べた。攻撃者はPolygon上のウォレットからPOLや他の資産を一掃し、その後は攻撃者の常套手段として、誰かが資金を凍結する前にブリッジを経由して分散させた。

Decryptは数字を70万ドル近くとして報告し、具体的に内部トップアップウォレットだと特定した。数字の相違は最初の24時間では正常なことだ。メカニズムに異論はない。誰かが鍵を手に入れた。

これがPolygon POLエクスプロイトと呼ばれるのは、ウォレットにあった資産がPOLだったという意味においてのみだ。チェーンは機能した。コントラクトは機能した。失敗したのは、一人の人間が鍵で管理する業務用ウォレットのカストディだった。

UMA CTF Adapterが問題ではなかった理由

Polymarketのマーケット決済はUMAのオプティミスティックオラクル、具体的にはUMA CTF Adapterを通じて行われる。これは質問を投稿し、異議申し立てを処理し、結果を決済するコントラクトだ。理論上、最も敵対的なリスクを抱えているのはこの部分だ。監査されている。数千のマーケットを通じて実戦テストされてきた。

そして今回の件とは何の関係もない。

これは人々が軽視するだろうが、軽視すべきでない重要な点だと思う。スマートコントラクト層は持ちこたえた。オラクルも持ちこたえた。崩壊したのは、人間が鍵で管理するウォレット、つまり人間が(またはCIパイプライン、もしくはホット署名サービスが)アクセスできる鍵だった。私たちはブルマーケットの間、形式的検証を持つ部分を強化することに費やし、.envファイルしかない部分は無視してきた。

運用キーこそが今や本当の攻撃面

2026年のインシデントのパターンは明らかだ。Solidityは改善されている。監査人は仕事が得意だ。形式的手法は、かつて9桁の資金を流出させていたリエントランシーのバグを捕捉する。そのため攻撃者は移動した。

彼らは柔らかい部分に移動した:

  • 報酬、ガスのトップアップ、マーケットメイキングに使われるホットウォレット。
  • ローンチ後もローテーションされなかったデプロイヤーキー。
  • 署名とブラウジングに同じラップトップを使うマルチシグの署名者。
  • プロダクションでトランザクションに署名できるCI/CDシークレット。

そのどれも監査レポートには含まれない。規制を受ける取引所でセキュリティのスコープを決める際、コントラクトレビューは作業の三分の一程度に過ぎない。残りはHSM、署名者の分離、鍵の儀式ドキュメント、そして「深夜3時に誰が資金を動かせて、何が彼らを止めるか」という非常に地味な問いだ。ほとんどのチームが露出しているのは、まさにその最後の部分だ。

これはKelp DAO LayerZeroの損失と同じ教訓だ。コントラクトのバグではなく、運用層の設定ミスから2億9200万ドルが失われた。メカニズムは異なるが、根本原因は同じだ。誰も監査しない退屈な部分。

66万ドルの業務ウォレットがあるべき姿

一つの鍵が66万ドルを動かせるなら、それは設計上の決断であって、不運ではない。意味のある価値を保有する業務用ウォレットに必要な最低限の対策がいくつかある:

  1. ウォレットのロジック自体に支出制限を設ける。 報酬のトップアップウォレットが、一つのトランザクションで全残高を送信できる必要はない。オンチェーンでレート制限をかけること。
  2. 一定額を超える場合は閾値署名を採用する。 小額の自動支払いはホットで構わない。たとえば1万ドルを超える場合は、2番目の署名者を必要とすべきだ。大口送金に低い閾値を設定したSafeマルチシグは難しくない。
  3. アプリケーション環境からの鍵分離。 業務用ウォレットの署名鍵は、アプリケーションコード、依存関係、または侵害されたCIランナーが読み取れる場所に置いてはならない。
  4. 異常な資金流出で人間にアラートを送る監視システム。 ZachXBTはチームが発表する前にこれを捕捉した。自社のアラートがメンプールを監視するサードパーティより先を行くべきだ。

これは何も新しいことではない。「報酬用のウォレットだから」という理由で、チームが速く出荷しようとする際に削られるものだ。

誰も担わない監査スタックのギャップ

より深い問題は内部的な管轄問題だ。スマートコントラクトのセキュリティには明確なオーナーがいる。監査会社だ。運用キーのセキュリティには... ウォレットをセットアップした人、通常はデッドラインのプレッシャーの下で、多くの場合二度と見直されることなく。DeFiの壊れた監査スタックのコンテキストでこのギャップについて書いたことがある。認証はコントラクトをカバーし、コントラクトの境界で止まる。運用に関わるすべてはスコープ外であり、誰の関心も外だ。

規制当局や保険会社が運用セキュリティをオーナーのいる予算項目にすることを強制するまで、これは繰り返される。2026年のDeFi運用セキュリティは、スマートコントラクトセキュリティが2019年にあった状況とほぼ同じだ。重要だと認識されているが、誰も担わず、最後に予算が回ってくる。

Polymarketは大丈夫だろう。66万ドルは彼らの規模のプラットフォームにとって吸収可能であり、彼らの信用として、素早く明確にコミュニケーションを取った。しかし次にこれが起きるチームは、それを吸収するランウェイを持っていないかもしれない。報酬ウォレットではなくトレジャリーを枯渇させる鍵の漏洩は必ず来る。そしてそれはSolidityのバグではない。ラップトップ上の鍵だ。

ソース