CentOS 9 : openssl-3.0.7-18.el9

critical Nessus プラグイン ID 193921

概要

リモートの CentOS ホストに 1 つ以上の openssl 用セキュリティ更新プログラムがありません。

説明

リモートの CentOS Linux 9 ホストに、openssl-3.0.7-18.el9 ビルド変更ログに記載されている複数の脆弱性の影響を受けるパッケージがインストールされています。

- OpenSSL の libssl は、内部的にクライアント側の X509_verify_cert() を呼び出して、サーバーから提供された証明書を検証します。この関数は、内部エラー (メモリ不足など) を示すために負の戻り値を返す可能性があります。このような負の戻り値は OpenSSL によって誤って処理され、IO 関数 (SSL_connect()またはSSL_do_handshake()など) が成功せず、その後の SSL_get_error() への呼び出しも実施されないため、SSL_ERROR_WANT_RETRY_VERIFY の値が返されます。この戻り値は、アプリケーションが以前に SSL_CTX_set_cert_verify_callback() を呼び出していた場合にのみ、OpenSSL によって返されることが想定されています。ほとんどのアプリケーションはこれを行わないため、SSL_GET_error() からの SSL_ERROR_WANT_RETRY_VERIFYの戻り値は完全に予期しないものになり、結果としてアプリケーションが正しく動作しない可能性があります。正確な動作はアプリケーションによって異なりますが、クラッシュ、無限ループ、またはその他の同様の不適切な応答を引き起こす可能性があります。
この問題は、証明書チェーンを処理する際に X509_verify_cert() が内部エラーを表示する OpenSSL 3.0 の別のバグと組み合わせされた場合、さらに深刻になります。これは、証明書に Subject Alternative Name 拡張が含まれておらず、認証局が名前の制約を強制している場合に発生します。この問題は、有効なチェーンでも発生する可能性があります。2 つの問題を組み合わせると、攻撃者は不適切なアプリケーション依存の動作を引き起こす可能性があります。OpenSSL 3.0.1 (3.0.0 が影響を受けます) で修正されました。(CVE-2021-4044)

- モジュラー平方根を計算する BN_mod_sqrt() 関数に、非素数の係数に対して永久にループするバグが含まれています。内部的に、この関数は圧縮形式の楕円曲線公開鍵または圧縮形式でエンコードされたベースポイントを持つ明示的な楕円曲線パラメーターを含む証明書を解析する際に使用されます。無効な明示的な曲線パラメーターを持つ証明書を作成することで、無限ループを発生させることが可能です。証明書の解析は、証明書の署名の検証前に行われるため、外部から提供された証明書を解析するプロセスは、サービス拒否攻撃を受ける可能性があります。細工された秘密鍵を解析する際に、明示的な楕円曲線パラメーターを含む可能性があるため、無限ループに達する可能性もあります。したがって、以下の脆弱な状況が含まれます。- サーバー証明書を消費する TLS クライアント - クライアント証明書を消費する TLS サーバー - 顧客から証明書または秘密鍵を取得するホスティングプロバイダー - サブスクライバーからの証明書リクエストを解析する認証局 - ASN.1 楕円曲線パラメーターを解析するその他のもの。攻撃者がパラメーター値をコントロールできる場合、BN_mod_sqrt() を使用するその他のアプリケーションは、この DoS の問題に対して脆弱です。OpenSSL 1.0.2バージョンでは、証明書の初期解析中に公開鍵が解析されないため、無限ループを発生させることがわずかに困難になります。ただし、証明書の公開鍵が必要な何らかの操作を行うと、無限ループが発生します。特に、攻撃者は自己署名証明書を使用して、証明書署名の検証中にループを発生させる可能性があります。OpenSSL バージョン、1.0.21.1.1および 3.0は、この問題の影響を受けます。これは 2022 年 3 月 15 日の 1.1.1n および 3.0.2のリリースで対処されました。OpenSSL 3.0.2で修正されました (3.0.0、3.0.1が影響を受けました)。OpenSSL 1.1.1n で修正されました (1.1.1-1.1.1m が影響を受けました)。OpenSSL 1.0.2zd で修正されました (1.0.2-1.0.2zc が影響を受けました)。(CVE-2022-0778)

- c_rehash スクリプトでコマンドインジェクションが可能 (CVE-2022-1292)

- OCSP_NOCHECKS を使用すると、署名者証明書の検証が不正確な応答を返します (CVE-2022-1343)

- OPENSSL_LH_flush() がメモリの再利用を中断します (CVE-2022-1473)

- c_rehash スクリプトでコマンドインジェクションが可能 (CVE-2022-2068)

- AES OCB が 32-bit x86 で一部のバイトの暗号化に失敗します (CVE-2022-2097)

- X.509 メールアドレスのバッファオーバーフロー (CVE-2022-3602、CVE-2022-3786)

- X.509 証明書の検証、特に名前の制約のチェックで、読み取りバッファオーバーランが発生する可能性があります。これは証明書チェーン署名の検証後に発生し、信頼できる発行者へのパスを構築できないにもかかわらず、CA が悪意のある証明書に署名するか、アプリケーションが証明書の検証を続行する必要があることに注意してください。読み取りバッファオーバーランによりクラッシュが発生し、サービス拒否攻撃につながる可能性があります。理論的には、プライベートアドバイザリのコンテンツ (プライベートキーや機密の平文など) が漏洩する可能性もありますが、このアドバイザリのリリース時点では、メモリコンテンツの漏洩につながる悪用は機能していません。TLS クライアントでは、悪意のあるサーバーに接続することでこれが発生する可能性があります。TLS サーバーでは、サーバーがクライアント認証をリクエストし、悪意のあるクライアントが接続すると、これが発生する可能性があります。(CVE-2022-4203)

- OpenSSL RSA Decryption 実装にタイミングベースのサイドチャネルが存在するため、Bleichenbacher スタイルの攻撃でネットワーク全体の平文を十分に復元できる可能性があります。復号化を成功させるためには、攻撃者が非常に多くの試行メッセージを復号化のために送信できる必要があります。
この脆弱性は、すべての RSA パディングモードに影響します: PKCS#1 v1.5、RSA-OEAP および RSASVE。たとえば、TLS 接続では、暗号化されたプレマスターシークレットをサーバーに送信するために、RSA が一般的にクライアントによって使用されます。クライアントとサーバー間の真の接続を観察した攻撃者が、この欠陥を利用して、試行メッセージをサーバーに送信し、それらの処理にかかった時間を記録する可能性があります。十分な量のメッセージの後、攻撃者が元の接続に使用されていたプレマスターシークレットを復元し、その接続を介して送信されたアプリケーションデータを復号化できる可能性があります。(CVE-2022-4304)

- 関数 PEM_read_bio_ex() が BIO から PEM ファイルを読み取り、名前 (例:
CERTIFICATE)、任意のヘッダーデータおよびペイロードデータを解析およびデコードします。関数が成功した場合、name_out、header、および data 引数に、関連するデコード済みデータを含むバッファへのポインターが入力されます。
呼び出し元には、これらのバッファを解放する責任があります。ペイロードデータが 0 バイトになる PEM ファイルを構築することが可能です。この場合、PEM_read_bio_ex() は失敗コードを返しますが、すでに解放されているバッファへのポインターがヘッダー引数に入力されます。呼び出し元もこのバッファを解放すると、二重解放が発生します。これはおそらくクラッシュにつながります。これを悪用して、解析用の悪質な PEM ファイルを提供し、サービス拒否攻撃を仕掛ける攻撃者が存在する可能性があります。PEM_read_bio() および PEM_read() 関数は、PEM_read_bio_ex() の単純なラッパーであるため、これらの関数も直接影響を受けます。これらの関数は、PEM_X509_INFO_read_bio_ex() や SSL_CTX_use_serverinfo_file() などのその他の多数の OpenSSL 関数からも間接的に呼び出されるため、やはり脆弱です。PEM_read_bio_ex() が失敗コードを返す場合、呼び出し側はヘッダー引数を解放しないため、これらの関数の一部の OpenSSL 内部使用は脆弱ではありません。これらの場所には、PEM_read_bio_TYPE() 関数や、OpenSSL 3.0で導入されたデコーダーが含められます。OpenSSL asn1parse コマンドラインアプリケーションも、この問題の影響を受けます。(CVE-2022-4450)

- パブリック API 関数 BIO_new_NDEF は、BIO を介して ASN.1 データをストリーミングするために使用されるヘルパー関数です。これは、SMIME、CMS、および PKCS7 ストリーミング機能をサポートするために OpenSSL の内部で主に使用されますが、エンドユーザーのアプリケーションから直接呼び出されることもあります。関数は、呼び出し元から 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 コマンドラインアプリケーションも同様に影響を受けます。(CVE-2023-0215)

- アプリケーションが d2i_PKCS7()、d2i_PKCS7_bio() または d2i_PKCS7_fp() 関数で無効な形式の PKCS7 データをロードしようとする場合、読み取り時の無効なポインターデリファレンスが発生する可能性があります。逆参照の結果、アプリケーションがクラッシュし、サービス拒否攻撃が引き起こされる可能性があります。OpenSSL の TLS 実装はこの関数を呼び出しませんが、サードパーティアプリケーションが信頼できないデータでこれらの関数を呼び出す可能性があります。
(CVE-2023-0216)

- アプリケーションが EVP_PKEY_public_check() 関数によって無効な形式の DSA 公開鍵をチェックしようとする際に、読み取り時の無効なポインターデリファレンスが発生する可能性があります。このため、アプリケーションがクラッシュする可能性が高くなります。
この関数は、信頼できないソースから提供された公開鍵で呼び出すことができるため、攻撃者がサービス拒否攻撃を引き起こす可能性があります。OpenSSL の TLS 実装はこの関数を呼び出しませんが、FIPS 140-3 などの標準によって課せられる追加のセキュリティ要件がある場合、アプリケーションがこの関数を呼び出す可能性があります。(CVE-2023-0217)

- X.509 GeneralName 内の X.400 アドレス処理に関連する型の取り違えの脆弱性があります。
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 つのみをコントロールする場合、他の入力には CRL 配布ポイントとして X.400 アドレスがすでに含められている必要がありますが、これはよくあることではありません。このため、この脆弱性の影響を受ける可能性が最も高いのは、ネットワークを介して CRL を取得するための独自の機能を実装しているアプリケーションのみです。(CVE-2023-0286)

- PKCS7 signed または signedAndEnveloped データで署名が検証されている場合に、NULL ポインターが逆参照される可能性があります。署名に使用されるハッシュアルゴリズムが OpenSSL ライブラリに知られているものの、ハッシュアルゴリズムの実装が利用できない場合、ダイジェストの初期化は失敗します。初期化関数からの戻り値のチェックがないため、後でダイジェスト API の無効な使用につながり、クラッシュを引き起こす可能性が最も高くなります。アルゴリズムが使用できないのは、プロバイダーの FIPS が有効な設定を使用しているか、より一般的にはレガシープロバイダーをロードしていないことが原因です。
PKCS7 データは、SMIME ライブラリ呼び出しと、タイムスタンプ (TS) ライブラリ呼び出しによっても処理されます。OpenSSL の TLS 実装はこれらの関数を呼び出しませんが、サードパーティアプリケーションが信頼できないデータの署名を検証するためにこれらの関数を呼び出すと、影響を受ける可能性があります。(CVE-2023-0401)

Nessus はこれらの問題をテストしておらず、代わりにアプリケーションが自己報告するバージョン番号にのみ依存していることに注意してください。

ソリューション

CentOS 9 Stream openssl パッケージを更新してください。

参考資料

https://kojihub.stream.centos.org/koji/buildinfo?buildID=33062

プラグインの詳細

深刻度: Critical

ID: 193921

ファイル名: centos9_openssl-3_0_7-18_33062.nasl

バージョン: 1.1

タイプ: local

エージェント: unix

公開日: 2024/4/26

更新日: 2024/4/26

サポートされているセンサー: Agentless Assessment, Frictionless Assessment Agent, Frictionless Assessment AWS, Frictionless Assessment Azure, Nessus

リスク情報

VPR

リスクファクター: High

スコア: 7.4

CVSS v2

リスクファクター: Critical

基本値: 10

現状値: 7.8

ベクトル: CVSS2#AV:N/AC:L/Au:N/C:C/I:C/A:C

CVSS スコアのソース: CVE-2022-2068

CVSS v3

リスクファクター: Critical

基本値: 9.8

現状値: 8.8

ベクトル: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

現状ベクトル: CVSS:3.0/E:P/RL:O/RC:C

脆弱性情報

CPE: cpe:/a:centos:centos:9, p-cpe:/a:centos:centos:openssl, p-cpe:/a:centos:centos:openssl-devel, p-cpe:/a:centos:centos:openssl-libs, p-cpe:/a:centos:centos:openssl-perl

必要な KB アイテム: Host/local_checks_enabled, Host/CentOS/release, Host/CentOS/rpm-list, Host/cpu

エクスプロイトが利用可能: true

エクスプロイトの容易さ: Exploits are available

パッチ公開日: 2023/5/22

脆弱性公開日: 2021/12/14

参照情報

CVE: CVE-2021-4044, CVE-2022-0778, CVE-2022-1292, CVE-2022-1343, CVE-2022-1473, CVE-2022-2068, CVE-2022-2097, CVE-2022-3602, CVE-2022-3786, CVE-2022-4203, CVE-2022-4304, CVE-2022-4450, CVE-2023-0215, CVE-2023-0216, CVE-2023-0217, CVE-2023-0286, CVE-2023-0401

IAVA: 2021-A-0602-S, 2022-A-0121-S, 2022-A-0186, 2022-A-0257, 2022-A-0265, 2022-A-0452-S, 2022-A-0518-S, 2023-A-0462-S, 2023-A-0582-S