
SpookySSL CVE-2022-3602 SSLv3 スキャナー(Windows、Linux、macOS 向け)
SpookySSL CVE-2022-3602 SSLv3 スキャナー(Windows、Linux、macOS対応)
まず、問題はバイトサイズを決定する際に発生します。バイトサイズを決定するとき、お気づきかもしれませんが、NULL、つまり空/ゼロの値が定義されておらず、バイト長がゼロとして設定される可能性があります。下のコマンドで、xn-- で始まる部分は、異なるアルファベット(例えば中国語からpunycodeとして変換された)で書かれたドメイン名をラテンアルファベットに変換することを直接意味します。ifループ内で、memcpyコマンドはdelta + 1の値のスタック領域をメモリ上に割り当て、outptrの値をこの領域に書き込みます。NULL値が入力されると、1バイトの領域が確保されるため、2つのスペースコードがバッファオーバーフローを引き起こします。
詳細情報: https://github.com/openssl/openssl/commit/c42165b5706e42f67ef8ef4c351a9a4c5d21639a
まず、リモートコード実行(RCE)について知っておく必要があります。
リモートコード実行(RCE)攻撃により、攻撃者はコンピューター上でリモートから悪意のあるコードを実行できます。RCE脆弱性の影響は、マルウェアの実行から、攻撃者が侵害されたマシンの完全な制御を取得することまでさまざまです。
OpenSSLのCVE-2022-3602脆弱性は、X.509証明書のチェック中にPunycodeが誤って処理されるために発生します。
Punycodeは、限られたASCII文字サブセットを使用したUnicode文字列の表現です。通常、非ASCII文字(日本語の文字など)を含むドメイン名をエンコードするために使用されます。Punycodeでエンコードされた文字列は
「xn--」で始まり、その後に英文字と数字が続きます。
脆弱な関数ossl_punycode_decodeは、Punycode文字列のデコード中にバッファオーバーフローを引き起こす可能性があります。これは、OpenSSLが証明書チェーンを処理するときに呼び出されます。脆弱性を悪用するには、以下が必要です:
1) 悪意のあるPunycode文字列を含む「nameConstraints」フィールドを持つCA(認証局)証明書または中間証明書を作成する。Punycode文字列には、「xn--」を除いて少なくとも512バイトが含まれている必要があります。
2) SmtpUTF8Mailbox文字列を指定するSubjectAlternateName(SAN)otherNameフィールドを含むリーフ証明書を作成する。
サービス拒否(DoS)脆弱性 サービス拒否(DoS)攻撃は、マシンまたはネットワークをシャットダウンし、意図したユーザーがアクセスできないようにすることを目的とした攻撃です。DoS攻撃は、ターゲットにトラフィックを送り込むか、クラッシュを引き起こす情報を送信することでこれを達成します。 CVE-2022-3602脆弱性には、他のバッファオーバーフローの脆弱性と同様に、サービス拒否の脆弱性もあります。バッファオーバーフローは、脆弱な関数ossl_a2ulabelで発生します。この関数が、ドット文字(「.」)が後に続くPunycode部分に遭遇すると、サイズをオーバーフローしても出力バッファに「.」も追加します。 このようにして、攻撃者は任意の数の「.」文字で出力バッファをオーバーフローさせ、スタックの破損を引き起こす可能性があります。この脆弱性はリモートコード実行には使用できず、サービス拒否のみに使用できます。 ソース:
