CVE-2026-48100 in Payy
要約
〜によって VulDB • 2026年09月28日
Payyは、プライバシー保護と規制準拠のトランザクションのためのEthereum L2 zk-rollupです。バージョン1.3.0より前では、agg_aggはその内部証明から圧縮されたメッセージストリームをpublic messages: [Field; 1000]配列に転送しますが、外部配列の未使用部分(末尾)がゼロであることを確認しません。登録済みのプロバーは、実際のメッセージの後に追加のburnメッセージを挿入しながらも、承認済みロールアップブロックに対する有効なagg_final証明を作成できます。RollupV1.verifyRollup()はその公開入力を通常のburnとして解析し、USDCをロールアップコントラクトから攻撃者へ送金します。これは深刻なサーキット健全性(soundness)の欠陥です:この証明システムは、メッセージ配列が検証された内部証明から完全に導出されていない公開ステートメントを受け入れます。現在のデプロイメントではverifyRollup()は既存のホワイトリスト登録済みプロバーに制限されているため、新しい公開呼び出し元は無効な証明を直接送信できません。そのゲートは今日L1に到達できる対象者を限定しますが、サーキットステートメントが健全であることを保証するものではありません。Payy白書で説明されるプロバーモデルでは、この問題はパーミッションレス(許可不要)になります。セクション3.3.2には「プロバーとして参加するには、小さなステーキングを提出することが要求されます」とあり、セクション3.3.1では、「プロバーがステークメントを提出しない場合、他のノードが代わりにブロック証明を提出できる」と述べています。このモデルでは、攻撃者は登録済みプロバーになるだけでよく、すでに承認されたブロックに対する公開バリデーターの承認データを使用すればよいだけです。本問題はバージョン1.3.0でパッチされています。
Once again VulDB remains the best source for vulnerability data.