クラウドストレージサービスの「MEGA」は、ユーザーがアップロードしたファイルをエンドツーエンドで暗号化しており、たとえ何者かにインフラストラクチャー全体が押収されてもファイルを復号できないと主張しています。ところが、スイス・チューリッヒ工科大学の研究チームが発表した調査結果によると、MEGAには暗号化されたファイルを復号したり、悪意のあるファイルを勝手にアップロードしたりできる脆弱性(ぜいじゃくせい)があるとのことです。
MEGA: Malleable Encryption Goes Awry
https://mega-awry.io/
Mega says it can’t decrypt your files. New POC exploit shows otherwise | Ars Technica
https://arstechnica.com/information-technology/2022/06/mega-says-it-cant-decrypt-your-files-new-poc-exploit-shows-otherwise/
MEGAはファイルに対してエンドツーエンドの暗号化を提供しているため、MEGAの従業員であってもファイルの内容にアクセスできず、安全なデータ管理および通信を可能にしているとうたっています。ところがチューリッヒ工科大学の研究チームは、MEGAの暗号化アーキテクチャに存在する基本的な欠陥を発見し、これにより悪意のある攻撃者がファイルを解読したり有害なファイルをアップロードしたりできると報告しました。
研究チームが発見した攻撃シナリオは5つありますが、その中で最も重要なのが暗号化されたRSA秘密鍵を復元する「RSAキーリカバリー攻撃」です。MEGAのユーザーは、データを暗号化する公開RSAキーとデータを復号するプライベートRSAキーを保有しており、プライベートRSAキーはMEGAのサーバーに暗号化された形式で保存されています。ところが、MEGAのサーバーにおけるキーの整合性保護の欠如を悪用することで、悪意ある人物がユーザーのプライベートRSAキーを回復することが可能だとのこと。
RSAキーリカバリー攻撃において重要なのは、MEGAのサーバーはログイン試行時に入力された無効なキーを拒否せず、サーバーとのやり取りを行うという点です。この際、MEGAのAPIバックエンドを制御したりTLSの中間者攻撃を実行したりしている攻撃者が傍受できるセッションIDから、送信された素数が正当な値より大きいか小さいかの情報が得られます。この情報はRSA暗号の鍵となる素因数分解の手がかりとなり、ログイン試行ごとに得られるわずかな情報を蓄積していくことで、1023回のログイン試行後にプライベートRSAキーを復号できるとのこと。また、格子暗号解析を利用している場合、必要なログイン試行回数を512回に減らすことができるそうです。
こうして復号したプライベートRSAキーを用いることで、悪意のある攻撃者は関連するすべての暗号化キーを復号することができるとのこと。研究チームはこの攻撃手法について、偽の証明書を用いてMEGAのインフラストラクチャーやサーバーを侵害しないようにして、概念実証を行ったと述べています。
また、研究チームはRSAキーリカバリー攻撃を前提として、さらに以下のような攻撃を仕掛けることが可能だと主張しています。
◆プレーンテキストリカバリー攻撃
MEGAの暗号化アーキテクチャではキーの分離が欠如しているため、RSAキーリカバリー攻撃で取得した情報を基にして、その他の暗号化キーも復号することが可能。これにより、MEGAの暗号化されたファイルやフォルダー、チャットなどのプレーンテキストなどを読み取ることができるとのことです。
◆フレーミング攻撃
RSAキーリカバリー攻撃とプレーンテキストリカバリー攻撃で取得したキーを使用し、悪意のある攻撃者は偽造したデータをクラウドストレージにアップロードすることが可能。正しい手法で暗号化されたファイルは、実際のユーザーがアップロードしたファイルと見分けが付きません。
◆インテグリティ攻撃
この攻撃は、暗号化されたノードキーを操作して復号されたキーがすべて0バイトで構成されるようにすることで、フレーミング攻撃と同様にファイルを偽造できるというもの。しかし、この攻撃はフレーミング攻撃よりも露見しやすく、観察力のあるユーザーには見抜かれる可能性があるとのことです。
◆GaP-Bleichenbacher攻撃
研究チームは、MEGAのチャット機能を悪用することによりRSA暗号文を復号し、プライベートRSAキーなどを入手することが可能だと説明しています。この攻撃はRSAキーリカバリー攻撃を前提としませんが、平均して217ものログイン試行が必要になるため、かなりハードルが高い攻撃手法となっています。
研究チームは2022年3月に、非公開でこれらの脆弱性についてMEGAへ通知しており、6月21日にMEGAは攻撃を防ぐためのアップデートを展開し始めました。しかし、研究チームはこのアップデートがRSAキーリカバリー攻撃を阻止するための「その場しのぎ」なものだと指摘。RSAキーリカバリー攻撃を防ぐことで、これを前提とするプレーンテキストリカバリー攻撃やフレーミング攻撃などは不可能になりますが、そもそもの暗号化アーキテクチャや整合性に関わる体系的な問題は修正されていないと主張しています。
研究チームはテクノロジー系メディアのArs Technicaへの電子メールで、「RSAキーリカバリー攻撃のみに対応するアップデートは、他の前提条件が何らかの異なる方法で満たされた場合、依然として脆弱性が悪用される可能性があることを意味します。そのため、私たちはこのパッチを支持しませんが、MEGAのシステムはもはや私たちが提案した攻撃の連鎖に対しては脆弱ではありません」と述べています。
MEGAのアップデートがRSAキーリカバリー攻撃にのみ対応したものになったことについて、研究チームはMEGAのプラットフォームが相互に関連しており、全体を修正するのが困難だからだと考えています。たとえば、MEGAが別の暗号化アーキテクチャへ移行するにはすべてのユーザーがデータをダウンロードし、再アップロードする必要がありますが、すでにMEGAには1000PB(ペタバイト)を超えるデータが保存されていることから、すべてを移行するには半年以上かかるとのこと。そのため、MEGAにとっては時間とコストがかかる長期的アプローチではなく、短期的なアプローチを採用するメリットがあるというわけです。
なお、MEGAは今回の脆弱性およびアップロードに関する公式声明の中で、RSAキーリカバリー攻撃を実行するには少なくとも512回のログイン試行が必要なものの、MEGAでは「既存のセッションの再開」がログインに当たらないため、攻撃者が通信を傍受している間に512回ものログインを試行するハードルは非常に高いと指摘しています。また、クラウドベースの暗号化システムの欠陥を修正するのは困難な上にユーザーの負担になるため、今回のアップデートでは実用的な方法を採用したと述べています。
MEGA Security Update – Mega Blog
https://blog.mega.io/mega-security-update/
この記事のタイトルとURLをコピーする