Состоялся выпуск библиотеки под названием TLS Certificate Verification Bypass Library (tls‑preloader). Исходный текст проекта написан на языке C. Это универсальное решение, которое позволяет полностью отключать проверку TLS‑сертификатов, упрощая отладку и анализ работы приложений с зашифрованными соединениями.
Проект tls‑preloader распространяется как 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 — с отключённой проверкой сертификатов. Для удобства в tls‑preloader предусмотрен режим отладки и возможность вывода стек‑трейсов при вызове перехваченных функций.
В OpenSSL и его производных библиотека tls‑preloader перехватывает функции SSL_CTX_set_verify(), X509_verify_cert() и связанные с ними проверки хоста и срока действия сертификата.
В GnuTLS с помощью tls‑preloaderобходятся механизмы gnutls_certificate_verify_peers, а в NSS — хуки SSL_BadCertHook() и CERT_VerifyCert(). Аналогичные приёмы применены и к другим TLS‑реализациям.
Инструмент tls‑preloader ориентирован на разработчиков и тестировщиков, которые работают с самоподписанными или просроченными сертификатами и нуждаются в быстрой отладке.
Разработчики решения настоятельно не рекомендуют использовать библиотеку в рабочих системах, поскольку она полностью убирает один из ключевых элементов защиты HTTPS.
В числе ограничений проекта tls‑preloader — невозможность работы со статически собранными бинарниками и отсутствие поддержки браузеров Chrome и Chromium, где BoringSSL встроен напрямую. Кроме того, приложения с жёсткой проверкой сертификатов (certificate pinning) могут продолжить блокировать соединения.
Источник: habr.com