Zimbra の脆弱性 CVE-2022-27924 が FIX:ユーザー操作なしでEメールのログイン情報が窃取される

Zimbra bug allows stealing email logins with no user interaction

2022/06/15 BleepingComputer — Eメール・ソリューションのひとつである Zimbra は、世界の政府機関/金融機関/教育機関などの、数多くの組織で広く利用されている。その Zimbra の特定のバージョンに影響する深刻な脆弱性について、技術的な詳細が明らかにされた。脆弱性 CVE-2022-27924 は、悪用に成功した攻撃者に対して、認証/ユーザー操作を必要としないログイン情報の窃取を許し、オープンソース版/商用版の Zimbra 8.8.x/9.x に影響を及ぼす。

2022年5月10日から提供されている、Zimbra のバージョン ZCS 9.0.0 Patch 24.1/ZCS 8.8.15 Patch 31.1 が、この問題に対する修正版である。

認証情報を密かに吸い上げる

SonarSource 研究者たちのレポートにおいて、「この脆弱性は未認証のリクエストによる Memcached のポイズニング」と要約されており、Memcached の Lookup のユーザー名に CRLF を注入することで悪用が可能になる。

Memcached は、Eメールのアカウントのキー/値のペアを保存する内部サービスのインスタンスであり、Lookup サービスへの HTTP リクエスト数を減らすことで、Zimbra のパフォーマンスを向上させる。具体的に言うと、シンプルなテキスト・ベースのプロトコルを使用することで、Eメールのアカウントのキー/値のペアを設定/取得する。

Zimbra's request routing diagram
Zimbra のリクエスト・ルーティング図 (SonarSource)

研究者の説明によると、この脆弱性の悪用に成功した攻撃者は、Zimbra インスタンスに対して特別に細工した HTTP リクエストを送信することで、既知のユーザー名の IMAP ルート・エントリの上書きが可能になる。そして、対象となるユーザーがログインすると、Zimbra の Nginx Proxy は、平文の認証情報を含むすべての IMAP トラフィックを、攻撃者に転送するとのことだ。

HTTP リクエスト(上)とサーバーに送信されたメッセージ(下) (SonarSource)

SonarSource は、「Thunderbird/Microsoft Outlook/macOS メールアプリや、スマートフォンのメールアプリなどの、一般的なメールクライアントは、ユーザーが IMAP サーバーへの接続に使用した認証情報をディスクに保存する。したがって、この Zimbra への攻撃ではユーザーの操作が必要とされない。そして、メールクライアントが再起動するとき。また、定期的に発生する再接続が行われるときに、ターゲットとなる Zimbra インスタンスに対して再認証が行われる」と付け加えている。

被害者のEメールアドレスを知り、IMAP クライアントを使用している攻撃者は、この脆弱性の悪用が可能になるが、これらの条件は必須ではない。

2番目の悪用手法では、上記の制限が回避される。Zimbra インスタンスに関する知識がない攻撃者であっても、ユーザー操作なしで任意のユーザーの認証情報を盗むことが可能になる。

それは、Zimbra の Web ベース・クライアントを悪用する、レスポンス・スマグリングという代替ルートで実現される。

SonarSource は、「このアイデアは、Memcached の共有レスポンス・ストリームに、ワーク・アイテム数よりも多くのレスポンスを継続的に注入することで達成される。つまり、ランダムな Memcached Lookup に対して、正しいレスポンスではなく、注入されたレスポンスを使用させることが可能となるのだ。それは、Zimbra が Memcached のレスポンスを消費する際に、そのキーを検証していないことに起因する問題である」と記している。

この方法を用いる攻撃者は、電子メールアドレスが不明であっても、ランダムなユーザーのプロキシ接続をハイジャックすることが可能であり、なおかつ、被害者による何らかの操作も不要であり、また、アラートを生成することもない。

修正とタイムライン

2022年3月11日に SonarSource は、Zimbra に関する調査結果を公表した。そして、同年3月31日に最初のパッチがリリースされているが、問題の修正には不十分であった。

2022年5月10日に Zimbra は、ZCS 9.0.0 Patch 24.1/ZCS 8.8.15 Patch 31.1 を提供し、サーバーに対する送信が行われる前に、すべての Memcache キーの SHA-256 ハッシュを作成することで、この問題に対処した。この SHA-256 には、スペースを含むことができないため、CRLF 注入のための新たな行の作成が不可能である。したがって、このパッチが適用された Zimbra のバージョンに対しては、ポイズニング攻撃を行うことができない。

なお、2022年6月14日に Zimbra は、ZCS 9.0.0 Patch 25/ZCS 8.8.15 Patch 32 をリリースしている。それにより、サービス拒否を引き起こす、OpenSSL 1.1.1n の無限ループの脆弱性 CVE-2022-0778 にも対処している。

この問題ですが、文中では最初のパッチが 3月31日に出たとされていますが、お隣のキュレーション・チームに確認したところ、それらしきものは見つからなかったとのことです。また、脆弱性 CVE-2022-27924 に対する FIX は、5月4日付となっているようです。したがって、時間軸が曖昧ですが、CVE-2022-27924 は深刻な脆弱性ですので、お使いの方はご確認ください。