Vultisigは8月、AndroidとiOSのアプリを更新し、多者間計算(MPC)による署名処理を修正しました。署名ライブラリが参加者を悪意あるものと判定した場合、自動再試行を停止し、該当するデバイスの使用を中止するようユーザーに警告します。ChainSecurityが10月21日に公表した調査では、旧仕様で攻撃者が署名参加者の一方を支配していた場合、悪意あるメッセージを繰り返し送り、相手側のエラー応答を観察することで鍵のシェアを復元し、最終的に秘密鍵全体を再構成できる可能性が指摘されました。
問題となったのはECDSA署名です。複数のデバイスに鍵を分散していても、プロトコルが停止を求めた後にアプリがやり取りを打ち切れるかどうかが、安全性を左右します。署名に失敗して有効な取引が生成されなかった場合でも、エラー応答から情報が漏れるおそれがあります。
エラー応答から内部シードが漏れる可能性
MPCウォレットでは署名権限を複数の鍵シェアに分散します。通常の署名時には各参加者が連携してブロックチェーンで利用できる署名を生成し、通常の操作で秘密鍵全体を組み立てる必要はありません。2台のデバイスが必要な設定で一方だけを攻撃者が支配しても、原則としてもう一方の承認なしに署名を完了することはできません。
ChainSecurityが示した攻撃経路は、参加者の一方がすでに侵害されていることを前提とします。攻撃者がもう一方に複数の不正な署名メッセージを送り、相手がエラーを返すかどうかを調べます。研究者らによると、応答を通じて再利用可能な内部プロトコルシードの情報が段階的に漏れる可能性があります。攻撃を続ければ、相手側の鍵シェアを復元し、秘密鍵全体を得られるおそれがあります。
このシードはプロトコル内部で使われる設定上の秘密情報です。署名ライブラリは、重大なエラーが起きた後、呼び出し側がシードをローテーションするまで署名処理を停止することを想定していました。しかし旧版アプリはこの停止条件を実装せず、一般的な失敗メッセージを表示したうえで再試行を続ける可能性がありました。焦点は、一度の署名失敗で取引を送信できるかではなく、失敗後も問題を指摘された参加者とのやり取りが続くかどうかです。
8月の更新で悪意ある参加者への再試行を停止
VultisigのAndroid版とiOS版の保守担当者は、それぞれ8月21日に関連するコード変更を取り込みました。10月の公表より約2カ月早い対応です。旧コードは署名失敗をライブラリの成功結果と照合していましたが、悪意ある参加者を示すエラーを個別に処理していませんでした。署名処理は最大3回まで再試行され、ユーザーには一般的な失敗メッセージが表示されていました。この再試行回数は鍵の復元に必要なメッセージ数を示すものではなく、攻撃に必要なセッション数を推定する根拠にもなりません。
更新後のアプリは、セッションの確立、メッセージ処理、署名完了などの段階で、DKLS署名ライブラリのエラーコード100〜109を検知します。Android、iOSの両方で該当する参加者をデバイスIDにひも付け、自動再試行によりエラーが処理されずに消えることを防ぎます。また、対象デバイスを使い続けないよう、各言語に対応した警告を表示します。Android版ではリレー経由の復旧処理もスキップします。
これによりアプリは、通常の署名失敗と、暗号ライブラリが参加者を悪意あるものと判定したケースを区別するようになりました。一時的な障害であれば自動再試行が操作の復旧に役立つことがあります。一方、ライブラリが処理停止を求めた後も再試行を続ければ、情報が漏れる機会を増やしかねません。
関連する変更はAndroidのPR #5658、iOSのPR #5235に記載されています。iOS v1.45.71のリリース記録は8月21日付、Android v1.0.118は8月25日付で、いずれもこの修正を含んでいます。
金庫の構成別に影響範囲の確認が必要
Vultisigの製品説明では、署名デバイスの管理方法が異なる2種類の構成を案内しています。Fast Vaultではユーザーのデバイスが1つのシェアを保持し、VultiServerが別のシェアを持って共同署名に参加します。Secure Vaultではユーザーが管理する2台以上のデバイスに署名を分散し、VultiServerには依存しません。どちらも分散署名を採用していますが、運用上の依存先は異なります。また、1回の署名セッションに参加する2者が、金庫全体のシェア数を意味するとは限りません。
公表された調査やアプリの資料には、影響を受けるバージョンと金庫構成を対応させた一覧が示されていません。そのため、利用者は各構成での具体的な影響範囲や、更新が過去のバージョンをどこまでカバーするかを、現時点の情報だけで判断しにくい状況です。
Vultisigのセキュリティ文書によると、Trail of Bitsは2024年にSilence LaboratoriesのDKLS23ライブラリを監査しました。同社は、モバイル版とデスクトップ版アプリの監査報告書について、公開後に提供するとしています。ChainSecurityは調査の公表時点でVultisigの修正を確認しておらず、プロトコルの他の部分も監査していないため、今回のアプリ側の修正は評価対象に含まれていません。
今後は、影響を受けるリリース版と金庫構成の特定に加え、自動再試行時だけでなく、ユーザーが署名を手動で再開した場合にも停止条件が適用されるかの説明が求められます。確認すべき点は、署名ライブラリが停止を求めることだけでなく、アプリが署名処理全体を通じてその条件を守ることです。