OpenSSL 1.1.1 1.1.1lより前の脆弱性

critical Nessus プラグイン ID 152782

概要

リモートサービスは脆弱性の影響を受けます。

説明

リモートホストにインストールされているOpenSSLは、1.1.1lより前のバージョンです。したがって、1.1.1lのアドバイザリに記載されている脆弱性の影響を受けます。

-SM2暗号化データを復号するには、アプリケーションがAPI関数EVP_PKEY_decrypt()を呼び出す必要があります。通常、アプリケーションはこの関数を2回呼び出します。初回の入力時点ではoutパラメーターはNULLにできます。また終了時点でoutlenパラメーターには、復号された平文を保持するために必要なバッファサイズでデータが投入されます。その後、アプリケーションは十分なサイズのバッファを割り振り、EVP_PKEY_decrypt() を再び呼び出すことができますが、今回、outパラメーターにNULL以外の値が渡されました。SM2復号化コードの実装におけるバグにより、EVP_PKEY_decrypt()の初回呼び出しに必要な平文を保持するために求められるバッファサイズの計算が、2回目の呼び出しで必要となる実際のサイズよりも小さくなることがあります。これにより、アプリケーションがEVP_PKEY_decrypt() を2回目に呼び出すときにバッファが小さすぎるため、バッファオーバーフローが引き起こされる可能性があります。アプリケーションに対して復号化するためのSM2コンテンツを提示できる悪意のある攻撃者は、選択したデータに関してバッファを最大62バイトまでオーバーフローさせ、バッファ後に保持される他のデータコンテンツを変更することができます。それにより、アプリケーションの動作が変更されたり、アプリケーションがクラッシュされたりする可能性があります。バッファの場所はアプリケーションによって異なりますが、通常はヒープに割り当てられます。OpenSSL 1.1.1l で修正されました (1.1.1-1.1.1k が影響を受けます)。
(CVE-2021-3711)

- ASN.1 文字列は OpenSSL 内部で ASN1_STRING 構造として表されます。この構造には、文字列データを保持するバッファと、バッファ長を保持するフィールドが含まれます。通常の C 文字列とは対照的です。C 文字列は、NUL (0) バイトで終了する文字列データではバッファとして表されます。厳密に必須ではないものの、OpenSSL 独自の d2i 関数 (および類似の解析関数) を使用して解析される ASN.1 文字列、および ASN1_STRING_set() 関数を使用して設定される値が含まれる文字列は、ASN1_STRING 構造のバイト配列を NUL 終端させることにもなります。ただし、ASN1_STRING 配列でデータと長さのフィールドを直接設定することにより、アプリケーションがバイト配列を NUL 終端させることのない、有効な ASN1_STRING 構造を直接的に構成することができます。これは、ASN1_STRING_set0() 関数を使用する場合にも生じる可能性があります。ASN.1 データを出力する多くの OpenSSL 関数で、直接構成されたこと文字列であることが保証されていない場合でも、ASN1_STRING バイト配列が NUL 終端されることが分かっています。アプリケーションによって ASN.1 構造の出力がリクエストされる場合、ASN.1 構造に、データフィールが NUL 終端することなくアプリケーションによって直接構成された ASN1_STRING が含まれていると、読み取りバッファのオーバーランが生じる可能性があります。同様の状況が証明書の名前制限の処理中にも生じることがあります (例えば、OpenSSL 解析関数によってロードされるのではなく、アプリケーションによって直接構成された証明書がある場合、その証明書に NUL 終端されていない ASN1_STRING 構造が含まれているときなどです)。また、X509_get1_email() 関数、X509_REQ_get1_email() 関数、および X509_get1_ocsp() 関数でも生じる可能性があります。悪意のあるアクターがアプリケーションで ASN1_STRING を直接構成させ、影響のあるいずれかの OpenSSL 関数で処理すると、この問題が引き起こされることがあります。結果としてクラッシュする可能性があります (サービス拒否攻撃が生じます)。
また、専用メモリのコンテンツ (秘密鍵、秘密情報を含む平文など) が漏洩することがあります。OpenSSL 1.1.1l で修正されました (1.1.1-1.1.1k が影響を受けます)。OpenSSL 1.0.2za で修正されました (Affected 1.0.2-1.0.2y が影響を受けます)。(CVE-2021-3712)

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

ソリューション

OpenSSLバージョン1.1.1l以降にアップグレードしてください。

参考資料

http://www.nessus.org/u?0bda7eab

https://www.openssl.org/news/secadv/20210824.txt

プラグインの詳細

深刻度: Critical

ID: 152782

ファイル名: openssl_1_1_1l.nasl

バージョン: 1.11

タイプ: combined

エージェント: windows, macosx, unix

ファミリー: Web Servers

公開日: 2021/8/24

更新日: 2023/12/4

サポートされているセンサー: Nessus Agent, Nessus

リスク情報

VPR

リスクファクター: Medium

スコア: 6.7

CVSS v2

リスクファクター: High

基本値: 7.5

現状値: 6.2

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

CVSS スコアのソース: CVE-2021-3711

CVSS v3

リスクファクター: Critical

基本値: 9.8

現状値: 9.1

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

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

脆弱性情報

CPE: cpe:/a:openssl:openssl

必要な KB アイテム: installed_sw/OpenSSL

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

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

パッチ公開日: 2021/8/24

脆弱性公開日: 2021/8/24

参照情報

CVE: CVE-2021-3711, CVE-2021-3712

IAVA: 2021-A-0395-S