世界で利用されるチャットツール「Rocket.Chat」で複数の脆弱性を発見し改善へ
ポイント
-
世界で利用されるチャットツール「Rocket.Chat」に対して、“暗号の使い方の観点からの安全性評価”を世界で初めて実施
-
「メッセージの偽造」「暗号化メッセージの解読」「攻撃の長期化」などにつながる重大な脆弱性を発見し、攻撃を回避するための対策手法を構築
-
産業系セキュリティ分野で難関とされる国際会議Black Hat Asia 2026 Briefingsで講演予定
背景
今回の成果

(リリースノートhttps://github.com/RocketChat/Rocket.Chat.ReactNative/releases/tag/4.51.0 にはこの連携に対する謝意表明(special thanks)が付されています。)
今後の展望
論文情報
講演情報
補足資料
解析の手法と結果の詳細
- 仕様解析
- 「Rocket.Chat」の仕様書に記載されたE2EE機能(2023年12月6日当時)を調査し、仕様及び実装の欠陥の組合せによって潜在的に完全性と機密性を侵害することが可能であることを明らかにしました。
- 実装調査
- iOS、Android、Webを含む主要クライアント3種を対象に、静的・動的な検査を実施し、複数のクライアントにおける署名検証の不備の脆弱性を発見しました。
- 概念実証
- 特定した6カテゴリの欠陥を組み合わせ、メッセージの偽造、暗号化・復号鍵回復など5種の攻撃シナリオ(図2参照)を設計し、HTTPプロキシツール及びRust言語による実証コードで確認しました。
- 真正性への影響: 「Rocket.Chat」の仕様にはデータ送信者及び受信者の公開鍵が本物であるかどうかの検証機構がありませんでした(公開鍵の真正性)。この仕様上の不備を特定し、「Rocket.Chat」のネットワークへ接続するクライアントアプリケーションは公開鍵の単純な置換、差替え攻撃に対して脆弱であることを発見しました。攻撃者は鍵配布時に鍵の置換・差替えによる中間者攻撃を行うことで暗号化メッセージの暗号化・復号鍵を不正に入手できることを実証しました。
- 完全性への影響: 暗号化メッセージに改ざん検知機能が提供されていないことを明らかにしました。また、攻撃者は暗号文中に第三者が推測可能な情報(既知平文)が含まれることを利用し、暗号化メッセージを任意の内容に偽造できることを実証しました。
- 機密性への影響: 暗号化バックアップにおいてE2EE用鍵の保護に使用される初期パスワード生成アルゴリズムの不備を明らかにしました。これにより、バックアップにアクセス可能な攻撃者が現実的な時間(2週間程度)でグループメッセージの暗号化鍵を復元する手法を提案しました。
- 回復能力の不備: 「Rocket.Chat」は暗号化バックアップ用パスワードの更新及びリセット機能が提供されており、パスワード紛失時や漏えい時に使用することができます。しかし今回の解析により、更新及びリセット時に暗号化・復号鍵が更新されず、漏えいした可能性のある鍵を新規メッセージの暗号化・復号に使用し続けることを明らかにしました。これにより、本機能がパスワード漏えい時の対策としては不十分であることを示しました。
- 提示した改善策
- 暗号化ダイレクトメッセージへのメッセージ認証コード又は認証暗号の適用
- 公開鍵の検証方法の提供(Out-of-band認証など)
- パスワードに依拠しない暗号化バックアップの構成方法
用語解説
オンプレミス型チャットツール 「Rocket.Chat」 オンプレミス型チャットツール「Rocket.Chat」は、エンドツーエンド暗号化を採用している。オンプレミス型とは開発企業がサーバプログラムを配布し、ユーザ組織が運用するもので、SlackやMicrosoft Teamsに代表されるSaaS型チャットツールとは大きく異なる。また、エンドツーエンド暗号化はサーバを含む通信経路上の攻撃者による送受信メッセージの閲覧や改ざんを防止する技術である。オンプレミス型チャットツールがSaaS型の課題を補完するツールとして急速に普及する一方で、オンプレミス型チャットツールの代表例とも言える「Rocket.Chat」は、複数のプロトコル(鍵配布、メッセージ暗号化、鍵の暗号化バックアップ)を組み合わせて構築されているため、仕様間の不整合と仕様と実装の不整合が重大なセキュリティ上の欠陥に発展する可能性について十分に検証されていなかった。本研究は、これらの課題に起因する実用的な攻撃シナリオを明確化し、安全性を定量的に示すことを目的とした。 元の記事へ
エンドツーエンド暗号化 エンドツーエンド暗号化(E2EE)は、スマートフォンやPCなどの通信を行う端末間でデータを保護する暗号化通信方式であり、通信経路上のネットワーク機器やサービス事業者のサーバなどの第三者による盗聴や改ざん攻撃からメッセージを保護する。これにより、通信内容は送信者と意図された受信者のみが閲覧可能となる。エンドツーエンド暗号化は、メッセージングサービスやクラウドストレージサービスなどに広く実装されており、近年のデジタルコミュニケーションにおいて利用者のプライバシー保護と安全な通信を支える重要な役割を果たしている。その一方で、事業者ごとに異なる暗号化方式が採用されているため、その安全性や実装内容を個別に評価することが重要である。 元の記事へ
暗号化・復号の両方に使う鍵 暗号化と復号に同一の鍵を用いる共通鍵暗号方式における鍵を指し、「Rocket.Chat」のエンドツーエンド暗号化方式ではメッセージの暗号化に使用される。本研究では鍵の暗号化バックアップ機能の設計と実装の不備により攻撃者がこの鍵を入手し、通信内容の盗聴及び暗号文の偽造ができることを示した。 元の記事へ
本件に関する問合せ先
国立研究開発法人情報通信研究機構
サイバーセキュリティ研究所
セキュリティ基盤研究室
木村 隼人
ml.nict.go.jp国立大学法人大阪大学大学院
情報科学研究科マルチメディア工学専攻暗号基盤講座
教授 五十部 孝典
ist.osaka-u.ac.jp日本電気株式会社
NEC研究&事業開発戦略統括部
Webフォーム: https://jpn.nec.com/cgi-bin/cs/opinion_form4.cgi
広報(取材受付)
国立研究開発法人情報通信研究機構
広報部 報道室
nict.go.jp国立大学法人大阪大学
大学院情報科学研究科研究戦略企画室
ist.osaka-u.ac.jp