概要
リモートサービスは、複数の脆弱性の影響を受けます。
説明
リモートホストにインストールされている OpenSSL は、3.5.7 より前のバージョンです。したがって、3.5.7 のアドバイザリに記載されている複数の脆弱性の影響を受けます。
- 問題のサマリー: 特別に細工された PKCS#7 または S/MIME 署名付きメッセージにより、PKCS#7 署名認証中に use-after-free が発生する可能性があります。影響のサマリー: メモリ解放後使用 (use-after-free) により、プロセスのクラッシュ、ヒープの破損、またはリモートでのコード実行が引き起こされる可能性があります。PKCS#7 または S/MIME 署名付きメッセージを処理するときに、SignedData digestAlgorithms フィールドが空の ASN.1 SET として存在すると、OpenSSL が PKCS7_verify() 中に呼び出し元所有の BIO を不適切に解放する可能性があります。呼び出し元のアプリケーションが BIO をその後使用すると、メモリ解放後使用 (Use After Free) 状態になります。一般的なケースでは、これはアプリケーションが最初に PKCS7_verify() に渡された BIO で BIO_free() を後に呼び出すときに発生します。アロケーターの動作やアプリケーション固有の BIO 使用パターンによっては、これによりクラッシュやその他のメモリ破損が発生する可能性があります。一部のアプリケーションコンテキストでは、これがリモートコードの実行のために悪用される可能性があります。OpenSSL PKCS#7 API を使用して PKCS#7 または S/MIME 署名のあるメッセージを処理するアプリケーションが影響を受ける可能性があります。この処理に CMS API を使用するアプリケーションは影響を受けません。4.0、3.6、3.5、3.4、3.0 の FIPS モジュールは、この問題による影響を受けません。これは、影響を受けるコードが OpenSSL FIPS モジュール境界の外部にあるためです。(CVE-2026-45447)
- 問題のサマリー: CMS パスワードベースの復号化 (RFC 3211/PWRI キーアンラップ) が攻撃者指定の CMS データを処理するとき、攻撃者が選択したストリームモード KEK 暗号が kek_unwrap_key() でヒープ領域外読み取りを発生させる可能性があります。影響のサマリー: 入力バッファがメモリページの境界で終了し、次のページがマッピング解除されている場合、ヒープバッファのオーバーリードによりクラッシュが引き起こされ、アプリケーションのサービス拒否につながる可能性があります。オーバーリードされたバイトが攻撃者に漏洩されることはないため、情報漏洩はありません。キーアンラップ関数は、RFC で指定されているようにチェックバイトテストを実行し、メッセージからのラップされたキーの長さに基づくヒープ割り当てから 7 バイトを読み取ります。ラッピング暗号のブロック長に基づく最小長チェックがあります。ただし、暗号は攻撃者の PWRI keyEncryptionAlgorithm で運ばれる OID から選択され、暗号がブロック暗号である必要はありません。攻撃者がストリームモード暗号を選択すると、ガードは無効になり、ラップ解除されたキーを含む割り当てられたバッファが小さすぎて RFC で指定されたチェックバイトに収まらない可能性があり、バッファオーバーリードが発生する可能性があります。信頼できない CMS データに対して、CMS_decrypt() または CMS_decrypt_set1_password() (同等の openssl cms
-decrypt -pwri_password ...) を呼び出すアプリケーションは、この問題に対して脆弱です。パスワードの知識は必要ありません。オーバーリードは、認証が成功する前に、ラップ解除の試行中に発生します。オーバーリードは数バイトに制限され、出力に書き込まれないため、情報漏洩は発生しません。
クラッシュを発生させるには、マッピングされていないメモリの境界に対する割り当てが必要ですが、通常のアロケーターでは起こらないことになります。FIPS モジュールは、この問題の影響を受けません。(CVE-2026-9076)
- 問題のサマリー: ASN1_mbstring_ncopy() で Unicode 出力の宛先バッファをサイジングする際の符号付き整数オーバーフローが、ヒープバッファオーバーフローにつながる可能性があります。影響の概要: ヒープバッファオーバーフローにより、クラッシュや攻撃者による任意コード実行、またはその他の未定義の動作が発生する可能性があります。ASN1_mbstring_copy() と ASN1_mbstring_ncopy() では、BMPSTRING (UTF-16) と UNIVERSALSTRING (UTF-32) の入力文字カウントを左シフトし、UTF8STRING の文字ごとのバイト数を合計することによって、Unicode 出力のデスティネーションサイズは符号付き整数で計算されます。入力が約 2^30 文字に達すると、計算がオーバーフローします。最悪の場合 (2^30 文字の UNIVERSALSTRING)、サイズがゼロに折り返されると、OPENSSL_malloc(1) が呼び出され、後続の文字コピーが 1 バイトの割り当てを超えて数ギガバイトを書き込みます。X.509 証明書の処理は ASN1_STRING_set_by_NID() を経由しますが、この関数の DIRSTRING_TYPE マスクは UNIVERSALSTRING を除外しており、NID ごとのサイズ制限によって入力長が制限されています。OpenSSL のネットワークプロトコルや証明書処理パスにおいて、このオーバーフローが発生することはありません。このバグを発生させるには、ASN1_mbstring_copy() や ASN1_mbstring_ncopy() を直接呼び出すか、ASN1_STRING_TABLE_add() を介してカスタム文字列タイプを登録するアプリケーションが必要であり、攻撃者が制御する半ギガバイト以上の入力データが与えられる必要があります。以上の理由により、この問題は重要度低と評価されました。4.0、3.6、3.5、3.4、3.0 の FIPS モジュールは、この問題による影響を受けません。これは、影響を受けるコードが OpenSSL FIPS モジュール境界の外部にあるためです。(CVE-2026-7383)
- 問題のサマリー: AES-SIV (RFC 5297) および AES-GCM-SIV (RFC 8452) の実装は、空の暗号文を持つ AAD (追加認証データ) の認証を誤って処理するため、このようなメッセージが偽造される可能性があります。影響の概要: 攻撃者は、これらの暗号を使用して、任意の AAD で空のメッセージを被害者のアプリケーションに偽造する可能性があります。AES-SIV (RFC 5297) と AES-GCM-SIV (RFC 8452) はノンスの誤用に強い AEAD モードです。キー、ノンス、オプションの AAD (認証されるが暗号化されていないバイト)、平文を受け入れ、暗号文と 16 バイトのタグを生成します。復号化では、「EVP_DecryptFinal_ex()」は、タグが正常に検証された場合にのみ成功を返すと記載されています。これらの暗号の OpenSSL のプロバイダー実装では、期待されるタグは、復号化関数が空でないデータで呼び出された場合にのみ計算されます。呼び出し元が AAD を指定した後、受信した暗号文の長さがゼロの場合などに起こり得るように、暗号文の更新を呼び出さずに「EVP_DecryptFinal_ex()」を呼び出した場合、タグは再計算されず、引き続き全桁ゼロの値のままとなります。AES-GCM-SIV を使用する場合、任意の AAD、空の暗号文、すべてゼロのタグを送信する攻撃者は、自身が知らない任意の鍵に対して、一度の試行で認証を通過できてしまいます。AES-SIV を使用する場合、攻撃をマウントするために、アプリケーションは、キーをリセットせずに復号化コンテキストを再利用する必要があります。AES-SIV は、OpenSSL 3.0 以降に実装されています。AES-GCM-SIV は、OpenSSL 3.2 以降に実装されています。OpenSSL 自体で実装されているプロトコル (TLS/CMS/PKCS7/HPKE/QUIC) は、AES-GCM-SIV または AES-SIV のいずれもサポートしていません。攻撃を仕掛けるには、アプリケーションが独自のプロトコルを実装し、EVP インターフェースを使用する必要があります。また、暗号文が空のメッセージが届いたときに、暗号文の更新をスキップする必要があります。4.0、3.6、3.5、3.4、3.0 の FIPS モジュールは、これらのアルゴリズムが FIPS 認証を受けておらず、影響を受けるコードが OpenSSL FIPS モジュール境界の外部にあるため、この問題による影響を受けません。(CVE-2026-45446)
- 問題のサマリー: アプリケーションがパブリック EVP_Cipher() ワンショットインターフェースから AES-OCB コンテキストを駆動するとき、アプリケーション提供の初期化ベクトル (IV) はサイレントに破棄されます。影響の概要:
同じキーで暗号化されたすべてのメッセージは、呼び出し元から供給された IV に関係なく、同じ有効なノンスを使用するため、(キー、ノンス) 再利用と機密性の喪失が発生します。認証タグの計算に同じコードパスを使用する場合、タグは (キー、IV) のペアにのみ依存し、平文や暗号文には依存しません。これにより、キャプチャされた単一のメッセージから任意の暗号文を普遍的に偽造することが可能です。OpenSSL には暗号化を駆動する方法として、ドキュメントに記載されているストリーミングインターフェース (EVP_CipherUpdate / EVP_CipherFinal_ex) と、より低レベルのワンショット方式である EVP_Cipher() の 2 つが用意されています。ただし、そのドキュメントでは、EVP_CipherUpdate() および EVP_CipherFinal_ex() の代わりに、アプリケーションによる使用を明示的に推奨していません。OCB プロバイダーのストリーミングハンドラーは、データを処理する前に、アプリケーション指定の IV を OCB コンテキストにフラッシュします。ワンショットハンドラーはそうではありませんでした。したがって、AES-OCB コンテキストの EVP_Cipher() へのすべての呼び出しは、呼び出し側の IV に関係なく、暗号の初期化によって残されたすべてゼロのキー派生のオフセット状態で実行されました。後で EVP_EncryptFinal_ex() を使用して認証タグを取得した場合、その時点で遅延 IV セットアップが実行され、平文に蓄積されているはずの実行チェックサムがクリアされます。結果のタグは (キー、IV) のみの関数であり、同じ (キー、IV) ペアの下で生成された暗号文に対して検証します。OpenSSL SSL/TLS 実装は影響を受けません。AES-OCB は TLS 暗号化パッケージではなく、libssl はいかなる場合でも EVP_Cipher() を呼び出しません。文書化されているストリーミング AEAD API (EVP_CipherUpdate / EVP_CipherFinal_ex) を通じて AES-OCB を駆動するアプリケーションは影響を受けません。AES-OCB 暗号と EVP_Cipher() ワンショット API を組み合わせたアプリケーションのみが脆弱です。4.0、3.6、3.5、3.4、3.0 の FIPS モジュールは、この問題による影響を受けません。これは、AES-OCB が OpenSSL FIPS モジュール境界の外部にあるためです。(CVE-2026-45445)
Nessus はこれらの問題をテストしておらず、代わりにアプリケーションが自己報告するバージョン番号にのみ依存していることに注意してください。
ソリューション
OpenSSL バージョン 3.5.7 以降にアップグレードしてください。
プラグインの詳細
ファイル名: openssl_3_5_7.nasl
エージェント: windows, macosx, unix
設定: 徹底したチェックを有効にする (optional)
サポートされているセンサー: Nessus Agent, Continuous Assessment, Nessus
リスク情報
ベクトル: CVSS2#AV:N/AC:L/Au:N/C:C/I:C/A:C
ベクトル: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
現状ベクトル: CVSS:3.0/E:U/RL:O/RC:C
脆弱性情報
CPE: cpe:/a:openssl:openssl
必要な KB アイテム: installed_sw/OpenSSL
エクスプロイトの容易さ: No known exploits are available
参照情報
CVE: CVE-2026-34180, CVE-2026-34181, CVE-2026-34182, CVE-2026-34183, CVE-2026-42764, CVE-2026-42766, CVE-2026-42767, CVE-2026-42768, CVE-2026-42769, CVE-2026-42770, CVE-2026-45445, CVE-2026-45446, CVE-2026-45447, CVE-2026-7383, CVE-2026-9076