OpenSSLの脆弱性情報(High: CVE-2023-0286, Moderate: CVE-2022-4203, CVE-2022-4304, CVE-2022-4450, CVE-2023-0215, CVE-2023-0216, CVE-2023-0217, CVE-2023-0401)と新バージョン(3.0.8, 1.1.1t)

02/08/2023 (JST) に予告どおりにOpenSSLの脆弱性情報(High: CVE-2023-0286, Moderate: CVE-2022-4203, CVE-2022-4304, CVE-2022-4450, CVE-2023-0215, CVE-2023-0216, CVE-2023-0217, CVE-2023-0401)と新バージョン(3.0.8, 1.1.1t)が公開されています。今回はこちらの脆弱性の概要と、各ディストリビューションの対応について簡単にまとめてみます。

[過去関連リンク(最新5件)]

一次情報源

CVSS/プライオリティ

  • CVE-2023-0286
    • 影響するバージョン
      • OpenSSL 3.0, 1.1.1, 1.0.2
    • Priority
      • Vendor: High
      • Red Hat: 7.4 Moderate
    • CVSS Score / CVSS Vector
      • Red Hat: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:H
  • CVE-2022-4203
    • 影響するバージョン
      • OenSSL 3.0.0 – 3.0.7
    • Priority
      • Vendor: Moderate
      • Red Hat: 4.9 Moderate
    • CVSS Score / CVSS Vector
      • Red Hat: CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:N/I:N/A:H
  • CVE-2022-4304
    • 影響するバージョン
      • OpenSSL 3.0, 1.1.1, 1.0.2
    • Priority
      • Vendor: Moderate
      • Red Hat: 5.9 Moderate
    • CVSS Score / CVSS Vector
      • Red Hat: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N
  • CVE-2022-4450
    • 影響するバージョン
      • OpenSSL 3.0, 1.1.1
    • Priority
      • Vendor: Moderate
      • Red Hat: 5.9 Moderate
    • CVSS Score / CVSS Vector
      • Red Hat: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
  • CVE-2023-0215
    • 影響するバージョン
      • OpenSSL 3.0, 1.1.1, 1.0.2
    • Priority
      • Vendor: Moderate
      • Red Hat: 5.9 Moderate
    • CVSS Score / CVSS Vector
      • Red Hat: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
  • CVE-2023-0216
    • 影響するバージョン
      • OpenSSL 3.0.0 – 3.0.7
    • Priority
      • Vendor: Moderate
      • Red Hat: 5.9 Moderate
    • CVSS Score / CVSS Vector
      • Red Hat: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
  • CVE-2023-0217
    • 影響するバージョン
      • OpenSSL 3.0.0 – 3.0.7
    • Priority
      • Vendor: High
      • Red Hat: 5.9 Moderate
    • CVSS Score / CVSS Vector
      • Red Hat: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
  • CVE-2023-0401
    • 影響するバージョン
      • OpenSSL 3.0.0 – 3.0.7
    • Priority
      • Vendor: Moderate
      • Red Hat: 5.9 Moderate
    • CVSS Score / CVSS Vector
      • Red Hat: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
  • CVE-2023-0286
    • 影響するバージョン
      • 3.0, 1.1.1, 1.0.2
    • Priority
      • Vendor: High
      • Red Hat: 7.4 Moderate
    • CVSS Score / CVSS Vector
      • Red Hat: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:H

修正方法

各ディストリビューションの情報を確認してください。

CVE概要(詳細はCVEのサイトをご確認ください)

  • http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-0286
    • X.509 GeneralNameでのX.400アドレスの型の取り違え(Type Confusion)
    • 重要度 – High
    • 対象 – OpenSSL 3.0, 1.1.1, 1.0.2
    • X.509 GeneralNameでX.400アドレスの処理中に型の取り違え(Type Confusion)の脆弱性がありました。X.400アドレスはASN1_STRINGとしてパースされていましたが、グローバルのGENERAL_NAME構造体の定義ではx400AddressフィールドがASN1_TYPEになっていました。このフィールドは、OpenSSLの関数GENERAL_NAME_cmp()によって、ASN1_STRINGではなくASN1_TYPEとして解釈されます。 CRLチェックが有効になっている(すなわちアプリケーションがX509_V_FLAG_CRL_CHECKフラグを設定している)際には、この脆弱性を利用して攻撃者は任意のポインターをmemcmpコールに渡すことができ、メモリの内容を読み取ったり、サービス拒否を実行したりできるようになります。ほとんどの場合、攻撃者は証明書チェーンとCRLの両方を使う必要があり、そのどちらも有効な署名を持っている必要はありません。攻撃者がこれらの入力の1つだけを制御した場合、他の入力にはX.400アドレスが組み込まれているCRL distribution pointが必要になりますが、これは一般的ではありません。そのため、この脆弱性はネットワーク経由でCRLを取得する独自の機能を実装したアプリケーションにのみ影響を与える可能性が最も高くなります。
  • http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-4304
    • RSA復号でのタイミングオラクル
    • 重要度 – Moderate
    • 対象 – OpenSSL 3.0, 1.1.1, 1.0.2
    • Bleichenbacher攻撃でネットワークを介して平文を回復するのに十分な可能性がある、タイミングベースのサイドチャネルがOpenSSLのRSA復号の実装に存在します。復号化を成功させるには、攻撃者は復号化のために非常に多数の試行メッセージを送信しなければなりません。この脆弱性は、PKCS#1 v1.5、RSA-OEAP、およびRSASVEの全てのRSAパディングモードに影響します。 たとえばTLS接続では、RSAは一般的にクライアントによって暗号化されたプリマスターシークレットをサーバーに送信するために使用されます。クライアントとサーバー間の本物の接続を確認した攻撃者は、この脆弱性を利用してサーバーにトライアルメッセージを送信し、その処理にかかった時間を記録する可能性があります。充分な数のメッセージにより、攻撃者は元の接続に使用されたプリマスターシークレットを回復し、その接続を介して送信されたアプリケーションデータを復号化できる可能性があります。
  • http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-4203
    • X.509 名前制約でのバッファーオーバーフロー読み込み
    • 重要度 – Moderate
    • 対象 – OpenSSL 3.0.0 – 3.0.7
    • X.509 証明書の検証、特に名前制約チェックで読み取りバッファオーバーランが発生する可能性があります。 これは、証明書チェーンの署名の検証後に発生し、CAが悪意のある証明書に署名するか、信頼できる発行者へのパスを構築できなくてもアプリケーションが証明書の検証を続行する必要があることに注意してください。読み取りバッファオーバーランによりクラッシュが発生し、DoS攻撃につながる可能性があります。理論的には、プライベートメモリの内容(すなわち秘密鍵や機密性の高い平文など)が開示される可能性もありますが、このアドバイザリのリリース時点では、メモリ内容の開示につながる実際のエクスプロイトは確認されていません。TLS クライアントでは、悪意のあるサーバーに接続することによって発生する可能性があります。TLS サーバーでは、サーバーがクライアント認証を要求し、悪意のあるクライアントが接続すると、発生する可能性があります。
  • http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-0215
    • BIO_new_NDEFでのUse-after-free
    • 重要度 – Moderate
    • 対象 – OpenSSL 3.0, 1.1.1, 1.0.2
    • パブリックAPI関数BIO_new_NDEF()は、BIOを通じてASN.1データをストリーミングするために使用されるヘルパー関数です。これはOpenSSLの内部でSMIME、CMS、PKCS7ストリーミング機能をサポートするために使用されますが、エンド ユーザーアプリケーションから直接呼び出すこともできます。この関数は呼び出し元からBIOを受け取り、新しいBIO_f_asn1フィルターBIOを先頭に付加してBIO チェーンを形成し、BIO チェーンの新しいヘッドを呼び出し元に返します。CMS受信者の公開鍵が無効な場合など、特定の条件下では、新しいフィルターBIO が解放され、関数は失敗を示すNULL の結果を返します。しかしながら、この場合にはBIO チェーンは適切にクリーンアップされず、呼び出し元によって渡されたBIOは、以前に解放されたフィルターBIO への内部ポインターを保持したままです。その後、呼び出し元がBIOでBIO_pop()を呼び出すと、use-after-free が発生します。 これにより、クラッシュが発生する可能性があります。このシナリオは、内部関数 B64_write_ASN1() で直接発生し、これによりBIO_new_NDEF()が呼び出され、その後BIOでBIO_pop()が呼び出されます。この内部関数は、パブリックAPI関数PEM_write_bio_ASN1_stream()、PEM_write_bio_CMS_stream()、PEM_write_bio_PKCS7_stream()、SMIME_write_ASN1()、SMIME_write_CMS()、SMIME_write_PKCS7()によって呼び出されます。これによって影響を受ける可能性があるその他のパブリックAPI関数には、i2d_ASN1_bio_stream()、BIO_new_CMS()、BIO_new_PKCS7()、i2d_CMS_bio_stream()、i2d_PKCS7_bio_stream()が含まれます。 OpenSSL cmsとsmimeコマンドラインアプリケーションも同様に影響を受けます。
  • http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-0215
    • BIO_new_NDEFでのUse-after-free
    • 重要度 – Moderate
    • 対象 – OpenSSL 3.0, 1.1.1, 1.0.2
    • パブリックAPI関数BIO_new_NDEF()は、BIOを通じてASN.1データをストリーミングするために使用されるヘルパー関数です。これはOpenSSLの内部でSMIME、CMS、PKCS7ストリーミング機能をサポートするために使用されますが、エンド ユーザーアプリケーションから直接呼び出すこともできます。この関数は呼び出し元からBIOを受け取り、新しいBIO_f_asn1フィルターBIOを先頭に付加してBIO チェーンを形成し、BIO チェーンの新しいヘッドを呼び出し元に返します。CMS受信者の公開鍵が無効な場合など、特定の条件下では、新しいフィルターBIO が解放され、関数は失敗を示すNULL の結果を返します。しかしながら、この場合にはBIO チェーンは適切にクリーンアップされず、呼び出し元によって渡されたBIOは、以前に解放されたフィルターBIO への内部ポインターを保持したままです。その後、呼び出し元がBIOでBIO_pop()を呼び出すと、use-after-free が発生します。 これにより、クラッシュが発生する可能性があります。このシナリオは、内部関数 B64_write_ASN1() で直接発生し、これによりBIO_new_NDEF()が呼び出され、その後BIOでBIO_pop()が呼び出されます。この内部関数は、パブリックAPI関数PEM_write_bio_ASN1_stream()、PEM_write_bio_CMS_stream()、PEM_write_bio_PKCS7_stream()、SMIME_write_ASN1()、SMIME_write_CMS()、SMIME_write_PKCS7()によって呼び出されます。これによって影響を受ける可能性があるその他のパブリックAPI関数には、i2d_ASN1_bio_stream()、BIO_new_CMS()、BIO_new_PKCS7()、i2d_CMS_bio_stream()、i2d_PKCS7_bio_stream()が含まれます。 OpenSSL cmsとsmimeコマンドラインアプリケーションも同様に影響を受けます。
  • http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-0215
    • BIO_new_NDEFでのUse-after-free
    • 重要度 – Moderate
    • 対象 – OpenSSL 3.0, 1.1.1, 1.0.2
    • パブリックAPI関数BIO_new_NDEF()は、BIOを通じてASN.1データをストリーミングするために使用されるヘルパー関数です。これはOpenSSLの内部でSMIME、CMS、PKCS7ストリーミング機能をサポートするために使用されますが、エンド ユーザーアプリケーションから直接呼び出すこともできます。この関数は呼び出し元からBIOを受け取り、新しいBIO_f_asn1フィルターBIOを先頭に付加してBIO チェーンを形成し、BIO チェーンの新しいヘッドを呼び出し元に返します。CMS受信者の公開鍵が無効な場合など、特定の条件下では、新しいフィルターBIO が解放され、関数は失敗を示すNULL の結果を返します。しかしながら、この場合にはBIO チェーンは適切にクリーンアップされず、呼び出し元によって渡されたBIOは、以前に解放されたフィルターBIO への内部ポインターを保持したままです。その後、呼び出し元がBIOでBIO_pop()を呼び出すと、use-after-free が発生します。 これにより、クラッシュが発生する可能性があります。このシナリオは、内部関数 B64_write_ASN1() で直接発生し、これによりBIO_new_NDEF()が呼び出され、その後BIOでBIO_pop()が呼び出されます。この内部関数は、パブリックAPI関数PEM_write_bio_ASN1_stream()、PEM_write_bio_CMS_stream()、PEM_write_bio_PKCS7_stream()、SMIME_write_ASN1()、SMIME_write_CMS()、SMIME_write_PKCS7()によって呼び出されます。これによって影響を受ける可能性があるその他のパブリックAPI関数には、i2d_ASN1_bio_stream()、BIO_new_CMS()、BIO_new_PKCS7()、i2d_CMS_bio_stream()、i2d_PKCS7_bio_stream()が含まれます。 OpenSSL cmsとsmimeコマンドラインアプリケーションも同様に影響を受けます。
  • http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-4450
    • PEM_read_bio_exを呼び出し後の二重開放
    • 重要度 – Moderate
    • 対象 – OpenSSL 3.0, 1.1.1
    • 関数PEM_read_bio_ex()は、BIOからPEMファイルを読み取り、名前(”CERTIFICATE”など)、ヘッダーデータ、ペイロード データをパースして復号します。関数が成功すると、”name_out”、”header”、”data”引数に、関連するデコードされたデータを含むバッファーへのポインターが設定されます。呼び出し元は、これらのバッファーを解放する責任があります。ペイロード データが0バイトになるPEMファイルを作成することが可能です。この場合、PEM_read_bio_ex()は失敗を返しますが、既に解放されているバッファーへのポインターをヘッダー引数に取り込みます。呼び出し側もこのバッファーを解放すると、二重の解放が発生します。これはおそらくクラッシュにつながります。これは攻撃者によって悪意のあるPEMファイルを提供してDoS攻撃を実行するように悪用される可能性があります。関数PEM_read_bio()、PEM_read()は PEM_read_bio_ex()の単純なラッパーであるため、これらの関数も直接影響を受けます。これらの関数は、同じく脆弱なPEM_X509_INFO_read_bio_ex()やSSL_CTX_use_serverinfo_file()など、他の多くのOpenSSL関数によっても間接的に呼び出されます。いくつかのOpenSSLの内部使用では、PEM_read_bio_ex()が失敗を返す場合呼び出し元がヘッダー引数を解放しないため脆弱性ははありません。これには、PEM_read_bio_TYPE()関数と、OpenSSL 3.0 で導入されたデコーダーが含まれます。
  • http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-0216
    • d2i_PKCS7()関数での不正なポインタ被参照
    • 重要度 – Moderate
    • 対象 – OpenSSL 3.0.0 – 3.0.7
    • アプリケーションがd2i_PKCS7()、d2i_PKCS7_bio()、d2i_PKCS7_fp()関数を使用して不正な形式のPKCS7データをロードしようとすると、読み取り時に無効なポインター被参照がトリガーされる可能性があります。 被参照の結果アプリケーションがクラッシュし、DoS攻撃につながる可能性があります。OpenSSLのTLS実装ではこの関数を呼び出しませんが、サードパーティアプリケーションは信頼できないデータに対してこれらの関数を呼び出す可能性があります。
  • http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-0217
    • DSA公開鍵検証でのNULLポインタ被参照
    • 重要度 – Moderate
    • 対象 – OpenSSL 3.0.0 – 3.0.7
    • アプリケーションが EVP_PKEY_public_check()関数によって不正な形式のDSA公開鍵をチェックしようとすると、読み取り時に不正なポインタ被参照が発生する可能性があります。 これにより、アプリケーションがクラッシュする可能性があります。この関数は、信頼できないソースから提供された公開鍵に対して呼び出すことができ、攻撃者がDoS攻撃を引き起こす可能性があります。OpenSSLのTLS実装ではこの関数を呼び出しませんが、FIPS 140-3などの追加のセキュリティ要件により、アプリケーションがこの関数を呼び出す可能性があります。
  • http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-0401
    • PKCS7データ検証でのNULLポインタ被参照
    • 重要度 – Moderate
    • 対象 – OpenSSL 3.0.0 – 3.0.7
    • 署名がPKCS7署名済み、またはsignedAndEnvelopedデータで検証されている場合、NULLポインタ被参照が発生する可能性があります。署名に使用されるハッシュアルゴリズムがOpenSSLライブラリに認識されていてもハッシュアルゴリズムの実装が利用できない場合、ダイジェストの初期化が失敗します。初期化関数からの戻り値のチェックが漏れており、後でダイジェストAPIが無効に使用されてクラッシュする可能性があります。アルゴリズムが利用できないのは、提供者のFIPS有効化構成を使用すること、またはより一般的にはレガシーの提供者を読み込まないことが原因です。PKCS7データは、SMIME ライブラリ呼び出しとタイムスタンプ(TS)ライブラリ呼び出しによって処理されます。OpenSSLのTLS実装はこれらの関数を呼び出しませんが、信頼されていないデータの署名を検証するためにこれらの関数を呼び出すサードパーティアプリケーションが影響を受ける可能性があります。

主なディストリビューションの対応方法

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

対処方法

各ディストリビューションの案内に従い、アップデートを行ってください。全てのRed Hat製品でパッチが行き渡っているかを確認するには、Red Hat SatelliteKatello、Spacewalk等を使うと管理が便利でしょう。

[参考]

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