CVE-2020-1971 自動スキャン&リモートエクスプロイトスクリプト。自動ローカルスキャン&パッチスクリプト。
5:03pm
現在、スクリプトを開発中で、今夜までにすべてをリリースしたいと考えています。現時点では、このリポジトリにはパッチ適用済みの OpenSSL 1.1.1i ソースのみが含まれています。現在、インストール/アップデートパッチスクリプトを作成中です。
5:50pm
Debian/Ubuntu Linux インストールスクリプトをアップロードしました。インストール手順は「Linux インストール」を参照してください。
6:40pm
X.509 GeneralName 型は、異なるタイプの名前を表現するための汎用型です。その名前タイプの1つは EDIPartyName として知られています。OpenSSL は GENERAL_NAME_cmp 関数を提供しており、これは GENERAL_NAME の異なるインスタンスを比較して等しいかどうかを確認します。この関数は、両方の GENERAL_NAME に EDIPARTYNAME が含まれている場合、誤った動作をします。NULL ポインタの逆参照とクラッシュが発生する可能性があり、サービス拒否攻撃につながる可能性があります。
OpenSSL 自体は GENERAL_NAME_cmp 関数を2つの目的で使用します
利用可能な CRL と X509 証明書に埋め込まれた CRL 配布ポイント名との比較
タイムスタンプ応答トークン署名者がタイムスタンプ機関名と一致することを確認する場合(API 関数 TS_RESP_verify_response および TS_RESP_verify_token を介して公開)
攻撃者が比較される両方のアイテムを制御できる場合、その攻撃者はクラッシュを引き起こす可能性があります。例えば、攻撃者がクライアントまたはサーバーを騙して、悪意のある証明書を悪意のある CRL と照合するように仕向けた場合、これが発生する可能性があります。
一部のアプリケーションは、証明書に埋め込まれた URL に基づいて CRL を自動的にダウンロードすることに注意してください。このチェックは、証明書と CRL の署名が検証される前に行われます。OpenSSL の s_server、s_client、および verify ツールは、自動 CRL ダウンロードを実装する "-crl_download" オプションをサポートしており、この攻撃がこれらのツールに対して機能することが実証されています。
関連のないバグにより、影響を受けるバージョンの 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
"Native" OpenSSL は実行時に Windows API を直接使用します。 ネイティブ OpenSSL をビルドするには、次のいずれかを使用できます:
Microsoft Visual C++ (MSVC) C コンパイラをコマンドラインで使用
または
MinGW クロスコンパイラ GNU ライクな開発環境 MSYS2 上で実行 または Linux または Cygwin 上で実行
"Hosted" OpenSSL は、ビルド時(GNU/Unix シェル、コンパイラ、ツールを使用)および実行時に外部の POSIX 互換レイヤーに依存します。 このオプションでは Cygwin を使用できます。
INSTALL.md に記載されている要件と手順に加えて、以下も必要です:
Perl。 Strawberry Perl、http://strawberryperl.com/ から入手可能 詳細は NOTES.PERL をお読みください。CPAN の使用も含まれます。 代替として ActiveState Perl、https://www.activestate.com/ActivePerl の場合、Perl モジュール Win32/Console.pm を明示的にビルドする必要がある場合があります。 https://platform.activestate.com/ActiveState 経由でダウンロードしてください。
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 ターゲットは静的および動的ライブラリのビルドのみをサポートします。
コンパイル前にプラットフォームタイプを "uwp" に、ターゲットアーキテクチャを "vcvarsall.bat" で定義する必要があります。例えば、"arm64" ビルドが必要な場合、 "vcvarsall.bat x86_arm64 uwp" を実行してください。
参考文献は読者の便宜のために提供されており、脆弱性の識別に役立ちます。