OpenSSL の Man-in-the-middle 攻撃可能な脆弱性の影響

OpenSSL に Man-in-the-middle (MITM) 攻撃が可能な脆弱性 CVE-2014-0224 が発見され、日本時間2014年6月5日の夜に公開されました。そのアドバイザリでは合わせて7件の脆弱性が報告されていますが、本記事では脆弱性 CVE-2014-0224 を取り上げます。IIJ でも本脆弱性を調査した結果、MITM 攻撃が可能になるには条件があります。したがって、例えば使用している OpenSSL のバージョンや SSL/TLS 通信の利用の仕方に応じて、アップデートの緊急性を個別に検討する余地があります。

概要

本脆弱性による MITM 攻撃[1]MITM 攻撃とは、サーバとクライアントの間に攻撃者が割り込み、通信内容の盗聴や改ざんを行う攻撃です。では、サーバとクライアントの両方が OpenSSL を使っている場合に、その間にいる攻撃者が SSL/TLS ハンドシェーク中に特別なメッセージを割り込ませることで、攻撃者にも計算できる鍵を両者の暗号化通信に使わせることができます。攻撃者はその鍵を使って暗号化通信を復号でき、通信内容の盗聴、改ざんが可能になります。この攻撃を受けた状況でも、サーバとクライアントでは通常どおりの暗号化通信として認識され、異常に気づくことができません。

攻撃者が通信経路上にいなければ成立しないので、その可能性はある程度限定的だと言えますが、無線 LAN 環境や PC に感染したマルウェアなど、攻撃者が通信経路上に割り込める状況は次第に増えてきていますので、本脆弱性に対しても適切に対処することが必要です。

脆弱性の経緯

今回の脆弱性の元になった OpenSSL のバグは、それ自体は15年以上前から存在していましたが[2]例えば、本脆弱性の発見者によるブログ記事「CCS Injection 脆弱性 (CVE-2014-0224) 発見の経緯についての紹介 – … Continue reading、1.0.0 系列のバージョンまでは、正当性検査を行う微妙なタイミングにより、MITM 攻撃を許すまでには至らずに済んでいました。バージョン 1.0.1 での変更によりそのタイミングがずれたことで、潜んでいたバグが、突然に MITM 攻撃ができる脆弱性として働き始めました。

また、このコード上の複雑なバランスが影響して、今回の脆弱性で MITM 攻撃が可能になる条件は少々複雑です。

影響を受ける組み合わせ

暗号で保護されているはずの SSL/TLS 通信に MITM 攻撃ができるということは重大な脆弱性ですが、2014年4月に公開され、サーバ、クライアントの両方で、暗号化通信中でなくてもリスクが存在した Heartbleed bug[3]本 Security Diary でも記事「Heartbleed bug によるサーバ設定の状況変化」や記事「Heartbleed bug によるサーバ設定の状況変化」で取り上げています。 とは状況が異なります。

今回の脆弱性で MITM 攻撃が可能になるのは、サーバとクライアントの両方が OpenSSL である場合で、かつサーバの OpenSSL のバージョンが 1.0.1 系列である場合に限定されます[4]サーバ側のみが脆弱性を持つ OpenSSL だった場合に、確立済み SSL/TLS … Continue reading

どちらかが OpenSSL でなかったり、サーバが 0.9.8 系列や 1.0.0 系列の場合には、攻撃をしようとしても接続が途中で切断され、MITM の状態にはならないことを IIJ でも確認しています[5]IIJ ではこの他に、サーバ側でクライアント証明書検証を必須にして運用している場合には MITM が成立しないことを、OpenSSL … Continue reading

このように攻撃成立の条件が限定されていることは、例えば冒頭で紹介した OpenSSL プロジェクトからのセキュリティアドバイザリ(英語)や、JVN#61247051: 「OpenSSL における Change Cipher Spec メッセージの処理に脆弱性」にも記載されています。

対処方針

以上のことを踏まえて、どのような対処が望ましいかを考えます。

SSL/TLS を使うサーバの管理者

HTTPS や VPN などで、バージョン 1.0.1g 以下の OpenSSL 1.0.1 系列を使った SSL/TLS サーバを運用していて、OpenSSL を使ったクライアントが管理外のネットワークを通って接続してくる可能性がある場合には、修正されたバージョンにアップデートすることが強く推奨されます[6]またワークアラウンドとして、オプション -DOPENSSL_NO_NEXTPROTONEG を付けてコンパイルした OpenSSL 1.0.1g をサーバとして使った場合には、MITM … Continue reading。インターネット経由で広く一般に暗号化通信を使ってサービスを提供している場合はこれにあたります。

0.9.8 系列や 1.0.0 系列の OpenSSL を使ったサーバでは、この脆弱性では MITM 攻撃が成立しないので、事情に応じてアップデート作業の緊急度を下げることを検討することができます。ただし、今回のアップデートには他の脆弱性に対する修正も含まれているので、それらの影響を考慮した上で判断する必要があります。

SSL/TLS クライアントを使う利用者

OpenSSL を使用したクライアントソフトを使っている利用者は、そのバージョンがどの系列であっても、アクセス先サーバが本脆弱性を持つ OpenSSL を使っていれば、MITM 攻撃で暗号化通信を盗聴、改ざんされる危険性があります。アクセス先サーバの OpenSSL がすべて修正されればその心配はなくなるとはいえ、利用中の PC やスマートフォンなどで動作するクライアントソフトについて、修正版のリリース情報に注意し、早めにアップデートすることが必要です。

脚注

脚注
1 MITM 攻撃とは、サーバとクライアントの間に攻撃者が割り込み、通信内容の盗聴や改ざんを行う攻撃です。
2 例えば、本脆弱性の発見者によるブログ記事「CCS Injection 脆弱性 (CVE-2014-0224) 発見の経緯についての紹介 – 株式会社レピダム」(http://lepidum.co.jp/blog/2014-06-05/CCS-Injection/) など。
3 本 Security Diary でも記事「Heartbleed bug によるサーバ設定の状況変化」や記事「Heartbleed bug によるサーバ設定の状況変化」で取り上げています。
4 サーバ側のみが脆弱性を持つ OpenSSL だった場合に、確立済み SSL/TLS セッションのハイジャック(「クライアントの偽装」)ができるとする情報もあり(例えばレピダム社 “OpenSSL #ccsinjection Vulnerability” (http://ccsinjection.lepidum.co.jp/ja.html))、現時点ではその具体的影響は不明です。本記事は MITM による盗聴・改ざんのみを対象として説明しています。
5 IIJ ではこの他に、サーバ側でクライアント証明書検証を必須にして運用している場合には MITM が成立しないことを、OpenSSL のあるバージョンに限って検証、確認しています。この結果は、Adam Langley 氏のブログ記事 “ImperialViolet – Early ChangeCipherSpec Attack” (https://www.imperialviolet.org/2014/06/05/earlyccs.html) にある分析結果とも整合します。
6 またワークアラウンドとして、オプション -DOPENSSL_NO_NEXTPROTONEG を付けてコンパイルした OpenSSL 1.0.1g をサーバとして使った場合には、MITM 攻撃が成立しないことを IIJ では確認しています。ただし、クライアントとしては効果がありません。

シェアする