
Скрипт на Python для сканирования и проверки безопасности CVE-2025-23419
Репозиторий со скриптом безопасной проверки для CVE-2025-23419, уязвимости, связанной с NGINX, mTLS и TLS session resumption.
Скрипт выполняет эвристическую проверку для выявления возможной подверженности ошибке, не проводя активную эксплуатацию и не пытаясь обойти аутентификацию по сертификату клиента.
Его цель — поддержка технической сортировки, защитной валидации и анализа подверженности в авторизованных средах.
| CVE | Технология | Тип | Затронутый компонент |
|---|---|---|---|
CVE-2025-23419 | NGINX | Возможный обход аутентификации mTLS | TLS session resumption на виртуальных хостах |
CVE-2025-23419 затрагивает сценарии, где несколько server blocks NGINX используют один и тот же IP и порт, а среда применяет аутентификацию по сертификату клиента, также известную как mTLS.
В определенных конфигурациях атакующий мог бы повторно использовать ранее установленную сессию TLS, чтобы обойти требования аутентификации по сертификату клиента в другом контексте виртуального хоста.
Уязвимость связана с использованием TLS session resumption, особенно когда включены ssl_session_cache или ssl_session_tickets.
На практике подверженность зависит от комбинации уязвимой версии, использования TLS 1.3, конфигурации сессии TLS, нескольких виртуальных хостов и применения mTLS в определенных частях среды.
В соответствии с публичными уведомлениями, проблема затрагивает:
NGINX 1.11.4 и более поздние версии
Когда присутствуют следующие условия:
NGINX, собранный с OpenSSL
TLS 1.3 включен
Session resumption включен
Использование ssl_session_cache или ssl_session_tickets
Несколько server blocks, использующих один и тот же IP и порт
Аутентификация mTLS/сертификат клиента на каком-либо виртуальном хосте
Исправление было опубликовано в версиях:
NGINX 1.26.3
NGINX 1.27.4
Таким образом, версия, подобная:
nginx/1.24.0
должна рассматриваться как потенциально уязвимая, при условии, что сценарий конфигурации также соответствует ошибке.
Важно: уязвимая версия сама по себе не подтверждает эксплуатацию. Она указывает на необходимость проверки конфигурации.
| Script | Цель | Когда использовать |
|---|---|---|
safe-check-CVE-2025-23419.py | Выполняет безопасную эвристическую проверку на возможную подверженность CVE-2025-23419. | Использовать, когда цель показывает потенциально уязвимый NGINX и есть подозрение на использование mTLS/TLS session resumption. |
Скрипт выполняет безопасные проверки для выявления признаков уязвимости:
Server;POSSIVEL или NAO_INDICADO.Этот скрипт не эксплуатирует уязвимость.
Он не пытается:
Цель — только собрать технические индикаторы для поддержки сортировки и защитной валидации.
Используйте этот скрипт, если есть один или несколько из следующих признаков:
Сервер отдает nginx/1.24.0
Среда использует mTLS
Есть несколько виртуальных хостов на одном IP и порту
Используется TLS 1.3
Есть подозрение, что включены ssl_session_cache или ssl_session_tickets
Автоматизированный инструмент указал CVE-2025-23419
Примеры подходящих целей:
https://api.exemplo.com.br/
https://admin.exemplo.com.br/
https://mtls.exemplo.com.br/
https://gateway.exemplo.com.br/
python3 safe-check-CVE-2025-23419.py https://exemplo.com.br/
python3 safe-check-CVE-2025-23419.py https://exemplo.com.br/ --verbose
python3 safe-check-CVE-2025-23419.py https://exemplo.com.br/ --json
python3 safe-check-CVE-2025-23419.py https://exemplo.com.br/ --timeout 10
POSSIVEL
Указывает, что скрипт обнаружил признаки, совместимые с возможной подверженностью CVE-2025-23419.
Это не подтверждает эксплуатацию. Это означает, что среда заслуживает ручного анализа конфигурации NGINX и проверки с ответственной командой.
Пример подробного вывода:
POSSIVEL
nginx_header: nginx/1.24.0
nginx_ver: (1, 24, 0) (vuln? True)
mtls_hint: True
tls: TLSv1.3
resumption_reused: True
other_vhost_no_mtls_hint: True
Эти данные помогают понять, почему конечная точка была классифицирована как возможная подверженность.
NAO_INDICADO
Указывает, что скрипт не обнаружил достаточных признаков для указания возможной подверженности на данной конечной точке.
Это не гарантирует полное отсутствие уязвимости, особенно если:
Server скрыт;Основные настраиваемые пункты:
CERT_ERROR_STATUS = {400, 401, 403, 495, 496}
Этот список представляет HTTP-коды, которые могут указывать на ошибку, связанную с отсутствующим или недействительным сертификатом клиента.
Также можно настроить timeout через командную строку:
--timeout 10
Скрипт использует только стандартные библиотеки Python.
Основные зависимости:
python3
ssl
socket
argparse
urllib
Устанавливать внешние библиотеки через pip не требуется.
Обновите NGINX до исправленной версии, предпочтительно 1.26.3, 1.27.4 или выше, в соответствии с используемым каналом.
Проверьте конфигурацию server blocks, которые используют один и тот же IP и порт, особенно если mTLS присутствует только на части виртуальных хостов.
Оцените использование:
ssl_session_cache
ssl_session_tickets
TLS 1.3
server blocks, использующие один IP и порт
mTLS, применённый к конкретным виртуальным хостам
Также рекомендуется изолировать контексты, требующие сертификат клиента, и убедиться, что аутентификация mTLS применяется на правильном виртуальном хосте.
Кроме того, проверьте конфигурации на прокси, шлюзах, балансировщиках, ingress-контроллерах и CDN, так как компонент, завершающий TLS, может не совпадать с тем, который отвечает за конечное приложение.
https://mailman.nginx.org/pipermail/nginx-announce/2025/NYEUJX7NCBCGJGXDFVXNMAAMJDFSE45G.html
https://nvd.nist.gov/vuln/detail/CVE-2025-23419
https://ubuntu.com/security/CVE-2025-23419
https://github.com/advisories/GHSA-84xh-pwc6-7g4g
https://access.redhat.com/security/cve/cve-2025-23419
Этот скрипт должен использоваться только в авторизованных средах.
Его цель — поддержка сортировки, безопасной проверки, авторизованного пентеста, защитного анализа и подтверждения конфигурационной подверженности.
Использование против систем без разрешения запрещено.