
badkeys v0.0.20
Outil pour détecter les vulnérabilités courantes dans les clés publiques cryptographiques
badkeys
Outil et bibliothèque permettant de vérifier les clés cryptographiques publiques pour détecter des vulnérabilités connues.
Quoi ?
badkeys vérifie les clés publiques dans divers formats à la recherche de vulnérabilités connues. Une version web est disponible sur badkeys.info.
Installation
badkeys peut être installé via pip :
pip3 install badkeys
Vous souhaiterez peut-être utiliser un environnement virtuel. Pour plus de détails sur les différentes options d'installation, veuillez consulter la documentation officielle de Python. Alternativement, vous pouvez appeler ./badkeys-cli directement depuis le dépôt git.
Vous trouverez un aperçu des paquets badkeys pour les distributions Linux et les autres systèmes d'exploitation sur Repology.
Utilisation
Avant d'utiliser badkeys, vous devez télécharger les données de la liste de blocage :
badkeys --update-bl
Après cela, vous pouvez appeler badkeys et passer en paramètre des fichiers contenant des clés cryptographiques publiques :
badkeys test.crt my.key
Il essaie automatiquement de détecter le format du fichier. Sont pris en charge : les clés publiques et privées au format PEM (aussi bien PKCS #1 que PKCS #8), les certificats X.509, les demandes de signature de certificat (CSR) et les clés publiques SSH. Vous trouverez quelques clés de test dans le répertoire tests/data.
Par défaut, badkeys n'affiche que les informations concernant les clés vulnérables, ce qui signifie qu'aucune sortie n'est générée si aucune vulnérabilité n'est trouvée. Le paramètre -a crée une sortie pour toutes les clés.
L'outil en ligne de commande renvoie 0 si les clés ont été analysées, si aucune erreur n'est survenue et si aucune vulnérabilité n'a été détectée. Il renvoie 1 en cas d'erreurs d'application, 2 si une entrée n'a pas pu être analysée (erreurs du parseur, types de clés non pris en charge, fichiers sans clé), et 4 si une clé vulnérable a été trouvée. Les codes de retour peuvent être combinés en un masque binaire. (Par exemple, 2|4=6 indique que certaines clés étaient vulnérables et que d'autres n'ont pas pu être analysées.)
Analyse
badkeys peut analyser des hôtes SSH et TLS et vérifier automatiquement leurs clés publiques. Cette fonctionnalité peut être activée avec les paramètres -s (SSH) et -t (TLS). Par défaut, SSH est analysé sur le port 22 et TLS est analysé sur plusieurs ports pour les protocoles courants (https/443, smtps/465, ldaps/636, ftps/990, imaps/993, pop3s/995 et 8443, qui est couramment utilisé comme port https non standard).
Des ports alternatifs peuvent être configurés avec --tls-ports et --ssh-ports.
Les analyses TLS et SSH peuvent être combinées :
badkeys -ts example.org
Notez que les modes d'analyse ont des limites. Il est souvent préférable d'utiliser d'autres outils pour collecter les clés TLS/SSH et de les analyser localement avec badkeys.
L'analyse SSH nécessite paramiko comme dépendance supplémentaire.
L'analyse TLS ne peut pas détecter plusieurs certificats sur un même hôte (par exemple ECDSA et RSA). Il s'agit d'une limitation de la fonction ssl.get_server_certificate() de Python.
Module Python et API
badkeys peut également être utilisé comme module Python. Cependant, le logiciel est actuellement en version bêta et l'API peut changer régulièrement.
À propos
badkeys a été écrit par Hanno Böck.
Ce travail a été initialement financé en 2022 par Industriens Fond via le projet CIDI (Cybersecure IOT in Danish Industry) et le Center for Information Security and Trust (CISAT) à l'IT University of Copenhagen, au Danemark. En 2025/2026, badkeys a été soutenu par le NGI0 Core Fund de NLnet.