Уязвимости 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 доступен из интернета и давно не обновлялся — сервер нужно проверить в первую очередь. CMS или фреймворк не имеют значения: риск находится на уровне 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
1С-Битрикс, WordPress, Joomla, Drupal и другие CMS, если перед ними установлен уязвимый nginx.
Laravel, Symfony, Django, FastAPI, Node.js, Ruby on Rails, Java и Go-приложения за nginx reverse proxy.
Docker, Kubernetes ingress, балансировщики, API-gateway, reverse proxy и внутренние прокси-серверы.
Серверы с панелями управления, кастомными сборками nginx и пакетами от сторонних поставщиков.
Быстрый план действий для администратора
- Найти все серверы, контейнеры и прокси, где используется nginx.
- Проверить версию nginx и параметры сборки.
- Проверить конфигурации на rewrite, HTTP/2 proxy, OCSP, HTTP/3, uwsgi, scgi и charset_map.
- Обновить nginx через доверенный репозиторий или официальный образ.
- Проверить конфигурацию командой
nginx -t. - Перезапустить nginx.
- Проверить сайт, API, редиректы, оплату, авторизацию и интеграции.
- Посмотреть логи nginx после обновления.
- Настроить временные меры защиты, если обновление нельзя выполнить сразу.
Цель
Не просто «обновить пакет», а убедиться, что все nginx-инсталляции в инфраструктуре найдены, исправлены и проверены после перезапуска.
Шаг 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
Что важно
Сама версия nginx — это только часть проверки. Также важно понять, откуда установлен пакет: из репозитория ОС, репозитория nginx, панели управления, Docker-образа или кастомной сборки.
Шаг 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/
Осторожно
Не удаляйте rewrite-правила вслепую. Они могут отвечать за ЧПУ, SEO-редиректы, маршрутизацию API, авторизацию, канонические URL и работу приложения.
Шаг 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
Важно
Если 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
CentOS 7
Если сервер работает на CentOS 7, важно помнить, что сама ОС уже устарела. В таком случае правильнее планировать миграцию на поддерживаемую платформу, а не пытаться бесконечно поддерживать старую систему точечными обновлениями.
Шаг 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
Не используйте latest вслепую
В production лучше фиксировать версию образа и обновлять её осознанно. После обновления обязательно проверьте конфигурацию, проброс портов, volume и работу сайта.
Шаг 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>
Проверяйте не только 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, но помогают снизить риск до установки исправленной версии.
Временная защита
WAF, CDN и ограничения доступа помогают уменьшить поверхность атаки, но не закрывают уязвимость в самом nginx. Обновление всё равно нужно выполнить.
Пример: как аккуратно проверять rewrite-правила
Если в конфигурации есть rewrite-правила с неименованными захватами $1, $2, их нужно внимательно проверить. Не удаляйте их без понимания логики сайта.
Пример конструкции, которую нужно проверить:
rewrite ^/old/(.*)$ /new/$1? permanent;
Более безопасный подход — использовать понятные именованные группы, если это применимо к вашей конфигурации:
rewrite ^/old/(?<path>.*)$ /new/$path? permanent;
После любого изменения проверьте конфигурацию:
nginx -t
И перезагрузите nginx без полного рестарта, если конфигурация корректна:
systemctl reload nginx
Важно
Замена rewrite-правил должна проходить через тестирование. Ошибка в регулярном выражении может привести к циклическим редиректам, 404, проблемам с SEO или недоступности разделов сайта.
Чек-лист администратора 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.
- Особое внимание — конфигурациям с rewrite, HTTP/2 proxy, SSL OCSP, HTTP/3, uwsgi/scgi и charset_map.
- Главная мера защиты — обновить nginx до исправленной версии из доверенного источника.
- После обновления обязательно проверьте конфигурацию, логи, сайт, API, редиректы и интеграции.
- Если обновление откладывается, временно снизьте риски через WAF, CDN, ограничения доступа, аудит конфигураций и мониторинг логов.
Нужна помощь?
Проверим ваши nginx-серверы, найдём уязвимые конфигурации, обновим пакеты и протестируем работу сайта после изменений.
Заказать аудит nginx