Back to Blog

Solanaエコシステムの安全確保(7)— 型の混同

April 29, 2022

0. レビュー

1. 概要

前回のブログでは、一般的なマルチシグの実装について紹介しました。本稿では、もう一つのセキュリティ問題である「型混乱」について議論します。

2. デシリアライゼーション/シリアライゼーション

Solanaでは、プログラムの状態はアカウントに格納されます。型混乱の問題は、アカウントのデシリアライゼーション/シリアライゼーション中に発生します。プログラムのロジックは通常、データ構造に依存します。しかし、プログラムはデシリアライゼーション/シリアライゼーションプロセス中にアカウントの型を適切にチェックしない場合があります。これは攻撃者によって悪用され、予期せぬ損失につながる可能性があります。

3. コードレビュー (型混乱)

以下に、簡単なプログラムで型混乱の問題を例示します。テストコードはこちらで見つけることができます。

テストプログラムでは、UserMetadataの2つのデータ構造を実装しています。どちらも別のアカウントの公開鍵を記録します。

プログラムには3つの異なる命令があります。InitializeUser命令は、Userアカウントを作成し、承認済みアカウント(authority)を設定するように設計されています。同様に、InitializeMeta命令は、MetaDataアカウントを作成し、通常のアカウント(account)を設定するために呼び出されます。Test命令は、攻撃者がプログラムの検証ロジックをバイパスし、制御されたMetaDataで攻撃を実行できることを示しています。

Test()命令を順を追って見ていきましょう。プログラムは、渡されたUserアカウントの所有者がプログラム自身であることを保証します(86行目〜89行目)。デシリアライゼーション後(92行目)、プログラムは渡されたauthorityアカウントの公開鍵とUserアカウントに格納されている公開鍵を比較します。それらが等しくない場合、プログラムはリバートします(93行目〜96行目)。最後のチェックは、authorityアカウントがトランザクションに署名したことを確認することです。しかし、攻撃者が制御されたMetadataアカウントを渡した場合、すべてのチェックをバイパスすることができます。その理由は、プログラムがアカウントの型をチェックしないためです。プログラムはバイトの配列を受け取り、プログラムで定義されたさまざまな型の構造体に直接デシリアライズします。

さらなるテストのためにテストプログラムをデプロイしました。リンクはこちらで確認できます:https://explorer.solana.com/address/HW3fX9yUKV4zBRuBPotggG7MURscAXSRE5fDMdaia64m?cluster=testnet

3.1 トランザクションの送信

プログラムをデプロイした後、プログラムで提供されている3つの命令を順番に呼び出すスクリプトを作成します。

まず、InitializeUserInitializeMetaを呼び出します。Metadataアカウントに格納されるaccountアカウントとして、自身の公開鍵を設定することに注意してください。

test()関数では、MetadataアカウントをUserアカウントとして、自身の別のアカウントをauthority_infoとして渡します(347行目〜348行目)。プログラムはMetadataUser構造体としてデシリアライズし、すべてのチェックがバイパスされます。

トランザクションを送信し、そのトランザクションはこちらで確認できます:https://explorer.solana.com/tx/46e9uR4SoPZemkcwZxMFy3nKsBagjPUgA2zob68fiLJnD7oyHpcdDVoeXHEszqG2KAZxReKbQGFdz3oiRePgMjob?cluster=testnet。プログラムは成功を返しました。これは、チェックされていないアカウント型でチェックを正常にバイパスできたことを意味します。

4. まとめ

本稿では、Solanaにおける型混乱の問題について紹介しました。この問題を回避する方法は数多くあります。例えば、アカウントの型を記録する属性を構造体に1つ追加し、プログラムはアカウントへの読み書きを行う前に必ず型属性をチェックするようにすることができます。今後も、さらに多くの情報を共有していきますので、ご期待ください。

このシリーズの他の記事を読む:


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
Drift Protocol Incident: Multisig Governance Compromise via Durable Nonce Exploitation
Security Insights

Drift Protocol Incident: Multisig Governance Compromise via Durable Nonce Exploitation

On April 1, 2026 (UTC), Drift Protocol on Solana suffered a $285.3M loss after an attacker exploited Solana's durable nonce mechanism to delay the execution of phished multisig approvals, ultimately transferring administrative control of the protocol's 2-of-5 Squads governance with zero timelock. With full admin privileges, the attacker created a malicious collateral market (CVT), inflated its oracle price, relaxed withdrawal protections, and drained USDC, JLP, SOL, cbBTC, and other assets through 31 rapid withdrawals in approximately 12 minutes. This incident highlights how durable nonce-based delayed execution can decouple signer intent from on-chain execution, bypassing the temporal assumptions that multisig security implicitly relies on.

Weekly Web3 Security Incident Roundup | Mar 23 – Mar 29, 2026
Security Insights

Weekly Web3 Security Incident Roundup | Mar 23 – Mar 29, 2026

This BlockSec weekly security report covers eight DeFi attack incidents detected between March 23 and March 29, 2026, across Ethereum and BNB Chain, with total estimated losses of approximately $1.53M. Incidents include a $679K flawed burn mechanism exploit on the BCE token, a $512K spot-price manipulation attack on Cyrus Finance's PancakeSwap V3 liquidity withdrawal, a $133.5K flash-loan-driven referral reward manipulation on a TUR staking contract, and multiple integer overflow, reentrancy, and accounting error vulnerabilities in DeFi protocols. The report provides detailed vulnerability analysis and attack transaction breakdowns for each incident.

Newsletter -  March 2026
Security Insights

Newsletter - March 2026

In March 2026, the DeFi ecosystem experienced three major security incidents. Resolv Protocol lost ~$80M due to compromised privileged infrastructure keys, BitcoinReserveOffering suffered ~$2.7M from a double-minting logic flaw, and Venus Protocol incurred ~$2.15M following a donation attack combined with market manipulation.