OpenSSLに複数の脆弱性 ( CVE-2016-6304 , CVE-2016-6305 , SWEET32 等) — | サイオスOSS | サイオステクノロジー

OpenSSLに複数の脆弱性 ( CVE-2016-6304 , CVE-2016-6305 , SWEET32 等)

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などもありますので、今回は最新版で修正された脆弱性と、各ディストリビューションの対応について簡単にまとめてみます。

 


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-6304CVE-2016-6305CVE-2016-2183CVE-2016-6303CVE-2016-6302CVE-2016-2182CVE-2016-2180CVE-2016-2177CVE-2016-2178CVE-2016-2179CVE-2016-2181CVE-2016-6306CVE-2016-6307CVE-2016-6308
1.1.01.1.0以前1.1.0以前影響なし影響なし影響なし影響なし影響なし影響なし影響なし影響なし影響なし影響なし1.1.0以前1.1.0以前
1.0.21.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.11.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及び関係するパッケージのバージョンを更新する必要があります。

詳細は、各ディストリビューションの提供元にご確認ください


対処方法

各ディストリビューションの案内に従い、アップデートを行ってください。

また、OpenSSLのライブラリを使用しているサービスの再起動が発生しますので、pacemakerなど OSSのクラスタ製品LifeKeeperな どの商用のクラスタリング製品を使うとサービス断の時間を最小限にすることが出来ます 。


セミナー情報

event_2017_02_08


—–

タイトルとURLをコピーしました