Уязвимости nginx: как проверить сервер, обновить nginx и защитить сайт

Безопасность веб-серверов

Уязвимости nginx: как проверить сервер, обновить nginx и защитить сайт

Практическая инструкция для администраторов: как найти уязвимые версии nginx, проверить конфигурации, обновить сервер и снизить риски эксплуатации.

Главное: уязвимости относятся к nginx, а не только к 1С-Битрикс

Уязвимости nginx касаются не только сайтов на 1С-Битрикс. Проблема находится на уровне веб-сервера nginx, который может использоваться в разных проектах: 1С-Битрикс, WordPress, Laravel, Symfony, Django, Node.js, Docker, Kubernetes, reverse proxy и API-gateway.

1С-Битрикс оказался в фокусе внимания потому, что nginx входит в состав VMBitrix, а для этой платформы был выпущен пакет bx-nginx 1.30.2. Но если уязвимая версия nginx установлена в другой инфраструктуре, её также нужно проверять и обновлять.

Основная задача администратора — найти все серверы, контейнеры и прокси, где используется nginx, проверить версию, конфигурации и обновить веб-сервер до исправленной версии.

Где используется nginx

Веб-сервер

nginx отдаёт пользователям страницы сайта, изображения, CSS, JavaScript, документы и другие статические файлы.

Reverse proxy

nginx часто стоит перед backend-приложением и проксирует запросы в PHP-FPM, Node.js, Python, Java, Go или другой сервис.

Балансировщик

nginx может распределять нагрузку между несколькими серверами приложения, повышая отказоустойчивость и скорость работы.

Контур безопасности

nginx отвечает за HTTPS, редиректы, ограничения доступа, rate limit, заголовки безопасности и базовую фильтрацию запросов.

Какие уязвимости nginx нужно учитывать

В мае 2026 года были раскрыты несколько уязвимостей nginx Open Source и nginx Plus. Наиболее заметной стала NGINX Rift — CVE-2026-42945, связанная с модулем rewrite.

CVE Компонент nginx Что проверить Риск
CVE-2026-42945
NGINX Rift
ngx_http_rewrite_module rewrite-правила, регулярные выражения, неименованные PCRE-захваты $1, $2 Высокий
CVE-2026-9256
nginx-poolslip
rewrite / PCRE сложные rewrite-правила, overlapping PCRE captures Средний / высокий
CVE-2026-42926 proxy / HTTP/2 proxy_set_body и proxy_http_version 2 Средний
CVE-2026-40701 SSL / OCSP ssl_ocsp в конфигурации nginx Средний
CVE-2026-42946 uwsgi / scgi uwsgi_pass, scgi_pass Высокий
CVE-2026-42934 charset charset_map, UTF-8-настройки Низкий
CVE-2026-40460 HTTP/3 / QUIC HTTP/3, QUIC connection migration Средний

Кого касаются уязвимости nginx

CMS-сайты

1С-Битрикс, WordPress, Joomla, Drupal и другие CMS, если перед ними установлен уязвимый nginx.

Backend-приложения

Laravel, Symfony, Django, FastAPI, Node.js, Ruby on Rails, Java и Go-приложения за nginx reverse proxy.

DevOps-инфраструктура

Docker, Kubernetes ingress, балансировщики, API-gateway, reverse proxy и внутренние прокси-серверы.

Панели и сборки

Серверы с панелями управления, кастомными сборками nginx и пакетами от сторонних поставщиков.

Быстрый план действий для администратора

  1. Найти все серверы, контейнеры и прокси, где используется nginx.
  2. Проверить версию nginx и параметры сборки.
  3. Проверить конфигурации на rewrite, HTTP/2 proxy, OCSP, HTTP/3, uwsgi, scgi и charset_map.
  4. Обновить nginx через доверенный репозиторий или официальный образ.
  5. Проверить конфигурацию командой nginx -t.
  6. Перезапустить nginx.
  7. Проверить сайт, API, редиректы, оплату, авторизацию и интеграции.
  8. Посмотреть логи nginx после обновления.
  9. Настроить временные меры защиты, если обновление нельзя выполнить сразу.

Шаг 1. Найдите все серверы с nginx

Начните с инвентаризации. Частая ошибка — обновить основной сайт и забыть про тестовые домены, старые виртуальные хосты, API, staging-серверы, Docker-контейнеры или внутренние прокси.

Проверьте, установлен ли nginx на сервере:

which nginx

Проверьте, запущен ли сервис nginx:

systemctl status nginx

Проверьте процессы nginx:

ps aux | grep nginx

Проверьте открытые порты:

ss -tulpn | grep nginx
Не забудьте

Проверьте не только production-сервер, но и staging, dev, старые IP, технические домены, reverse proxy, балансировщики и контейнеры.

Шаг 2. Проверьте версию nginx и параметры сборки

Проверка версии nginx:

nginx -v

Подробная информация о сборке, модулях и параметрах компиляции:

nginx -V

Проверка установленного пакета в RHEL / AlmaLinux / Rocky Linux / CentOS:

rpm -qa | grep nginx

Проверка установленного пакета в Debian / Ubuntu:

dpkg -l | grep nginx

Проверка версии в контейнере:

docker exec -it <container_name> nginx -v
docker exec -it <container_name> nginx -V

Шаг 3. Проверьте конфигурации nginx на опасные директивы

После проверки версии нужно посмотреть конфигурации nginx. Особое внимание — директивам и модулям, которые упоминаются в уязвимостях.

Поиск rewrite-правил:

grep -R "rewrite" /etc/nginx/

Поиск неименованных PCRE-захватов $1, $2 и подобных конструкций:

grep -R "\$[0-9]" /etc/nginx/

Поиск HTTP/2 proxy-сценариев:

grep -R "proxy_http_version 2" /etc/nginx/
grep -R "proxy_set_body" /etc/nginx/

Поиск OCSP, HTTP/3, uwsgi, scgi и charset_map:

grep -R "ssl_ocsp\|http3\|quic\|uwsgi_pass\|scgi_pass\|charset_map" /etc/nginx/

Шаг 4. Сделайте резервную копию перед обновлением

Перед обновлением nginx сохраните конфигурации и убедитесь, что есть актуальный бэкап сайта и базы данных.

Бэкап конфигураций nginx:

mkdir -p /root/backup-nginx
cp -a /etc/nginx /root/backup-nginx/nginx-$(date +%F)

Бэкап логов nginx:

cp -a /var/log/nginx /root/backup-nginx/nginx-logs-$(date +%F)

Проверка конфигурации до обновления:

nginx -t
Практика

Если сервер критичный, сначала повторите обновление на тестовом стенде. Особенно если используются нестандартные модули nginx или панель управления сервером.

Шаг 5. Как обновить nginx на Ubuntu / Debian

На Ubuntu и Debian nginx обычно обновляется через apt. Используйте официальные репозитории вашей ОС или официальный репозиторий nginx, если он был подключён ранее.

Обновите список пакетов:

apt update

Посмотрите доступную версию nginx:

apt-cache policy nginx

Обновите nginx:

apt install --only-upgrade nginx

Проверьте версию:

nginx -v

Проверьте конфигурацию и перезапустите сервис:

nginx -t
systemctl restart nginx

Шаг 6. Как обновить nginx на RHEL / AlmaLinux / Rocky Linux / CentOS

В RHEL-совместимых системах nginx обычно обновляется через dnf или yum.

Для современных систем с dnf:

dnf clean all
dnf update nginx

Для старых систем с yum:

yum clean all
yum update nginx

Проверьте установленную версию:

rpm -qa | grep nginx
nginx -v

Проверьте конфигурацию и перезапустите nginx:

nginx -t
systemctl restart nginx

Шаг 7. Что делать, если nginx используется в VMBitrix

Если nginx используется в составе VMBitrix, обновлять его нужно через пакеты 1С-Битрикс, а не через случайные сторонние репозитории.

Базовая команда обновления для актуальной VMBitrix:

dnf clean all && dnf update

Проверка установленного пакета bx-nginx:

rpm -qa | grep bx-nginx

Проверка конфигурации:

nginx -t

Перезапуск nginx:

systemctl restart nginx
Совет

Для BitrixVM используйте рекомендации и репозитории 1С-Битрикс. Если сервер на старой BitrixVM с CentOS 7, лучше готовить миграцию на VMBitrix 9 или совместимую EL9-платформу.

Шаг 8. Как обновить nginx в Docker

Если nginx работает в Docker, обновлять нужно не пакет на хосте, а Docker-образ.

Проверьте контейнеры с nginx:

docker ps | grep nginx

Проверьте версию nginx внутри контейнера:

docker exec -it <container_name> nginx -v

Обновите образ:

docker pull nginx:stable

Пересоберите и перезапустите контейнеры через Docker Compose:

docker compose pull
docker compose up -d --force-recreate

Проверьте логи:

docker logs <container_name> --tail=100

Шаг 9. Что проверить в Kubernetes и ingress

Если nginx используется как ingress controller или reverse proxy в Kubernetes, нужно проверить версию образа и обновить deployment / Helm chart.

Найдите nginx ingress:

kubectl get pods -A | grep nginx

Посмотрите образ контейнера:

kubectl describe pod <pod_name> -n <namespace> | grep Image

Если используется Helm, проверьте релизы:

helm list -A | grep nginx

Обновите chart после проверки совместимости:

helm repo update
helm upgrade <release_name> <chart_name> -n <namespace>

Проверьте статус rollout:

kubectl rollout status deployment/<deployment_name> -n <namespace>
Kubernetes

Проверяйте не только ingress controller, но и отдельные nginx sidecar-контейнеры, внутренние reverse proxy и кастомные nginx-образы в namespace приложений.

Шаг 10. Проверьте nginx после обновления

Версия

Убедитесь, что nginx действительно обновился:

nginx -v
nginx -V

Конфигурация

Проверьте синтаксис конфигурации:

nginx -t

Статус сервиса

Проверьте, что nginx запущен:

systemctl status nginx

Логи

Посмотрите ошибки после перезапуска:

journalctl -u nginx -n 100 --no-pager
tail -n 100 /var/log/nginx/error.log

Что проверить на сайте после обновления nginx

Страницы
  • Главная
  • Каталог
  • Карточки товаров
  • Посадочные страницы
Пользователи
  • Авторизация
  • Личный кабинет
  • Регистрация
  • Восстановление пароля
Бизнес-логика
  • Корзина
  • Оформление заказа
  • Оплата
  • Доставка
Интеграции
  • API
  • Webhooks
  • CRM
  • Обмен с 1С

Что делать, если обновить nginx сразу нельзя

Иногда обновление нельзя выполнить сразу: нет технического окна, используется кастомная сборка, есть риск сломать совместимость или требуется согласование. В этом случае нужно временно снизить риски.

  • Ограничьте доступ к административным разделам по IP или через VPN.
  • Закройте неиспользуемые виртуальные хосты, тестовые домены и старые конфигурации.
  • Отключите неиспользуемые модули и экспериментальные настройки.
  • Проверьте rewrite-правила и замените опасные конструкции там, где это возможно.
  • Включите WAF, CDN или внешний reverse proxy перед сервером.
  • Настройте rate limit для подозрительных и частых запросов.
  • Усильте логирование и мониторинг ошибок nginx.
  • Подготовьте бэкап конфигураций, файлов сайта и базы данных.

Эти меры не заменяют обновление nginx, но помогают снизить риск до установки исправленной версии.

Пример: как аккуратно проверять rewrite-правила

Если в конфигурации есть rewrite-правила с неименованными захватами $1, $2, их нужно внимательно проверить. Не удаляйте их без понимания логики сайта.

Пример конструкции, которую нужно проверить:

rewrite ^/old/(.*)$ /new/$1? permanent;

Более безопасный подход — использовать понятные именованные группы, если это применимо к вашей конфигурации:

rewrite ^/old/(?<path>.*)$ /new/$path? permanent;

После любого изменения проверьте конфигурацию:

nginx -t

И перезагрузите nginx без полного рестарта, если конфигурация корректна:

systemctl reload nginx

Чек-лист администратора nginx

Проверка Команда / действие Статус
Найти nginx на сервере which nginx, systemctl status nginx Обязательно
Проверить версию nginx -v Обязательно
Проверить сборку nginx -V Обязательно
Найти rewrite-правила grep -R "rewrite" /etc/nginx/ Обязательно
Найти PCRE-захваты grep -R "\$[0-9]" /etc/nginx/ Рекомендуется
Сделать бэкап конфигурации cp -a /etc/nginx /root/backup-nginx/ Обязательно
Обновить nginx apt, dnf, yum, Docker image или Helm chart Обязательно
Проверить конфигурацию nginx -t Обязательно
Перезапустить сервис systemctl restart nginx Обязательно
Проверить логи journalctl -u nginx -n 100 --no-pager Обязательно
Проверить сайт страницы, авторизация, заказы, API, webhooks, редиректы Обязательно

Частые вопросы об уязвимостях nginx

Нет. Уязвимости относятся к nginx. 1С-Битрикс затронут только в тех инсталляциях, где nginx используется в составе VMBitrix или другой серверной конфигурации. Любой другой сайт или приложение с уязвимым nginx тоже нужно проверять.

Да, если используется уязвимая версия nginx или активны затронутые модули. CMS или фреймворк не имеют значения: проблема находится на уровне веб-сервера.

Нет. WAF и CDN могут снизить риск эксплуатации, но не закрывают уязвимость в самом nginx. Надёжное решение — обновить nginx до исправленной версии и проверить конфигурацию.

Да. Если nginx работает в контейнере, нужно обновить Docker-образ. Если nginx используется как ingress controller или reverse proxy в Kubernetes, нужно проверить версию контроллера, образа и конфигурации ingress.

Да. После обновления важно убедиться, что старые worker-процессы nginx завершены, а сервис работает уже с обновлённым бинарником. Перед перезапуском обязательно выполните nginx -t.

Итоги и рекомендации

Нужна помощь?

Проверим ваши nginx-серверы, найдём уязвимые конфигурации, обновим пакеты и протестируем работу сайта после изменений.

Заказать аудит nginx

Читайте также

Все публикации