Technology

チャットツールRocket.Chatで暗号鍵の不正取得を実証

この記事のポイント

  1. 実現したこと

    チャットツールRocket.Chatで、鍵配布時の公開鍵差し替えによる暗号鍵の不正取得を実証した。

  2. 実現の仕組み

    暗号化メッセージの改ざん検知がなく、推測できる元の文章を利用したメッセージ偽造が成立した。

  3. 得られた結果

    6カテゴリの欠陥を組み合わせた5種類の攻撃シナリオが、概念実証でそれぞれ成立した。

  4. 従来との違い

    影響度の高い攻撃シナリオに対して、パッチ適用と機能改修が実施された。

チャットツールRocket.Chatの暗号機能で、鍵の不正取得やメッセージ偽造につながる欠陥が実証された。鍵配布、メッセージ暗号化、暗号化バックアップにまたがる問題があり、バックアップ用パスワードを変えても暗号鍵が更新されない不備も見つかった。影響度の高い攻撃への改修は実施済みだ。

公開鍵の差し替えでメッセージ用の鍵を取得

Rocket.Chatのエンドツーエンド暗号化(E2EE)は、鍵配布、メッセージ暗号化、鍵の暗号化バックアップを組み合わせている。情報通信研究機構(NICT)、大阪大学、NECは、この構成を仕様解析、実装調査、概念実証によって評価した。6カテゴリの欠陥から5種類の攻撃シナリオを組み立て、実装した攻撃がそれぞれ成立することを確認した。

鍵配布では、送信者と受信者の公開鍵が本物かを検証する機構が解析対象の仕様になかった。公開鍵を配布する途中で攻撃者が鍵を差し替える中間者攻撃により、メッセージの暗号化・復号に使う鍵を不正に取得できることが実証された。

既知の文章を手掛かりに暗号化メッセージを偽造

メッセージ暗号化にも、暗号文の改ざんを検知する機能が提供されていなかった。解析では、この不備を利用した暗号化メッセージの偽造が実証された。

偽造の手掛かりになるのは、暗号文に含まれる既知平文、つまり攻撃者が推測できる元の文章だ。その情報を利用することで、攻撃者が暗号化メッセージを任意の内容に偽造できることを確認した。

バックアップからの鍵復元と、リセット後の鍵の再利用

暗号化バックアップでは、E2EE用鍵を保護する初期パスワードの生成アルゴリズムに不備が見つかった。NICT、大阪大学、NECは、バックアップにアクセスできる攻撃者が約2週間でグループメッセージの暗号化鍵を復元する手法を提案した。約2週間という時間は、このアクセス条件を持つ攻撃者による鍵復元について示されたものだ。

バックアップ用パスワードの更新・リセット処理は、メッセージの暗号化・復号鍵を更新していなかった。このため、漏えいした可能性のある鍵が、新規メッセージにも使われ続ける構成だった。

認証とバックアップ設計の改善を提案し、改修へ

NICT、大阪大学、NECは、安全性評価の結果を開発企業のRocket.Chat Technologyへ2024年5月30日に報告した。改善策には、暗号化ダイレクトメッセージへのメッセージ認証コードまたは認証暗号の適用と、公開鍵の検証方法の提供を盛り込んだ。前者はメッセージの改ざん検知、後者は公開鍵の真正性に関わる対策だ。

バックアップについては、パスワードに依拠しない構成方法を提示した。影響度の高い攻撃シナリオに対するパッチ適用と機能改修は、2024年10月から2025年12月にかけて実施された。