
badkeys v0.0.20
Ferramenta para encontrar vulnerabilidades comuns em chaves públicas criptográficas
badkeys
Ferramenta e biblioteca para verificar chaves públicas criptográficas em busca de vulnerabilidades conhecidas
o que?
badkeys verifica chaves públicas em vários formatos em busca de vulnerabilidades conhecidas. Uma versão web pode ser encontrada em badkeys.info.
instalação
badkeys pode ser instalado via pip:
pip3 install badkeys
Você pode querer usar um ambiente virtual. Para detalhes sobre diferentes opções de instalação, consulte a documentação oficial do Python. Alternativamente, você pode chamar diretamente ./badkeys-cli a partir do repositório git.
Você pode encontrar uma visão geral dos pacotes badkeys para distribuições Linux e outros sistemas operacionais no Repology.
uso
Antes de usar o badkeys, você precisa baixar os dados da lista de bloqueio:
badkeys --update-bl
Depois disso, você pode chamar badkeys e passar arquivos com chaves públicas criptográficas como parâmetro:
badkeys test.crt my.key
Ele tentará detectar automaticamente o formato do arquivo. São suportadas chaves públicas e privadas no formato PEM (tanto PKCS #1 quanto PKCS #8), certificados X.509, solicitações de assinatura de certificado (CSRs) e chaves públicas SSH. Você pode encontrar algumas chaves de teste no diretório tests/data.
Por padrão, o badkeys exibirá apenas informações sobre chaves vulneráveis, ou seja, nenhuma saída será gerada se nenhuma vulnerabilidade for encontrada. O parâmetro -a cria saída para todas as chaves.
A ferramenta de linha de comando retornará 0 se as chaves foram escaneadas, nenhum erro ocorreu e nenhuma vulnerabilidade foi detectada. Retorna 1 para erros de aplicação, 2 se alguma entrada não pôde ser escaneada (erros de parser, tipos de chave não suportados, arquivos sem chave) e 4 se uma chave vulnerável foi encontrada. Os códigos de retorno podem ser combinados como uma máscara de bits. (Exemplo: 2|4=6 indica que algumas chaves estavam vulneráveis e algumas não puderam ser escaneadas.)
varredura
badkeys pode escanear hosts SSH e TLS e verificar automaticamente suas chaves públicas. Isso pode ser ativado com os parâmetros -s (SSH) e -t (TLS). Por padrão, SSH será escaneado na porta 22 e TLS será escaneado em várias portas para protocolos comuns (https/443, smtps/465, ldaps/636, ftps/990, imaps/993, pop3s/995 e 8443, que é comumente usada como uma porta https não padrão).
Portas alternativas podem ser configuradas com --tls-ports e --ssh-ports.
A varredura TLS e SSH pode ser combinada:
badkeys -ts example.org
Observe que os modos de varredura têm limitações. Muitas vezes é mais desejável usar outras ferramentas para coletar chaves TLS/SSH e escaneá-las localmente com badkeys.
A varredura SSH precisa do paramiko como dependência adicional.
A varredura TLS não pode detectar múltiplos certificados em um host (exemplo: ECDSA e RSA). Esta é uma limitação da função ssl.get_server_certificate() do Python.
Módulo Python e API
badkeys também pode ser usado como um módulo Python. No entanto, atualmente o software está em estado beta e a API pode mudar regularmente.
sobre
badkeys foi escrito por Hanno Böck.
Este trabalho foi inicialmente financiado em 2022 pela Industriens Fond através do projeto CIDI (Cybersecure IOT in Danish Industry) e pelo Center for Information Security and Trust (CISAT) na IT University of Copenhagen, Dinamarca. Em 2025/2026, badkeys foi apoiado pelo NLnet's NGI0 Core Fund.