CVE-2020-1971 自動スキャン & リモートエクスプロイトスクリプト。自動ローカルスキャン&パッチスクリプト。
午後5:03
現在スクリプトを開発中で、今夜までにはすべてを公開したいと考えています。現時点では、このリポジトリにはパッチを適用した OpenSLL 1.1.1i のソースのみが含まれています。現在、インストール/更新パッチスクリプトを作成中です。
午後5:50
Debian/Ubuntu Linux インストールスクリプトをアップロードしました。インストール手順は「Linux インストール」を参照してください。
午後6:40
X.509 GeneralName 型は、様々な名前の種類を表すための汎用的な型です。その名前の種類の一つに EDIPartyName があります。OpenSSL は GENERAL_NAME の異なるインスタンスを比較して等しいかどうかを判断する関数 GENERAL_NAME_cmp を提供しています。この関数は、両方の GENERAL_NAME に EDIPARTYNAME が含まれている場合、誤った動作をします。NULL ポインタ参照やクラッシュが発生し、サービス拒否攻撃につながる可能性があります。
OpenSSL 自体は、GENERAL_NAME_cmp 関数を2つの目的で使用しています
利用可能な CRL と X509 証明書に埋め込まれた CRL 配布ポイントとの間で、CRL 配布ポイント名を比較する。
タイムスタンプ応答トークンの署名者がタイムスタンプ認証局名と一致することを検証する際 (API 関数 TS_RESP_verify_response および TS_RESP_verify_token を介して公開)。
攻撃者が比較される両方のアイテムを制御できる場合、その攻撃者はクラッシュを引き起こす可能性があります。例えば、攻撃者がクライアントまたはサーバーを騙して、悪意のある証明書を悪意のある CRL と照合させた場合、これが発生する可能性があります。
一部のアプリケーションは、証明書に埋め込まれた URL に基づいて CRL を自動的にダウンロードすることに注意してください。このチェックは、証明書と CRL の署名が検証される前に行われます。OpenSSL の s_server、s_client、verify ツールは "-crl_download" オプションをサポートしており、自動 CRL ダウンロードを実装しており、この攻撃がそれらのツールに対して機能することが実証されています。
無関係なバグにより、影響を受けるバージョンの OpenSSL は EDIPARTYNAME の正しいエンコーディングを解析または構築できないことに注意してください。ただし、OpenSSL のパーサーが受け入れる不正な EDIPARTYNAME を構築し、それによってこの攻撃を引き起こすことは可能です。
OpenSSL 1.1.1 および 1.0.2 のすべてのバージョンがこの問題の影響を受けます。その他の OpenSSL リリースはサポートが終了しており、チェックされていません。OpenSSL 1.1.1i で修正されました (影響を受けるバージョン: 1.1.1-1.1.1h)。OpenSSL 1.0.2x で修正されました (影響を受けるバージョン: 1.0.2-1.0.2w)。
sudo chmod +x Linux_Patched_Install_From_Source_Script
実行:
sudo ./Linux_Patched_Install_From_Source_Script
「ネイティブ」OpenSSL は、実行時に Windows API を直接使用します。 ネイティブ OpenSSL をビルドするには、次のいずれかを使用できます。
コマンドライン上の Microsoft Visual C++ (MSVC) C コンパイラ
または
MinGW クロスコンパイラ GNU に似た開発環境 MSYS2 上で実行 または Linux または Cygwin 上で実行
「ホスト型」OpenSSL は、ビルド(GNU/Unix シェル、コンパイラ、ツールを使用)および実行時に、外部の POSIX 互換レイヤーに依存します。 このオプションでは、Cygwin を使用できます。
INSTALL.md に記載されている要件と手順に加えて、以下も必要です。
Perl。 Strawberry Perl (http://strawberryperl.com/ から入手可能) 詳細については、NOTES.PERL をお読みください。CPAN の使用も含まれます。 代替案として ActiveState Perl (https://www.activestate.com/ActivePerl) があります。 その場合、https://platform.activestate.com/ActiveState 経由で Perl モジュール Win32/Console.pm を明示的にビルドし、ダウンロードする必要がある場合があります。
Microsoft Visual C コンパイラ。
Netwide Assembler (NASM) (https://www.nasm.us から入手可能) 注意: NASM が唯一サポートされているアセンブラです。
Perl をインストールします。
NASM をインストールします。
Perl と NASM の両方が %PATH% に含まれていることを確認します。
管理者権限で Visual Studio Developer Command Prompt を使用し、対象のアーキテクチャに応じたバリアントを選択します。 または "cmd" を実行し、"vcvarsall.bat" を x86、x86_amd64、x86_arm、x86_arm64、amd64、amd64_x86、amd64_arm、amd64_arm64 のいずれかのオプションで実行します。 これにより、nmake.exe、cl.exe などに必要な環境変数が設定されます。 以下も参照してください。 https://docs.microsoft.com/cpp/build/building-on-the-command-line
OpenSSL ソースディレクトリのルートから次のコマンドを入力します。 perl Configure VC-WIN32 (32ビット OpenSSL の場合) または perl Configure VC-WIN64A (64ビット OpenSSL の場合) または perl Configure (Configure にプラットフォームを自動判別させる場合)
nmake
nmake test
nmake install
完全なインストール手順、またはいずれかの段階で問題が発生した場合は、INSTALL.md ファイルを確認してください。
デフォルトのインストールディレクトリは、環境変数から導き出されます。
VC-WIN32 の場合、以下のデフォルトが使用されます。
PREFIX: %ProgramFiles(86)%\OpenSSL
OPENSSLDIR: %CommonProgramFiles(86)%\SSL
VC-WIN64 の場合、以下のデフォルトが使用されます。
PREFIX: %ProgramW6432%\OpenSSL
OPENSSLDIR: %CommonProgramW6432%\SSL
これらの環境変数が存在しない場合(純粋な Win32 インストールなど)、以下のフォールバックが使用されます。
PREFIX: %ProgramFiles%\OpenSSL
OPENSSLDIR: %CommonProgramFiles%\SSL
また、これらのディレクトリは通常、アカウントが Administrators グループに属している場合でも書き込み保護されています。これを回避するには、'nmake install' を実行する前に、コマンドプロンプトを右クリックして「管理者として実行」を選択して起動してください。もう1つの解決策は、設定時に --prefix および --openssldir を使用して別のディレクトリセットを選択することです。
UWP ターゲットは、静的ライブラリおよび動的ライブラリのビルドのみをサポートしています。
コンパイル前に、"vcvarsall.bat" を使用してプラットフォームタイプを "uwp" に、ターゲットアーキテクチャを指定する必要があります。例えば、"arm64" ビルドを構築する場合は、"vcvarsall.bat x86_arm64 uwp" を実行する必要があります。
参考文献は、読者の便宜のために提供されており、脆弱性を区別するのに役立ちます。