Movementのaptosコアリポジトリにバッチ検証脆弱性の重大なセキュリティ修正がマージされました。この問題はマルチスカラー乗算(MSM)バッチ処理最適化におけるガンマインデックス割り当ての衝突を引き起こしていました。
脆弱性の詳細
コンフィデンシャル転送証明には、検証者が検証する必要のある複数の代数方程式が含まれています。パフォーマンスを最適化するため、バッチ検証者は各方程式に異なるランダムウェイト(「ガンマ」と呼ばれる)を乗じることでこれらを組み合わせます。各ガンマはランダムスカラーと組み合わされた一意のインデックスペア`(i, j)`から導出されます。2つの異なる証明関係が同じガンマを受け取った場合、攻撃者は一つの関係での誤差が他の関係での誤差をキャンセルする値を作成し、バッチチェックを完全に回避することができます。
バグは2人以上の監査人を持つ場合に`msm_transfer_gammas`関数で発生しました。監査人暗号文チェック(`g7s`)のインデックス割り当ては監査人`k`に対して`7+k`を使用し、監査人1のチェックはインデックス`8`を受け取りました。同時に、送信者の転送額証明(`g8s`)はハードコードされた`8`を使用していたため、複数監査人が関わる場合いつでも衝突が発生していました。
修正内容
パッチは`g8s`をハードコードされた`8`ではなく`7 + auditors_count`を使用するように変更し、常に最後の監査人チェックの後に配置されます。これは検証者のみの変更です。ガンマはプルーフ送信後にオンチェーンで計算されるため、プルーフ生成とクライアントSDKは影響を受けません。
テストと影響
この修正には78のMoveユニットテストと143のRustエンドツーエンドテストが含まれており、衝突が存在したこと、および修正により排除されたことを確認する新しいリグレッションテストも含まれています。ホワイトペーパーは修正されたガンマインデックスレイアウトを説明する新しい「バッチ健全性」セクションで更新されました。脆弱性は2人以上の監査人でのみ発現しました。0人または1人の監査人を持つシステムは影響を受けていません。

