
CVE-2020-1971 Script di scansione automatica ed exploit remoto. Script di scansione automatica locale e patch.
CVE-2020-1971 Script di scansione automatica e sfruttamento remoto. Script di scansione locale automatica e patch.
5:03pm
Sto attualmente sviluppando gli script e spero di avere tutto pronto per stasera. Per ora questo repository contiene solo il codice sorgente corretto di OpenSLL 1.1.1i. Attualmente sto lavorando a uno script di installazione/aggiornamento della patch.
5:50pm
Script di installazione per Debian/Ubuntu Linux caricato. Per le istruzioni di installazione consultare "Installazione Linux"
6:40pm
Il tipo X.509 GeneralName è un tipo generico per rappresentare diversi tipi di nomi. Uno di questi tipi di nome è conosciuto come EDIPartyName. OpenSSL fornisce una funzione GENERAL_NAME_cmp che confronta diverse istanze di GENERAL_NAME per vedere se sono uguali o meno. Questa funzione si comporta in modo errato quando entrambi i GENERAL_NAME contengono un EDIPARTYNAME. Potrebbero verificarsi un dereferenziamento di puntatore NULL e un crash, portando a un possibile attacco denial of service.
OpenSSL stesso utilizza la funzione GENERAL_NAME_cmp per due scopi
Confrontare i nomi dei punti di distribuzione CRL tra una CRL disponibile e un punto di distribuzione CRL incorporato in un certificato X509
Quando si verifica che il firmatario di un token di risposta timestamp corrisponda al nome dell'autorità timestamp (esposto tramite le funzioni API TS_RESP_verify_response e TS_RESP_verify_token)
Se un attaccante può controllare entrambi gli elementi confrontati, allora potrebbe innescare un crash. Ad esempio, se l'attaccante riesce a indurre un client o un server a controllare un certificato malevolo contro una CRL malevola, allora questo potrebbe verificarsi.
Si noti che alcune applicazioni scaricano automaticamente le CRL basate su un URL incorporato in un certificato. Questo controllo avviene prima che le firme sul certificato e sulla CRL vengano verificate. Gli strumenti s_server, s_client e verify di OpenSSL supportano l'opzione "-crl_download" che implementa lo scaricamento automatico delle CRL e questo attacco è stato dimostrato funzionare contro questi strumenti.
Si noti che un bug non correlato significa che le versioni affette di OpenSSL non possono analizzare o costruire codifiche corrette di EDIPARTYNAME. Tuttavia è possibile costruire un EDIPARTYNAME malformato che il parser di OpenSSL accetterà e quindi innescare questo attacco.
Tutte le versioni di OpenSSL 1.1.1 e 1.0.2 sono affette da questo problema. Altre release di OpenSSL non sono più supportate e non sono state controllate. Risolto in OpenSSL 1.1.1i (Affette 1.1.1-1.1.1h). Risolto in OpenSSL 1.0.2x (Affette 1.0.2-1.0.2w).
sudo chmod +x Linux_Patched_Install_From_Source_Script
Esegui:
sudo ./Linux_Patched_Install_From_Source_Script
"Native" OpenSSL utilizza direttamente le API di Windows in fase di esecuzione. Per costruire un OpenSSL nativo puoi usare:
Microsoft Visual C++ (MSVC) C compiler on the command line
or
MinGW cross compiler run on the GNU-like development environment MSYS2 or run on Linux or Cygwin
"Hosted" OpenSSL si basa su un livello di compatibilità POSIX esterno per la costruzione (utilizzando shell, compilatore e strumenti GNU/Unix) e in fase di esecuzione. Per questa opzione puoi usare Cygwin.
Oltre ai requisiti e alle istruzioni elencati in INSTALL.md, sono necessari anche:
Perl. Strawberry Perl, disponibile su http://strawberryperl.com/ Si prega di leggere NOTES.PERL per maggiori informazioni, incluso l'uso di CPAN. Un'alternativa è ActiveState Perl, https://www.activestate.com/ActivePerl per cui potrebbe essere necessario costruire esplicitamente il modulo Perl Win32/Console.pm tramite https://platform.activestate.com/ActiveState e poi scaricarlo.
Compilatore Microsoft Visual C.
Netwide Assembler (NASM), disponibile su https://www.nasm.us Nota che NASM è l'unico assembler supportato.
Installa Perl
Installa NASM
Assicurati che Perl e NASM siano nel tuo %PATH%
Usa il Prompt dei comandi per sviluppatori di Visual Studio con privilegi amministrativi, scegliendo una delle sue varianti in base all'architettura desiderata. Oppure esegui "cmd" e "vcvarsall.bat" con una delle opzioni x86, x86_amd64, x86_arm, x86_arm64, amd64, amd64_x86, amd64_arm, o amd64_arm64. Questo imposta le variabili d'ambiente necessarie per nmake.exe, cl.exe, ecc. Vedi anche https://docs.microsoft.com/cpp/build/building-on-the-command-line
Dalla radice della directory sorgente di OpenSSL esegui perl Configure VC-WIN32 se vuoi OpenSSL a 32 bit o perl Configure VC-WIN64A se vuoi OpenSSL a 64 bit o perl Configure per lasciare che Configure determini la piattaforma
nmake
nmake test
nmake install
Per le istruzioni complete di installazione, o se qualcosa va storto in qualsiasi fase, consulta il file INSTALL.md.
Le directory di installazione predefinite derivano dalle variabili d'ambiente.
Per VC-WIN32, vengono utilizzati i seguenti valori predefiniti:
PREFIX: %ProgramFiles(86)%\OpenSSL
OPENSSLDIR: %CommonProgramFiles(86)%\SSL
Per VC-WIN64, vengono utilizzati i seguenti valori predefiniti:
PREFIX: %ProgramW6432%\OpenSSL
OPENSSLDIR: %CommonProgramW6432%\SSL
Se queste variabili d'ambiente non esistono (ad esempio in un'installazione pura Win32), vengono utilizzati questi fallback:
PREFIX: %ProgramFiles%\OpenSSL
OPENSSLDIR: %CommonProgramFiles%\SSL
NOTA ANCHE che queste directory sono solitamente protette in scrittura, anche se il tuo account è nel gruppo Administrators. Per ovviare a ciò, avvia il prompt dei comandi facendo clic destro e scegliendo "Esegui come amministratore" prima di eseguire 'nmake install'. L'altra soluzione è, ovviamente, scegliere un insieme diverso di directory usando --prefix e --openssldir durante la configurazione.
I target UWP supportano solo la creazione delle librerie statiche e dinamiche.
Dovresti definire il tipo di piattaforma come "uwp" e l'architettura target tramite "vcvarsall.bat" prima di compilare. Ad esempio, se vuoi creare build "arm64", dovresti eseguire "vcvarsall.bat x86_arm64 uwp".
I riferimenti sono forniti per comodità del lettore per aiutare a distinguere tra le vulnerabilità.
https://www.debian.org/security/2020/dsa-4807FREEBSD:FreeBSD-SA-20:33URL
https://security.FreeBSD.org/advisories/FreeBSD-SA-20:33.openssl.asc