
CVE-2020-1971 Script de scan automatique et d'exploitation à distance. Script de scan local automatique et d'application de correctifs.
5:03pm
Je développe actuellement les scripts et j'espère tout publier d'ici ce soir. Pour l'instant, ce dépôt ne contient que le code source corrigé d'OpenSLL 1.1.1i. Je travaille actuellement sur un script de correctif d'installation/mise à jour.
5:50pm
Le script d'installation Debian/Ubuntu Linux a été téléversé. Pour les instructions d'installation, voir « Installation sous Linux »
6:40pm
Le type X.509 GeneralName est un type générique permettant de représenter différents types de noms. L'un de ces types de noms est connu sous le nom d'EDIPartyName. OpenSSL fournit une fonction GENERAL_NAME_cmp qui compare différentes instances d'un GENERAL_NAME pour déterminer si elles sont égales ou non. Cette fonction se comporte de manière incorrecte lorsque les deux GENERAL_NAME contiennent un EDIPARTYNAME. Un déréférencement de pointeur NULL et un crash peuvent se produire, conduisant à une possible attaque par déni de service.
OpenSSL lui-même utilise la fonction GENERAL_NAME_cmp à deux fins
Comparer les noms de points de distribution CRL entre une CRL disponible et un point de distribution CRL intégré dans un certificat X509
Lors de la vérification que le signataire du jeton de réponse d'horodatage correspond au nom de l'autorité d'horodatage (exposé via les fonctions d'API TS_RESP_verify_response et TS_RESP_verify_token)
Si un attaquant peut contrôler les deux éléments comparés, il peut alors déclencher un crash. Par exemple, si l'attaquant parvient à tromper un client ou un serveur en lui faisant vérifier un certificat malveillant par rapport à une CRL malveillante, cela peut se produire.
Notez que certaines applications téléchargent automatiquement les CRL sur la base d'une URL intégrée dans un certificat. Cette vérification a lieu avant que les signatures du certificat et de la CRL ne soient vérifiées. Les outils s_server, s_client et verify d'OpenSSL prennent en charge l'option « -crl_download » qui implémente le téléchargement automatique des CRL, et il a été démontré que cette attaque fonctionne contre ces outils.
Notez qu'un bogue sans rapport fait que les versions affectées d'OpenSSL ne peuvent pas analyser ni construire des encodages corrects d'EDIPARTYNAME. Il est cependant possible de construire un EDIPARTYNAME malformé que l'analyseur d'OpenSSL acceptera, déclenchant ainsi cette attaque.
Toutes les versions d'OpenSSL 1.1.1 et 1.0.2 sont affectées par ce problème. Les autres versions d'OpenSSL ne sont plus prises en charge et n'ont pas été vérifiées. Corrigé dans OpenSSL 1.1.1i (affectées : 1.1.1-1.1.1h). Corrigé dans OpenSSL 1.0.2x (affectées : 1.0.2-1.0.2w).
sudo chmod +x Linux_Patched_Install_From_Source_Script
Exécutez :
sudo ./Linux_Patched_Install_From_Source_Script
L'OpenSSL « natif » utilise directement les API Windows au moment de l'exécution. Pour compiler un OpenSSL natif, vous pouvez utiliser :
le compilateur C Microsoft Visual C++ (MSVC) en ligne de commande
ou
le compilateur croisé MinGW exécuté sur l'environnement de développement de type GNU MSYS2 ou exécuté sur Linux ou Cygwin
L'OpenSSL « hébergé » repose sur une couche de compatibilité POSIX externe pour la compilation (à l'aide du shell, du compilateur et des outils GNU/Unix) et au moment de l'exécution. Pour cette option, vous pouvez utiliser Cygwin.
En plus des exigences et des instructions listées dans INSTALL.md, ces éléments sont également requis :
Perl. Strawberry Perl, disponible à partir de http://strawberryperl.com/ Veuillez lire NOTES.PERL pour plus d'informations, y compris concernant l'utilisation de CPAN. Une alternative est ActiveState Perl, https://www.activestate.com/ActivePerl pour laquelle vous devrez peut-être compiler explicitement le module Perl Win32/Console.pm via https://platform.activestate.com/ActiveState, puis le télécharger.
Compilateur Microsoft Visual C.
Netwide Assembler (NASM), disponible à partir de https://www.nasm.us Notez que NASM est le seul assembleur pris en charge.
Installez Perl
Installez NASM
Assurez-vous que Perl et NASM sont tous deux dans votre %PATH%
Utilisez l'invite de commandes développeur Visual Studio avec des privilèges d'administrateur, en choisissant l'une de ses variantes selon l'architecture visée. Ou exécutez « cmd » et lancez « vcvarsall.bat » avec l'une des options x86, x86_amd64, x86_arm, x86_arm64, amd64, amd64_x86, amd64_arm ou amd64_arm64. Cela configure les variables d'environnement nécessaires pour nmake.exe, cl.exe, etc. Voir également https://docs.microsoft.com/cpp/build/building-on-the-command-line
Depuis la racine du répertoire source d'OpenSSL, saisissez perl Configure VC-WIN32 if you want 32-bit OpenSSL or perl Configure VC-WIN64A if you want 64-bit OpenSSL or perl Configure to let Configure figure out the platform
nmake
nmake test
nmake install
Pour les instructions d'installation complètes, ou si quelque chose se passe mal à n'importe quelle étape, consultez le fichier INSTALL.md.
Les répertoires d'installation par défaut sont dérivés des variables d'environnement.
Pour VC-WIN32, les valeurs par défaut suivantes sont utilisées :
PREFIX: %ProgramFiles(86)%\OpenSSL
OPENSSLDIR: %CommonProgramFiles(86)%\SSL
Pour VC-WIN64, les valeurs par défaut suivantes sont utilisées :
PREFIX: %ProgramW6432%\OpenSSL
OPENSSLDIR: %CommonProgramW6432%\SSL
Si ces variables d'environnement n'existent pas (sur une installation Windows 32 bits pure, par exemple), ces solutions de repli sont utilisées :
PREFIX: %ProgramFiles%\OpenSSL
OPENSSLDIR: %CommonProgramFiles%\SSL
NOTEZ ÉGALEMENT que ces répertoires sont généralement protégés en écriture, même si votre compte appartient au groupe Administrateurs. Pour contourner ce problème, démarrez l'invite de commandes en cliquant dessus avec le bouton droit et en choisissant « Exécuter en tant qu'administrateur » avant d'exécuter 'nmake install'. L'autre solution consiste, bien sûr, à choisir un ensemble de répertoires différent en utilisant --prefix et --openssldir lors de la configuration.
Les cibles UWP ne prennent en charge que la compilation des bibliothèques statiques et dynamiques.
Vous devez définir le type de plateforme sur « uwp » et l'architecture cible via « vcvarsall.bat » avant de compiler. Par exemple, si vous voulez créer des compilations « arm64 », vous devez exécuter « vcvarsall.bat x86_arm64 uwp ».
Des références sont fournies pour la commodité du lecteur afin de l'aider à distinguer les vulnérabilités.
https://www.debian.org/security/2020/dsa-4807FREEBSD:FreeBSD-SA-20:33URL
https://security.FreeBSD.org/advisories/FreeBSD-SA-20:33.openssl.asc