新たに公開されたOpenSSLの脆弱性は、暗号化操作中にアプリケーションメモリから機密データが露出される可能性があることが判明した後、サイバーセキュリティコミュニティ全体で懸念が高まっています。
CVE-2026-31790として追跡されているこの欠陥は、RSA鍵カプセル化メカニズム(KEM)に影響を与え、特に暗号化鍵を安全に交換するために使用されるRSASVEカプセル化プロセスに影響を及ぼします。
OpenSSLは2026年4月7日に勧告を公開し、ユーザーにできるだけ早くパッチを適用するよう警告しました。
問題の根本原因は、RSA暗号化中の失敗をOpenSSLがどのように処理するかに由来しています。アプリケーションがRSASVEを使用して共有秘密を生成する場合、RSA_public_encrypt()関数に依存して暗号化を実行し、ステータスコードを返すことになります。
正常な条件下では、この関数は成功時に書き込まれたバイト数を返し、エラー発生時に-1を返します。
しかし、影響を受けたバージョンでは不正な検証ロジックのため、コードは戻り値がゼロ以外であるかどうかのみをチェックします。
これにより、重大な欠陥が発生します:失敗を示す-1の戻り値が、正常な操作として誤って扱われます。
その結果、暗号化が失敗したにもかかわらず、アプリケーションはカプセル化プロセスを続行します。出力長を設定し、暗号文バッファを有効な暗号化データを含むものとして処理します。
この不正なロジックは、攻撃者が奇形または無効なRSA公開鍵を提供することで脆弱性を悪用するための道を開きます。
アプリケーションが事前に鍵を適切に検証しない場合、失敗した暗号化の試みは成功として誤認識されます。
そのような場合、システムは暗号文バッファから初期化されていないメモリを攻撃者に返す可能性があります。
この「古い」メモリには以前の操作から残された機密データが含まれている可能性があり、暗号化資料またはアプリケーションデータが含まれます。
たとえば、脆弱なサーバーと相互作用する悪意のあるクライアントは、細工された公開鍵を繰り返し送信し、応答としてメモリの断片を受け取る可能性があり、時間経過とともにデータ漏洩につながる可能性があります。
この脆弱性はOpenSSL 3.xバージョンに影響を与えますが、1.0.2および1.1.1などの古いブランチは影響を受けません。セキュリティアップデートが問題に対処するためにリリースされています。
パッチをすぐに適用できない組織は、コードレベルのセーフガードを通じてリスクを軽減できます。開発者は、カプセル化を実行する前にRSA公開鍵を検証することが推奨されています。
EVP_PKEY_encapsulate()の前にEVP_PKEY_public_check()またはEVP_PKEY_public_check_quick()を呼び出すことで、無効な鍵が早期に拒否され、不正な実行パスが防止され、潜在的なメモリリークがブロックされることが保証されます。
翻訳元: https://cyberpress.org/multiple-openssl-flaws/