Назад к обновлениям
New releaseAug 21, 2026

badkeys v0.0.20

Инструмент для поиска распространённых уязвимостей в криптографических открытых ключах

Поделиться

badkeys

Инструмент и библиотека для проверки криптографических открытых ключей на известные уязвимости

Что это?

badkeys проверяет открытые ключи в различных форматах на известные уязвимости. Веб-версия доступна на badkeys.info.

установка

badkeys можно установить через pip:

pip3 install badkeys

Возможно, вы захотите использовать виртуальное окружение. Подробнее о различных вариантах установки см. официальную документацию Python. Кроме того, вы можете напрямую вызывать ./badkeys-cli прямо из git-репозитория.

Вы можете найти обзор пакетов badkeys для дистрибутивов Linux и других операционных систем на Repology.

использование

Перед использованием badkeys необходимо загрузить данные блок-листа:

badkeys --update-bl

После этого вы можете вызывать badkeys и передавать файлы с криптографическими открытыми ключами в качестве параметра:

badkeys test.crt my.key

Он автоматически попытается определить формат файла. Поддерживаются открытые и закрытые ключи в формате PEM (как PKCS #1, так и PKCS #8), сертификаты X.509, запросы на подпись сертификата (CSR) и открытые ключи SSH. Некоторые тестовые ключи можно найти в каталоге tests/data.

По умолчанию badkeys выводит информацию только об уязвимых ключах, то есть если уязвимостей не найдено, вывод не создаётся. Параметр -a создаёт вывод для всех ключей.

Инструмент командной строки возвращает 0, если ключи были просканированы, ошибок не возникло и уязвимостей не обнаружено. Он возвращает 1 при ошибках приложения, 2, если какой-либо ввод не удалось просканировать (ошибки парсера, неподдерживаемые типы ключей, файлы без ключа), и 4, если был найден уязвимый ключ. Коды возврата можно комбинировать как битовую маску. (Например, 2|4=6 означает, что некоторые ключи были уязвимы, а некоторые не удалось просканировать.)

сканирование

badkeys может сканировать SSH- и TLS-хосты и автоматически проверять их открытые ключи. Это можно включить параметрами -s (SSH) и -t (TLS). По умолчанию SSH будет сканироваться на порту 22, а TLS — на нескольких портах для распространённых протоколов (https/443, smtps/465, ldaps/636, ftps/990, imaps/993, pop3s/995 и 8443, который часто используется как нестандартный https-порт).

Альтернативные порты можно задать с помощью --tls-ports и --ssh-ports.

Сканирование TLS и SSH можно комбинировать:

badkeys -ts example.org

Обратите внимание, что режимы сканирования имеют ограничения. Часто предпочтительнее использовать другие инструменты для сбора ключей TLS/SSH и сканировать их локально с помощью badkeys.

Для сканирования SSH требуется дополнительная зависимость paramiko.

Сканирование TLS не может обнаружить несколько сертификатов на одном хосте (например, ECDSA и RSA). Это ограничение функции ssl.get_server_certificate() в Python.

Модуль Python и API

badkeys также можно использовать как модуль Python. Однако в настоящее время программное обеспечение находится в стадии беты и API может регулярно меняться.

О проекте

badkeys написан Ханно Бёком.

Эта работа изначально финансировалась в 2022 году фондом Industriens Fond в рамках проекта CIDI (Cybersecure IOT in Danish Industry) и Центром информационной безопасности и доверия (CISAT) при IT-университете Копенгагена, Дания. В 2025/2026 годах badkeys поддерживался NGI0 Core Fund от NLnet.

Категории