
badkeys v0.0.20
Strumento per trovare vulnerabilità comuni nelle chiavi pubbliche crittografiche
badkeys
Strumento e libreria per controllare le chiavi pubbliche crittografiche per vulnerabilità note
cosa?
badkeys controlla le chiavi pubbliche in vari formati per individuare vulnerabilità note. Una versione web è disponibile su badkeys.info.
installazione
badkeys può essere installato tramite pip:
pip3 install badkeys
Potresti voler usare un ambiente virtuale. Per dettagli sulle diverse opzioni di installazione, consulta la documentazione ufficiale di Python. In alternativa, puoi eseguire ./badkeys-cli direttamente dal repository git.
Puoi trovare una panoramica dei pacchetti badkeys per distribuzioni Linux e altri sistemi operativi su Repology.
uso
Prima di usare badkeys, devi scaricare i dati della blocklist:
badkeys --update-bl
Dopodiché, puoi chiamare badkeys e passare file con chiavi pubbliche crittografiche come parametro:
badkeys test.crt my.key
Proverà automaticamente a rilevare il formato del file. Sono supportate le chiavi pubbliche e private in formato PEM (sia PKCS #1 che PKCS #8), i certificati X.509, le richieste di firma del certificato (CSR) e le chiavi pubbliche SSH. Puoi trovare alcune chiavi di test nella directory tests/data.
Per impostazione predefinita, badkeys emette solo informazioni sulle chiavi vulnerabili, quindi non viene generato alcun output se non vengono trovate vulnerabilità. Il parametro -a genera un output per tutte le chiavi.
Lo strumento a riga di comando restituisce 0 se le chiavi sono state scansionate, non si sono verificati errori e non sono state rilevate vulnerabilità. Restituisce 1 per errori applicativi, 2 se un qualsiasi input non ha potuto essere scansionato (errori del parser, tipi di chiave non supportati, file senza chiave) e 4 se è stata trovata una chiave vulnerabile. I codici di ritorno possono essere combinati come bitmask. (Ad es., 2|4=6 indica che alcune chiavi erano vulnerabili e altre non hanno potuto essere scansionate.)
scansione
badkeys può scansionare host SSH e TLS e controllare automaticamente le loro chiavi pubbliche. Questa funzione può essere abilitata con i parametri -s (SSH) e -t (TLS). Per impostazione predefinita, SSH viene scansionato sulla porta 22 e TLS su diverse porte per i protocolli comuni (https/443, smtps/465, ldaps/636, ftps/990, imaps/993, pop3s/995 e 8443, che viene comunemente usata come porta https non standard).
Porte alternative possono essere configurate con --tls-ports e --ssh-ports.
La scansione TLS e SSH può essere combinata:
badkeys -ts example.org
Nota che le modalità di scansione hanno delle limitazioni. Spesso è preferibile usare altri strumenti per raccogliere le chiavi TLS/SSH e scansionarle localmente con badkeys.
La scansione SSH richiede paramiko come dipendenza aggiuntiva.
La scansione TLS non può rilevare più certificati su un singolo host (ad es. ECDSA e RSA). Questa è una limitazione della funzione ssl.get_server_certificate() di Python.
modulo Python e API
badkeys può essere usato anche come modulo Python. Tuttavia, al momento il software è in fase beta e l'API potrebbe cambiare regolarmente.
informazioni
badkeys è stato scritto da Hanno Böck.
Questo lavoro è stato inizialmente finanziato nel 2022 da Industriens Fond tramite il progetto CIDI (Cybersecure IOT in Danish Industry) e dal Center for Information Security and Trust (CISAT) presso l'IT University di Copenaghen, Danimarca. Nel 2025/2026, badkeys è stato supportato dal NGI0 Core Fund di NLnet.