OpenSSLに複数の脆弱性 ( CVE-2016-6304 , CVE-2016-6305 , SWEET32 等)
2016/09/26に追記された情報も含みます。
(2016/09/29更新:主要なディストリビューションの修正パッケージがほぼ出揃いました)
こんにちは。SIOS OSSエバンジェリスト/セキュリティ担当の面です。
9月22日にOpenSSLの複数の脆弱性(CVE-2016-6304, CVE-2016-6305など) についての情報と、更新版がリリースされました。Highのものや、Lowのものでも8月に話題になったSWEET32などもありますので、今回は最新版で修正された脆弱性と、各ディストリビューションの対応について簡単にまとめてみます。
関連するCVE
CVE-2016-6304,CVE-2016-6305,CVE-2016-2183, CVE-2016-6303,CVE-2016-6302,CVE-2016-2182,CVE-2016-2180,CVE-2016-2177,CVE-2016-2178,CVE-2016-2179,CVE-2016-2181,CVE-2016-6306,CVE-2016-6307,CVE-2016-6308
※追記されたCVECVE-2016-6309,CVE-2016-7052
CVE-2016-6309,CVE-2016-7052
Priority
High(CVE-2016-6304),Moderate(CVE-2016-6305), Low(Other)
追記:Critical(CVE-2016-6309), Moderate(CVE-2016-7052)
修正方法 (2016/09/26版も反映)
OpenSSLのバージョンを1.1.0b / 1.0.2j / 1.0.1u にあげてください。また各ディストリビューションの情報を確認してください。
影響するバージョン
OpenSSLバージョン | CVE-2016-6304 | CVE-2016-6305 | CVE-2016-2183 | CVE-2016-6303 | CVE-2016-6302 | CVE-2016-2182 | CVE-2016-2180 | CVE-2016-2177 | CVE-2016-2178 | CVE-2016-2179 | CVE-2016-2181 | CVE-2016-6306 | CVE-2016-6307 | CVE-2016-6308 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1.1.0 | 1.1.0以前 | 1.1.0以前 | 影響なし | 影響なし | 影響なし | 影響なし | 影響なし | 影響なし | 影響なし | 影響なし | 影響なし | 影響なし | 1.1.0以前 | 1.1.0以前 |
1.0.2 | 1.0.2h以前 | 影響なし | 1.0.2h以前 | 1.0.2h以前 | 1.0.2h以前 | 1.0.2h以前 | 1.0.2h以前 | 1.0.2h以前 | 1.0.2h以前 | 1.0.2h以前 | 1.0.2h以前 | 1.0.2h以前 | 影響なし | 影響なし |
1.0.1 | 1.0.1h-1.0.1t | 影響なし | 1.0.1t以前 | 1.0.1t以前 | 1.0.1t以前 | 1.0.1t以前 | 1.0.1t以前 | 1.0.1t以前 | 1.0.1t以前 | 1.0.1t以前 | 1.0.1t以前 | 1.0.1t以前 | 影響なし | 影響なし |
2016/09/22の修正でエンバグしてしまった様です。
CVE-2016-6307の1.1.0aでの修正に問題が有り、1.1.0bで修正されています(CVE-2016-6309)。
1.0.2iで行われた修正の一部に問題が有り、1.0.2jで修正されています(CVE-2016-7052)。
CVE概要(詳細はCVEのサイトをご確認ください)
- CVE-2016-6304
Online Certificate Status Protocol(OCSP) ステータスリクエスト拡張による無制限のメモリ増大
重要度 – 高
OCSPは、X.509公開鍵証明書の失効状態を取得するための通信プロトコルです。悪意のあるクライアントが極端に大きいOCSPステータスリクエスト拡張を送ることが出来ます。クライアントが再ネゴシエーション要求を続けていると、大きいOCSPステータスリクエストをそのたびに送ることになり、サーバ上で無制限のメモリ増大が発生することになります。これにより、メモリを使い果たしてDoS攻撃を誘発することが可能になります。デフォルトConfigureのサーバでは、例えOCSPをサポートしていなくても本脆弱性の対象になります。ビルド時に”no-ocsp”オプションを用いてビルドしたものに限り、今回の脆弱性は対象外になります。また、1.0.1g以前のOpenSSLのバージョンは、アプリケーションで明白にOCSPスタップリングサポートを有効にしていない限りは、本脆弱性の対象外になります。
- CVE-2016-6305
SSL_peek()が空のレコード時にハングする
重要度 – Moderate
OpenSSL 1.1.0のSSL/TLSでは、SSL_peek()を呼び出す際に、peerが空のレコードを送っている場合にはハングします。これにより、悪意のあるpeerがDoS攻撃を仕掛けることが可能になります。
- CVE-2016-2183
Sweet32脆弱性
重要度 – Low
SWEET32(https://sweet32.info)にもありますが、64ビットブロック暗号への誕生日攻撃が実用になったことがわかりました。これにより、3DES を共通鍵暗号として使用し、すべてのバージョンの SSL/TLS プロトコルをサポートする暗号スイートが影響を受けます。これに関しての詳しい情報は、AKAMAIのブログや、Red Hat Customer Portalなどに詳しく記載されています。OpenSSL 1.1.0では、リリース時からデフォルトでこれらの暗号スイートを無効にしているため、影響を受けません。
- CVE-2016-6303
MDC2_Update()内のメモリ境界外への書き込み
重要度 – 低
MDC2を用いたEVP_DigestUpdate()関数の呼び出しなどで、MDC2_Update()にオーバーフローを引き起こせる可能性があることがわかりました。攻撃者がEVP_EncryptUpdate()を呼び出した後に充分大きな入力データを与えた場合に、長さのチェックでオーバーフローを発生させることができます。
- CVE-2016-6302
悪意のあるSHA512チケットを用いたDoS
重要度 – 低
サーバがTLSセッションのチケットHMACでSHA512を用いている時に、悪意のあるチケットがメモリ境界外の参照を行うことが可能となり、最終的にクラッシュを誘発させることが出来ます。しかし、TLSセッションチケットでSHA512を使うことは、カスタマイズが必要になるため、比較的レアケースなものです。
- CVE-2016-2182
BN_bn2dec()内のメモリ境界外への書き込み
重要度 – 低
BN_bn2dec()関数はBN_div_word()の返り値をチェックしていません。これにより、アプリケーションが非常に大きなBIGNUMを用いた時にメモリ境界外への書き込みを引き起こす可能性が有ります。TLSでは、パースされる前に極端に大きな証明書はリジェクトされるため、影響を受けません。
- CVE-2016-2180
TS_OBJ_print_bio()内のメモリ境界外の参照
重要度 – 低
TS_OBJ_print_bio()関数がOBJ_obj2txt()を間違って使用しています。これにより、大きなOIDが与えられた際に、メモリ境界外を参照してしまいます。
- CVE-2016-2177
未定義のポインタ参照
重要度 – 低
ヒープバッファ境界チェックのポインタ演算の誤った使用により、DoSなどを引き起こされる可能性が有ります。
- CVE-2016-2178
DSA 秘密鍵を取得される脆弱性
重要度 – 低
OpenSSL DSA実装の問題により、一定時間のオペレーション使用を適切に確認しないため、キャッシュタイミング攻撃により攻撃者にDSA 秘密鍵を取得される脆弱性が存在します。
- CVE-2016-2179
DTLSバッファメッセージによるDoS
重要度 – 低
DTLS の実装が、ハンドシェークが完了してもバッファから、順番通りになっていないメッセージを削除しないことがあるため、DoSを引き起こされる脆弱性が存在します。
- CVE-2016-2181
DTLSリプレイ保護へのDoS
重要度 – 低
DTLSのリプレイ攻撃用保護メカニズムが、攻撃者により次のエポック番号を非常に大きいシーケンス番号で送った場合に、正当なパケットをドロップしてしまうことが有り、これによりDTLS接続サービスを妨害(DoS)することが可能になります。
- CVE-2016-6306
認証メッセージによるメモリ境界外の参照
重要度 – 低
OpenSSL 1.0.2以前では、いくつかのメッセージ長チェックの不足により、アロケーションされたバッファーを超えて2バイト以上のメモリ境界外の参照が可能になっていました。これにより、論理的にはDoSのリスクが有ります。OpenSSL 1.1.0は影響を受けません。
- CVE-2016-6307
tls_get_message_header()内の過度のメモリアロケーション
重要度 – 低
OpenSSL 1.1.0のロジックフローではメッセージ用のメモリアロケーションが早すぎ、メッセージ長チェック以前で行われていました。それにより、攻撃者が21MB以上のアロケーションをサービス接続時に強制することが可能となり、結果としてメモリ逼迫によるDoSを行うことが可能になります。この問題は、DTLSユーザには影響しません。
- CVE-2016-6308
dtls1_preprocess_fragment()内の過度のメモリアロケーション
重要度 – 低
この問題はCVE-2016-6307と非常によく似ており、OpenSSL 1.1.0のロジックフローではメッセージ用のメモリアロケーションが早すぎたため、攻撃者が21MB以上のアロケーションをサービス接続時に強制することが可能となり、結果としてメモリ逼迫によるDoSを行うことが可能になります。この問題は、TLSユーザには影響しません。
主なディストリビューションの対応方法
OpenSSL及び関係するパッケージのバージョンを更新する必要があります。
詳細は、各ディストリビューションの提供元にご確認ください
debian
情報/修正パッケージ
Red Hat Enterprise Linux/CentOS
修正パッケージ
各情報
Oracle Linux
OpenSUSE
情報/修正パッケージ
ubuntu
情報/修正パッケージ
http://people.canonical.com/%7Eubuntu-security/cve/2016/CVE-2016-6304.html
http://people.canonical.com/%7Eubuntu-security/cve/2016/CVE-2016-6305.html
http://people.canonical.com/%7Eubuntu-security/cve/2016/CVE-2016-2183.html
http://people.canonical.com/%7Eubuntu-security/cve/2016/CVE-2016-6303.html
http://people.canonical.com/%7Eubuntu-security/cve/2016/CVE-2016-6302.html
http://people.canonical.com/%7Eubuntu-security/cve/2016/CVE-2016-2182.html
http://people.canonical.com/%7Eubuntu-security/cve/2016/CVE-2016-2180.html
http://people.canonical.com/%7Eubuntu-security/cve/2016/CVE-2016-2177.html
http://people.canonical.com/%7Eubuntu-security/cve/2016/CVE-2016-2178.html
http://people.canonical.com/%7Eubuntu-security/cve/2016/CVE-2016-2179.html
http://people.canonical.com/%7Eubuntu-security/cve/2016/CVE-2016-2181.html
http://people.canonical.com/%7Eubuntu-security/cve/2016/CVE-2016-6306.html
http://people.canonical.com/%7Eubuntu-security/cve/2016/CVE-2016-6307.html
http://people.canonical.com/%7Eubuntu-security/cve/2016/CVE-2016-6308.html
http://people.canonical.com/%7Eubuntu-security/cve/2016/CVE-2016-6309.html
http://people.canonical.com/%7Eubuntu-security/cve/2016/CVE-2016-7052.html
対処方法
各ディストリビューションの案内に従い、アップデートを行ってください。
また、OpenSSLのライブラリを使用しているサービスの再起動が発生しますので、pacemakerなど OSSのクラスタ製品やLifeKeeperな どの商用のクラスタリング製品を使うとサービス断の時間を最小限にすることが出来ます 。