Бесплатный экспресс-аудит сайта Безопасность, SEO, AI-поиск и 152-ФЗ — отчёт с баллами за минуту Проверить сайт
Обсудить проект

Девять баллов из десяти — и вас не касается: как читать ленту уязвимостей

Оценить статью

Приходит рассылка: «Критическая уязвимость PHP, 9,8 из 10, немедленно обновитесь». Через неделю — ещё одна, с десяткой. Потом третья. Обновляться каждый раз в тот же день нельзя: на боевом сервере это риск простоя. Игнорировать тоже нельзя.

Выход один — научиться отличать то, что касается вашего сервера, от того, что не касается. Это занимает минут десять и не требует быть специалистом по безопасности. Покажем на реальных записях октября и ноября 2026 года.

Оценка 9,8 ничего не говорит о вашем риске

Балл CVSS — это описание худшего исхода при самых удачных для атакующего условиях. В нём нет вашей конфигурации, вашей версии и вашего способа использования продукта. Поэтому вопрос «у нас критическая уязвимость?» звучит неправильно. Правильный — «выполняются ли у нас условия, при которых она работает?».

Условия написаны прямо в карточке уязвимости, строкой рядом с оценкой. Выглядит она так:

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Разбирать весь вектор не нужно, достаточно четырёх букв.

  • AV — откуда атака. AV:N — из сети, это худший случай. AV:L — нужен доступ к самой машине, что для внешнего злоумышленника уже серьёзное препятствие.
  • PR — какие нужны права. PR:N — никаких, достаточно прислать запрос. PR:L — нужна учётная запись. PR:H — нужны права администратора. Разница между PR:N и PR:L на практике огромна.
  • UI — требуется ли действие человека. UI:R означает, что кто-то должен открыть файл, перейти по ссылке или зайти на сервер. Атака становится заметно сложнее.
  • AC — сложность. AC:H — нужно поймать момент или угадать условие, что отсекает массовое сканирование.

Запись с AV:N/AC:L/PR:N/UI:N и оценкой 7,5 опаснее для вас, чем запись с 9,9 и PR:H. Первую будут запускать роботы по всему интернету, для второй нужно сначала попасть внутрь.

Три вопроса, которые отвечают почти на всё

Дальше по порядку. Если на любом шаге ответ «нет» — можно выдохнуть и поставить обновление в плановую очередь.

Первый: этот компонент у меня вообще есть?

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

Проверяется одной командой. Список расширений PHP:

php -m

Версии остального:

php -v
mysql --version
nginx -v
httpd -v

Полминуты работы, а отсекает большинство новостей.

Второй: моя версия попадает в диапазон?

В описании всегда указано, с какой по какую версию продукт уязвим и где исправлено. Формулировка «from 8.2.* before 8.2.33» означает: ветка 8.2, всё ниже 8.2.33. Если у вас 8.2.35 — вы уже за пределами, ничего делать не нужно.

Отдельно: номер версии в вашем дистрибутиве может не совпадать с номером у разработчика. AlmaLinux, Debian и Ubuntu переносят исправления в старые версии, не меняя номер. Поэтому «у меня 8.2.26, а исправили в 8.2.33» не всегда значит «я уязвим» — надо смотреть журнал изменений пакета.

Третий: выполняются ли условия?

Здесь и пригодится вектор. Нужен ли аккаунт, нужна ли особая настройка, нужно ли попасть в короткое окно времени.

Четыре записи и четыре разных ответа

Теперь по-живому. Это настоящие записи из ленты за последний месяц — те самые, которые приходят в рассылках.

9,8 — и мимо

CVE-2026-17543: «неправильное экранирование обратных слэшей приводит к тривиальной SQL-инъекции в PHP». Звучит так, что надо бросать всё.

Смотрим подробности в уведомлении разработчиков. Уязвимость в расширении ext-pgsql, в функциях pg_insert(), pg_update(), pg_select() и pg_delete(). Механика красивая: значение экранировали через PQescapeStringConn(), а потом заворачивали в строку вида E'...', где обратный слэш — управляющий символ, который эта функция не экранирует. Кавычку она удваивает, но слэш перед кавычкой ломает всю конструкцию, и остаток ввода уходит в SQL как команда.

Ключевое слово — PostgreSQL. Сайт на 1С-Битрикс работает с MySQL, и этих функций в его коде нет. Проверка:

php -m | grep pgsql

Расширение может быть собрано и при этом нигде не использоваться — уязвимы именно вызовы этих четырёх функций. Для связок PHP с PostgreSQL, а это Laravel, Symfony и самописные проекты, вопрос серьёзный: обновляться до 8.2.33, 8.3.33, 8.4.24 или 8.5.9.

10,0 — и тоже мимо

CVE-2026-49261 в MariaDB, максимальная из возможных оценок. Выполнение команд оболочки через имя узла при включённом wsrep_notify_cmd.

wsrep — это репликация Galera, то есть кластер из нескольких серверов базы. На одиночном сервере, каких большинство, этого параметра нет. Десятка превращается в ноль одной проверкой конфигурации. Остальную октябрьскую волну MariaDB, где есть и то, что касается обычного сервера, мы разобрали отдельно.

7,5 — и вот это ваше

CVE-2026-91765, скромная семёрка, которую в рассылках даже не выделят. Функция cleanup_xml_node() в расширении SOAP разбирает XML рекурсивно и не ограничивает глубину вложенности.

Вектор: AV:N/AC:L/PR:N/UI:N. Никаких прав, никакого участия человека, обычный запрос из интернета. Запрос с десятками тысяч вложенных элементов на любой эндпоинт SoapServer исчерпывает стек и роняет процесс. Поток таких запросов выедает весь пул PHP-FPM, и сайт перестаёт отвечать — без всякого взлома.

Проверка та же:

php -m | grep soap

Если расширение включено и у вас есть обмен по SOAP — с 1С, с учётной системой, со складом, — это как раз то, чем займитесь сегодня. Исправлено в 8.2.34, 8.3.35, 8.4.26 и 8.5.11.

Когда думать некогда

Есть признак, который важнее любой оценки: уязвимость попала в каталог активно эксплуатируемых CISA. Туда вносят не то, что теоретически возможно, а то, что уже видят в реальных атаках.

Две октябрьские уязвимости PHP, про которые мы писали отдельно, попали в каталог. Уязвимость в механизме обновления WordPress — тоже, 3 ноября. Если ваш продукт в этом списке — разбор условий отменяется, обновляйтесь.

Ловушка с датами

Ещё одна причина лишней паники — в ленте старое выглядит как новое.

База NVD постоянно переписывает уже существующие записи: уточняет оценку, добавляет затронутые версии. Любой инструмент, который следит за изменениями, покажет такую запись как свежую. У нас это видно каждый день: в сводке за три недели среди октябрьских находок висели июньские уязвимости MariaDB, которым просто переписали баллы. Исправления к ним вышли ещё летом.

Поэтому в карточке смотрите на дату публикации, а не на дату изменения. Если уязвимость опубликована полгода назад — почти наверняка в вашем дистрибутиве она давно закрыта очередным обновлением.

Что делать с тем, что всё-таки ваше

Порядок простой и не меняется от уязвимости к уязвимости.

  1. Проверьте, не закрыто ли уже. Если сервер обновляется регулярно, половина новостей к моменту прочтения неактуальна.
  2. Если обновиться сейчас нельзя — а это нормальная ситуация, когда на сервере боевой проект, — закройте доступ к уязвимому месту другими средствами. Отключите неиспользуемое расширение, закройте эндпоинт на уровне веб-сервера, ограничьте права аккаунта базы.
  3. Поставьте обновление в план, а не в «когда-нибудь». У отложенного обновления должна быть дата.
  4. После обновления проверьте, что исправление встало — номер версии, а не факт запуска команды.

Как это устроено у нас

Ленту NVD и каталог CISA мы просматриваем ежедневно, автоматически, по списку того, что реально обслуживаем: PHP, базы, веб-серверы, платформа. Сводка приходит в портал, и там же видно, что нового по сравнению со вчерашним днём.

Смысл не в списке, а в двух вещах. Первая: когда выходит что-то серьёзное, мы знаем, у кого из клиентов это стоит, и не ищем по памяти. Вторая: большинство записей мы закрываем решением «не наше» за минуту — по тем же трём вопросам, что выше.

Если такой проверки нет, её стоит завести в любом виде. Даже подписка на рассылку безопасности вашего дистрибутива и полчаса в неделю работают лучше, чем ничего.

Коротко

  • Балл — это худший случай, а не ваш риск. Смотрите вектор: PR:N и UI:N страшнее высокой оценки с PR:H.
  • Три вопроса: есть ли у меня этот компонент, попадает ли версия, выполняются ли условия.
  • Половина новостей отсекается командами php -m и mysql --version.
  • Попадание в каталог CISA важнее любой оценки: там то, что эксплуатируют прямо сейчас.
  • Дата публикации важнее даты изменения записи: переоценённое старое выглядит в ленте как новое.

Источники

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

Статья была полезна?

Оцените первым — так другие читатели поймут, стоит ли читать

Частые вопросы

Что означает оценка CVSS 9,8 и надо ли сразу обновляться?

Оценка описывает худший исход при самых удачных для атакующего условиях и не учитывает вашу конфигурацию. Сразу бросать всё стоит, если уязвимость попала в каталог активно эксплуатируемых CISA. В остальных случаях сначала проверьте, есть ли у вас этот компонент, попадает ли ваша версия в уязвимый диапазон и выполняются ли условия из вектора.

Как понять по вектору, насколько всё плохо?

Достаточно четырёх обозначений. AV:N — атака из сети, AV:L — нужен доступ к машине. PR:N — прав не требуется, PR:L — нужна учётная запись, PR:H — права администратора. UI:R — требуется действие человека. AC:H — нужно поймать момент или угадать условие. Запись с AV:N/PR:N/UI:N и оценкой 7,5 для вас опаснее, чем 9,9 с PR:H.

У меня версия ниже исправленной, но сервер на AlmaLinux. Я уязвим?

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

Почему в мониторинге старые уязвимости выглядят как новые?

База NVD постоянно переписывает существующие записи: уточняет оценку и список затронутых версий. Инструменты, которые следят за изменениями, показывают такую запись как свежую. Смотрите на дату публикации, а не на дату изменения: если уязвимость опубликована полгода назад, в вашем дистрибутиве она, скорее всего, давно закрыта.

Что делать, если обновиться прямо сейчас нельзя?

Закрыть доступ к уязвимому месту другими средствами: отключить неиспользуемое расширение, закрыть эндпоинт на уровне веб-сервера, урезать права аккаунта базы. И поставить обновление в план с конкретной датой, а не в «когда-нибудь».