
CVE-2020-1971 Auto-Scan- & Remote-Exploit-Skript. Auto-Local-Scan- & Patch-Skript.
CVE-2020-1971 Automatischer Scan & Remote-Exploit-Skript. Automatischer Lokaler Scan & Patch-Skript.
17:03
Ich entwickle derzeit die Skripte und hoffe, alles bis heute Abend fertigzustellen. Vorerst enthält dieses Repository nur den gepatchten OpenSSL 1.1.1i Quellcode. Derzeit arbeite ich an einem Installations-/Update-Patch-Skript.
17:50
Debian/Ubuntu Linux-Installationsskript hochgeladen. Installationsanweisungen siehe "Linux-Installation"
18:40
Der X.509 GeneralName-Typ ist ein generischer Typ zur Darstellung verschiedener Namensarten. Eine dieser Namensarten ist als EDIPartyName bekannt. OpenSSL bietet eine Funktion GENERAL_NAME_cmp, die verschiedene Instanzen eines GENERAL_NAME vergleicht, um festzustellen, ob sie gleich sind oder nicht. Diese Funktion verhält sich falsch, wenn beide GENERAL_NAMEs einen EDIPARTYNAME enthalten. Es kann zu einer NULL-Pointer-Dereferenzierung und einem Absturz kommen, was zu einem möglichen Denial-of-Service-Angriff führen kann.
OpenSSL selbst verwendet die GENERAL_NAME_cmp-Funktion für zwei Zwecke
Vergleich von CRL-Verteilungspunktnamen zwischen einer verfügbaren CRL und einem in einem X509-Zertifikat eingebetteten CRL-Verteilungspunkt
Bei der Überprüfung, ob der Signierer eines Zeitstempel-Antwort-Tokens mit dem Namen der Zeitstempel-Autorität übereinstimmt (verfügbar über die API-Funktionen TS_RESP_verify_response und TS_RESP_verify_token)
Wenn ein Angreifer beide verglichenen Elemente kontrollieren kann, könnte er einen Absturz auslösen. Wenn der Angreifer beispielsweise einen Client oder Server dazu verleiten kann, ein bösartiges Zertifikat gegen eine bösartige CRL zu prüfen, kann dies auftreten.
Beachten Sie, dass einige Anwendungen automatisch CRLs basierend auf einer in einem Zertifikat eingebetteten URL herunterladen. Diese Überprüfung erfolgt vor der Überprüfung der Signaturen auf dem Zertifikat und der CRL. Die OpenSSL-Tools s_server, s_client und verify unterstützen die Option '-crl_download', die automatisches CRL-Herunterladen implementiert, und dieser Angriff wurde nachweislich gegen diese Tools funktioniert.
Beachten Sie, dass ein nicht zusammenhängender Fehler bedeutet, dass betroffene Versionen von OpenSSL keine korrekten Kodierungen von EDIPARTYNAME parsen oder konstruieren können. Es ist jedoch möglich, einen fehlerhaften EDIPARTYNAME zu konstruieren, den der OpenSSL-Parser akzeptiert und so diesen Angriff auslöst.
Alle OpenSSL-Versionen 1.1.1 und 1.0.2 sind von diesem Problem betroffen. Andere OpenSSL-Versionen werden nicht mehr unterstützt und wurden nicht überprüft. Behoben in OpenSSL 1.1.1i (betroffen 1.1.1-1.1.1h). Behoben in OpenSSL 1.0.2x (betroffen 1.0.2-1.0.2w).
sudo chmod +x Linux_Patched_Install_From_Source_Script
Ausführen:
sudo ./Linux_Patched_Install_From_Source_Script
"Native" OpenSSL verwendet die Windows-APIs direkt zur Laufzeit. Um ein natives OpenSSL zu erstellen, können Sie entweder verwenden:
Microsoft Visual C++ (MSVC) C-Compiler in der Befehlszeile
oder
MinGW Cross-Compiler ausgeführt in der GNU-ähnlichen Entwicklungsumgebung MSYS2 oder ausgeführt unter Linux oder Cygwin
"Gehostetes" OpenSSL verlässt sich auf eine externe POSIX-Kompatibilitätsschicht für das Erstellen (mit GNU/Unix-Shell, Compiler und Tools) und zur Laufzeit. Für diese Option können Sie Cygwin verwenden.
Zusätzlich zu den Anforderungen und Anweisungen in INSTALL.md sind folgende erforderlich:
Perl. Strawberry Perl, verfügbar von http://strawberryperl.com/ Bitte lesen Sie NOTES.PERL für weitere Informationen, einschließlich der Verwendung von CPAN. Eine Alternative ist ActiveState Perl, https://www.activestate.com/ActivePerl für das Sie möglicherweise explizit das Perl-Modul Win32/Console.pm erstellen müssen über https://platform.activestate.com/ActiveState und es dann herunterladen.
Microsoft Visual C-Compiler.
Netwide Assembler (NASM), verfügbar von https://www.nasm.us Beachten Sie, dass NASM der einzige unterstützte Assembler ist.
Perl installieren
NASM installieren
Stellen Sie sicher, dass sowohl Perl als auch NASM in Ihrer %PATH% sind
Verwenden Sie die Visual Studio Developer-Eingabeaufforderung mit Administratorrechten und wählen Sie eine der Varianten je nach beabsichtigter Architektur. Oder führen Sie "cmd" aus und führen Sie "vcvarsall.bat" mit einer der Optionen x86, x86_amd64, x86_arm, x86_arm64, amd64, amd64_x86, amd64_arm oder amd64_arm64 aus. Dies richtet die benötigten Umgebungsvariablen für nmake.exe, cl.exe usw. ein. Siehe auch https://docs.microsoft.com/cpp/build/building-on-the-command-line
Führen Sie vom Stammverzeichnis des OpenSSL-Quellverzeichnisses aus perl Configure VC-WIN32 wenn Sie 32-Bit OpenSSL möchten oder perl Configure VC-WIN64A wenn Sie 64-Bit OpenSSL möchten oder perl Configure um Configure die Plattform ermitteln zu lassen
nmake
nmake test
nmake install
Die vollständigen Installationsanweisungen finden Sie, falls in irgendeiner Phase etwas schiefgeht, in der Datei INSTALL.md.
Die Standard-Installationsverzeichnisse leiten sich aus Umgebungsvariablen ab.
Für VC-WIN32 werden folgende Standardwerte verwendet:
PREFIX: %ProgramFiles(86)%\OpenSSL
OPENSSLDIR: %CommonProgramFiles(86)%\SSL
Für VC-WIN64 werden folgende Standardwerte verwendet:
PREFIX: %ProgramW6432%\OpenSSL
OPENSSLDIR: %CommonProgramW6432%\SSL
Sollten diese Umgebungsvariablen nicht existieren (z.B. bei einer reinen Win32-Installation), werden diese Fallbacks verwendet:
PREFIX: %ProgramFiles%\OpenSSL
OPENSSLDIR: %CommonProgramFiles%\SSL
BEACHTEN SIE AUCH, dass diese Verzeichnisse normalerweise schreibgeschützt sind, selbst wenn Ihr Konto zur Administratorgruppe gehört. Um dies zu umgehen, starten Sie die Eingabeaufforderung, indem Sie mit der rechten Maustaste darauf klicken und "Als Administrator ausführen" wählen, bevor Sie 'nmake install' ausführen. Die andere Lösung ist natürlich, ein anderes Verzeichnis mit --prefix und --openssldir bei der Konfiguration zu wählen.
UWP-Ziele unterstützen nur das Erstellen der statischen und dynamischen Bibliotheken.
Sie sollten den Plattformtyp auf "uwp" und die Zielarchitektur über "vcvarsall.bat" definieren, bevor Sie kompilieren. Wenn Sie zum Beispiel "arm64"-Builds erstellen möchten, sollten Sie "vcvarsall.bat x86_arm64 uwp" ausführen.
Referenzen werden zur Unterscheidung von Schwachstellen zur Verfügung gestellt.
https://www.debian.org/security/2020/dsa-4807FREEBSD:FreeBSD-SA-20:33URL
https://security.FreeBSD.org/advisories/FreeBSD-SA-20:33.openssl.asc