Появилась универсальная библиотека для отладки.
Исследователь из Limes Security под псевдонимом f0rw4rd представил новый инструмент для разработчиков и специалистов по тестированию — tls-preloader. Это универсальная библиотека, которая позволяет полностью отключать проверку TLS-сертификатов, упрощая отладку и анализ работы приложений с зашифрованными соединениями.
Решение распространяется как LD_PRELOAD-библиотека, перехватывающая функции популярных TLS-библиотек. Оно работает с OpenSSL (включая версии 1.0.x, 1.1.x и 3.x), BoringSSL, LibreSSL, GnuTLS, NSS, mbedTLS, wolfSSL, а также может обходить встроенные проверки в libcurl.
Авторы отмечают, что библиотека кроссплатформенная и поддерживает Linux, FreeBSD, OpenBSD, NetBSD, Solaris, AIX и macOS. При сборке автоматически учитываются особенности целевой платформы и применяются оптимизации для потокобезопасности — от pthread-мьютексов до атомарных операций.
Использование tls-preloader максимально простое: достаточно скомпилировать библиотеку и подгрузить её через LD_PRELOAD
. После этого можно запускать любую программу — от curl и wget до Python-скриптов или Firefox — с отключённой проверкой сертификатов. Для удобства предусмотрен режим отладки и возможность вывода стек-трейсов при вызове перехваченных функций.
В OpenSSL и его производных библиотека перехватывает функции SSL_CTX_set_verify()
, X509_verify_cert()
и связанные с ними проверки хоста и срока действия сертификата. В GnuTLS обходятся механизмы gnutls_certificate_verify_peers
, а в NSS — хуки SSL_BadCertHook()
и CERT_VerifyCert()
. Аналогичные приёмы применены и к другим TLS-реализациям.
Инструмент ориентирован на разработчиков и тестировщиков, которые работают с самоподписанными или просроченными сертификатами и нуждаются в быстрой отладке. Авторы подчёркивают: использовать библиотеку в боевых системах категорически не рекомендуется, поскольку она полностью убирает один из ключевых элементов защиты HTTPS.
В числе ограничений проекта — невозможность работы со статически собранными бинарниками и отсутствие поддержки браузеров Chrome и Chromium, где BoringSSL встроен напрямую. Кроме того, приложения с жёсткой проверкой сертификатов (certificate pinning) могут продолжить блокировать соединения.
Проект распространяется с открытым исходным кодом и доступен на GitHub .