🚨 🔐 Bug critique dans OpenSSL

· 6 minutes de lecture
🚨 🔐 Bug critique dans OpenSSL

Plusieurs jours après l'annonce à travers la mailing list d'OpenSSL d'un bug critique, nous en savant un peu plus.

OpenSSL est une boîte à outils de chiffrement comportant deux bibliothèques, libcrypto et libssl, fournissant respectivement une implémentation des algorithmes cryptographiques et du protocole de communication SSL/TLS, ainsi qu'une interface en ligne de commande, openssl. Développée en C, OpenSSL est disponible sur les principaux systèmes d'exploitation et dispose de nombreux wrappers ce qui la rend utilisable dans une grande variété de langages informatiques. En 2014, deux tiers des sites Web l'utilisaient.

Source : Wikipedia

Quel est le problème  ?

Annoncé Mardi 25 Octobre dans la mailing list une vulnérabilité critique a été détectée dans le code :

L'annonce dans la mailing list 

L'équipe du projet OpenSSL a indiqué que la vulnérabilité est "critique" et que les versions concernées nécessiteront un correctif vers une nouvelle version 3.0.7 ou supérieure.

C'est la deuxième fois qu'OpenSSL a une vulnérabilité étiquetée "critique" (la première datant de septembre 2016).

La bonne nouvelle c'est que ce problème de sécurité n'affecte que la version 3.0 et supérieure d'OpenSSL, ce qui limite la portée des applications concernées. La version 3.0 est sortie il y a un peu plus d'un an, le 7 septembre 2021, et de nombreuses applications utilisent encore des versions plus anciennes qui ne contiennent pas cette nouvelle faille.

OpenSSL a publié deux Common Vulnerabilities and Exposures ou CVE (un référentiel des informations publiques relatives aux vulnérabilités de sécurité) sous le numéro CVE-2022-3786 et CVE-2022-3602 corrigeant  buffer overflows dans la fonction de décodage punycode.

A buffer overrun can be triggered in X.509 certificate verification,
specifically in name constraint checking. Note that this occurs after
certificate chain signature verification and requires either a CA to
have signed the malicious certificate or for the application to continue
certificate verification despite failure to construct a path to a trusted
issuer.
In a TLS client, this can be triggered by connecting to a malicious
server.  In a TLS server, this can be triggered if the server requests
client authentication and a malicious client connects.
An attacker can craft a malicious email address to overflow
an arbitrary number of bytes containing the .  character (decimal 46)
on the stack.  This buffer overflow could result in a crash (causing a
denial of service).
([CVE-2022-3786])
An attacker can craft a malicious email address to overflow four
attacker-controlled bytes on the stack.  This buffer overflow could
result in a crash (causing a denial of service) or potentially remote code
execution depending on stack layout for any given platform/compiler.
([CVE-2022-3602])
Paul Dale

Les solutions vulnérables connues à ce jour

AlmaLinux OS Foundation AlmaLinux 9 3.0.1 https://repo.almalinux.org/almalinux/9/BaseOS/x86_64/os/Packages/openssl-3.0.1-41.el9_0.x86_64.rpm
Alpine Alpine Linux Edge 3.0.5 https://pkgs.alpinelinux.org/packages?name=openssl&branch=edge&repo=&arch=&maintainer=
Amazon Amazon Linux 2022 3.0.5-1 https://docs.aws.amazon.com/linux/al2022/ug/compare-al2-to-AL2022.html#openssl3
Broadcom Symantec Endpoint Protection 14.3 RU5 3.0.2 https://community.broadcom.com/symantecenterprise/discussion/which-is-the-openssl-version-in-sepm-143-ru5
Canonical Ubuntu jammy (22.04 LTS) 3.0.2 https://packages.ubuntu.com/search?keywords=openssl
Canonical Ubuntu kinetic (22.10) 3.0.5 https://packages.ubuntu.com/search?keywords=openssl
Canonical Ubuntu Squid 3.0.5 5 https://hub.docker.com/r/ubuntu/squid/tags
CentOS CentOS >= 9 3.x https://www.redhat.com/en/blog/experience-bringing-openssl-30-rhel-and-fedora
Debian Debian 12 "Bookworm" 3.x https://packages.debian.org/bookworm/openssl
Dockerhub centos latest 3.x https://dso.docker.com/cve/DSA-2022-0001
Dockerhub clojure latest 3.0.2 https://dso.docker.com/cve/DSA-2022-0001
Dockerhub ghost latest 3.x https://dso.docker.com/cve/DSA-2022-0001
Dockerhub hipache latest 3.x https://dso.docker.com/cve/DSA-2022-0001
Dockerhub lightstreamer latest 3.0.2 https://dso.docker.com/cve/DSA-2022-0001
Dockerhub mariadb latest 3.0.2 https://dso.docker.com/cve/DSA-2022-0001
Dockerhub maven latest 3.0.2 https://dso.docker.com/cve/DSA-2022-0001
Dockerhub node latest 3.x https://dso.docker.com/cve/DSA-2022-0001
Dockerhub orientdb latest 3.0.2 https://dso.docker.com/cve/DSA-2022-0001
Dockerhub photon latest 3.0.6 https://dso.docker.com/cve/DSA-2022-0001
Dockerhub r-base latest 3.0.4 https://dso.docker.com/cve/DSA-2022-0001
Dockerhub ros latest 3.0.2 https://dso.docker.com/cve/DSA-2022-0001
Dockerhub tomcat latest 3.0.2 https://dso.docker.com/cve/DSA-2022-0001
Dockerhub ubuntu-debootstrap latest 3.x https://dso.docker.com/cve/DSA-2022-0001
Dockerhub ubuntu-upstart latest 3.x https://dso.docker.com/cve/DSA-2022-0001
Dockerhub ubuntu latest 3.0.2 https://dso.docker.com/cve/DSA-2022-0001
Fedora Linux 36 3.0.2 https://packages.fedoraproject.org/pkgs/openssl/openssl/
Fedora Linux 37 3.0.5 https://packages.fedoraproject.org/pkgs/openssl/openssl/
Fedora Linux Rawhide 3.0.5 https://packages.fedoraproject.org/pkgs/openssl/openssl/
Linux Mint Linux Mint 21 Vanessa 3.0.2 http://packages.linuxmint.com/search.php?release=vanessa&section=any&keyword=openssl
Mageia Mageia cauldron 3.0.5 https://distrib-coffee.ipsl.jussieu.fr/pub/linux/Mageia/distrib/cauldron/x86_64/media/core/release/openssl-3.0.5-1.mga9.x86_64.rpm
NixOS NixOS unstable 3.0.5 https://search.nixos.org/packages?channel=unstable&query=openssl&show=openssl
Offensive Security Kali 2022.3 3.0.5 https://pkg.kali.org/pkg/openssl
OpenMandriva OpenMandriva 4.3 3.0.3 http://abf-downloads.openmandriva.org/4.3/repository/x86_64/main/updates/openssl-3.0.3-1-omv4003.x86_64.rpm
OpenMandriva OpenMandriva 4.2 3.0.0 http://abf-downloads.openmandriva.org/4.2/repository/x86_64/main/updates/openssl-3.0.0-0.alpha17.1-omv4002.x86_64.rpm
OpenMandriva OpenMandriva rolling 3.0.6 http://abf-downloads.openmandriva.org/rolling/repository/x86_64/main/release/openssl-3.0.6-1-omv4050.x86_64.rpm
OpenMandriva OpenMandriva cooker 3.0.6 http://abf-downloads.openmandriva.org/cooker/repository/x86_64/main/release/openssl-3.0.6-3-omv4090.x86_64.rpm
OpenSUSE OpenSUSE tumbleweed 3.0.5 https://software.opensuse.org/package/openssl-3
Red Hat Enterprise Linux >= 9.0 3.x https://access.redhat.com/security/vulnerabilities/RHSB-2022-004
Red Hat Universal Base Images >= 9.0 3.x https://access.redhat.com/security/vulnerabilities/RHSB-2022-004
Rocky Enterprise Software Foundation Rocky Linux 9.0 (Blue Onyx) 3.0.1 https://dl.rockylinux.org/pub/rocky/9/BaseOS/x86_64/os/Packages/o/openssl-3.0.1-41.el9_0.x86_64.rpm
Tenable Nessus 10.3.0 3.0.5 https://docs.tenable.com/releasenotes/Content/nessus/nessus1030.htm
Tenable Nessus Agent 10.2 3.0.5 https://docs.tenable.com/releasenotes/Content/nessusagent/agent1020.htm
Tenable Nessus Network Monitor 6.1.0 3.0.5 https://docs.tenable.com/releasenotes/Content/nnm/nnm610.htm?Highlight=openssl
VMware VMware Tools 12.0.0 3.0.0 https://docs.vmware.com/en/VMware-Tools/12.0/rn/VMware-Tools-1200-Release-Notes.html
VMware VMware Tools 12.1.0 3.0.3 https://docs.vmware.com/en/VMware-Tools/12.0/rn/VMware-Tools-1200-Release-Notes.html
VMware Harbor <=2.6.1 3.0.0 https://github.com/goharbor/harbor/issues/17724

Source : NCSC-NL

🐳 Mais aussi de plus de 1000 images de containers Docker sont impactées

Règle YARA

YARA est le nom d'un outil  utilisé dans la recherche et la détection de logiciels malveillants. Il fournit une approche basée sur des règles pour créer des descriptions de familles de logiciels malveillants basées sur des modèles textuels ou binaires.

rule openssl_version {
	strings:
		$re1 = /OpenSSL\s3\.[0-6]{1}\.[0-9]{1}[a-z]{,1}/
	
	condition:
		$re1
}

Détection sous Linux de processus utilisant OpenSSL 3.x

sudo lsof -n | grep libssl.so.3 

Script linux pour scanner votre système

J'ai développé un script "quick & dirty" pour scanner vos systèmes linux et Windows utilisant la lib OpenSSL

GitHub - JMousqueton/2022-OpenSSL-SCAN: OpenSSL v3.x scanner for Linux (bash) and Windows (Powershell)
OpenSSL v3.x scanner for Linux (bash) and Windows (Powershell) - GitHub - JMousqueton/2022-OpenSSL-SCAN: OpenSSL v3.x scanner for Linux (bash) and Windows (Powershell)

Après analyse, c'est un problème de punycode avec les domaines internationaux utilisés dans les certificats. L'autorité de certification doit signer les certificats malveillants, cela ne me semble pas être un "gros problème", néanmoins restons calme et patchons ...

Néanmoins cela a permis à la communauté de montrer son efficacité quant aux partages d'informations.