状態発散は不正アクセスを可能にします ノート

状態発散は不正アクセスを可能にします

研究者たちは、Provenance Blockchain(パブリックプルーフオブステークチェーン)において、権限のないユーザーがマーカーアカウントの管理者権限を奪取できる重大なバグを発見しました。この脆弱性は、メインネット上の実際の金融資産を表す82個のマーカーに影響を与えました。バージョン1.28.0より前のバージョンに存在したこのバグは、2026年4月1日にProvenanceに報告されました。バージョン1.28.0で緩和され、バージョン1.29.0で完全に修正されました。マーカーは、Provenanceの代替可能なトークンのコアプリミティブであり、それぞれが額面、アクセス制御リスト、供給量フィールド、およびエスクロー残高を制御します。この脆弱性は、マーカーのアクセス制御リストを変更するための承認チェックにありました。具体的には、マーカーの供給量の100%を保有するユーザーにアクセスを許可することを意図した条件に不備がありました。供給量が固定されていないマーカーで、供給量ゼロでアクティブ化された場合、保存されている供給量フィールドはゼロのままであり、アクセスチェックがいかなる呼び出し元に対しても容易に真と評価される原因となりました。これにより、攻撃者はトークンを一切保有せずに、単一のトランザクションで管理者権限、ミント権限、および引き出し権限を自身に付与することが可能になりました。その後、新しいトークンをミントしたり、マーカーのエスクロー残高から資産を引き出したりすることができました。一部のマーカーのエスクロー資金は合計で約50万ドルに達しており、その影響は甚大でした。最初の緩和策として、保存されている供給量がゼロの場合に承認が通過しないようにチェックが追加されました。しかし、完全な修正には、コードを変更して銀行モジュールから現在の流通供給量を直接読み取るようにし、状態の不整合を排除することが含まれていました。根本原因は、マーカーストラクチャと銀行モジュールの間の状態の不整合と、ゼロ供給状態に対して脆弱な承認述語の組み合わせであると特定されました。この記事では、将来の予防策として、仕様の改善とプロパティベースのテストを提案しています。