Ваша инсталляция GLPI подвержена уже каталогизированным уязвимостям, а вы об этом не знаете? В большинстве парков, которые мы принимаем на сопровождение, никто не может сразу ответить, какие CVE затрагивают версию в продуктиве и выставлены ли в PHP правильные флаги безопасности. Модуль CVE Scan Vulnerabilidades из NexTool сопоставляет установленную версию с публичными базами CVE и за секунды проверяет 19 критичных параметров среды, формируя наглядный Security Score.
Проблема
У команд службы поддержки, работающих с GLPI, редко есть формальный процесс отслеживания уязвимостей, связанных с версией в продуктиве. NVD (NIST) и GitHub Advisory Database постоянно публикуют CVE, но отслеживать это вручную, версия за версией, нереально для тех, кто весь день ещё и создаёт и закрывает заявки.
Хуже того: версия ПО — это лишь половина риска. Среда PHP и конфигурация сервера вносят тихие уязвимости — включённый в продуктиве display_errors, раскрывающий пути и stack trace, cookie сессии без HttpOnly, отсутствие Content-Security-Policy или Strict-Transport-Security. Каждая из этих деталей — поверхность атаки, которая обычно обнаруживается только после инцидента, когда уже поздно.
Как работает CVE Scan
При запуске сканирования модуль определяет версию по константе GLPI_VERSION и сопоставляет её с динамической базой CVE, собранной из трёх источников:
- NVD / NIST — авторитетный источник оценки CVSS и официальных метаданных каждой уязвимости.
- GitHub Advisory Database — бюллетени, опубликованные самим проектом GLPI, с затронутыми версиями и версией, исправляющей каждую уязвимость, по линиям версий (например, 10.0 и 11.0), а также ссылкой на бюллетень.
- Статическая резервная база — встроенный в модуль список критических и высоких уязвимостей, используемый до первого обновления базы и в средах, у которых нет доступа ни к GitHub, ни к NVD.
Объединение выполняется по CVE ID: для CVSS приоритет у NVD, а GitHub добавляет диапазоны версий и ссылки на бюллетени. Локальная база обновляется ежедневно автоматической задачей и по требованию кнопкой Обновить базу; само сканирование не обращается ни к GitHub, ни к NVD, и если оба источника недоступны, продолжает действовать предыдущая база. Параллельно с сопоставлением CVE модуль выполняет 19 проверок безопасности среды, сгруппированных в пять категорий: конфигурация PHP (8 проверок), проверки, специфичные для GLPI (4, в том числе стандартные пароли учётных записей установки), HTTP-заголовки (4), права доступа к файлам (2) и версия PHP (1), которая выявляет PHP, вышедший из поддержки безопасности. Результат превращается в Security Score от 0 до 100 с цветовой шкалой — красный для критического состояния, жёлтый для умеренного и зелёный для здорового, — а каждый пункт содержит статус, версию, исправляющую уязвимость, и инструкцию по исправлению.
Что он видит такого, чего не показывает штатный GLPI
| Проверяемый параметр | Штатный GLPI | Модуль CVE Scan |
|---|---|---|
| CVE установленной версии | Не предупреждает | Сопоставляет GLPI_VERSION с NVD и GitHub Advisory |
| Забытый каталог install/ | Предупреждение на странице входа | Отражается в оценке, если установщик отвечает через веб, с инструкцией по удалению |
| display_errors в продуктиве | Не проверяет | Отдельная проверка |
| Заголовки CSP / HSTS / X-Frame-Options / X-Content-Type-Options | Не проверяет | Четыре проверки HTTP-заголовков |
| Права доступа к config_db.php | Не предупреждает | Отдельная проверка |
| Изменение риска во времени | Отсутствует | Security Score фиксируется при каждом сканировании |
Что мы узнали, запуская это на практике
При сопровождении чаще всего в средах клиентов не проходит проверку session.cookie_secure — и почти всегда причина за пределами GLPI. GLPI стоит за обратным прокси, который терминирует TLS, поэтому PHP видит соединение как http и не помечает cookie как защищённый. Исправление не в GLPI: нужно правильно передавать заголовок X-Forwarded-Proto на прокси и принудительно включить HSTS на границе. Второй чемпион — каталог install/, забытый после установки. GLPI даже предупреждает об этом на странице входа, но в парке с десятками инсталляций это предупреждение остаётся незамеченным — именно сводная оценка заставляет команду обратить внимание. Поэтому мы относимся к CVE Scan как к термометру, а не как к приговору: он указывает на проблему, но решение исправить её в правильном месте остаётся за тем, кто сопровождает среду.
Проверка тех же параметров вручную
Ещё до установки чего-либо вы можете воспроизвести часть диагностики прямо на сервере. Вот некоторые из параметров PHP и файловой системы, которые проверяет модуль:
# PHP flags that CVE Scan audits (run on the GLPI server)
php -i | grep -Ei 'display_errors|expose_php|allow_url_include|cookie_httponly|cookie_secure'
# Permission of the database credentials file: must be 400 or 440, never 644
stat -c '%a %n' /var/www/glpi/config/config_db.php
# Installation directory that should have been removed after setup
test -f /var/www/glpi/install/install.php && echo 'ALERT: install/ still present - remove it'
# PHP version: warn if it is end-of-life (EOL)
php -r 'echo PHP_VERSION, PHP_EOL;'
Модуль автоматизирует это, добавляет сопоставление с базами CVE и хранит историю, — но уже запуск приведённых выше команд показывает, почему ручной аудит не масштабируется дальше двух-трёх инсталляций.
Как включить
- Установите плагин NexTool в ваш GLPI.
- Откройте Настройки > NexTool > Модули.
- Найдите карточку CVE Scan Vulnerabilidades, нажмите Установить, а затем Активировать.
- Откройте модуль и на Панели нажмите Обновить базу, а затем Запустить сканирование.
- По желанию: укажите токен GitHub и API Key NVD на вкладке настроек, чтобы повысить лимиты запросов к внешним базам.
Кому подходит (и кому нет)
Модуль подходит администраторам GLPI, которым нужен быстрый и регулярный аудит безопасности, командам, проходящим внутренний или внешний аудит и нуждающимся в подтверждении состояния среды, и руководителям, которые хотят отслеживать изменение уровня защищённости по истории сканирований. Это не серебряная пуля: он не заменяет пентест, ничего не исправляет сам и не должен становиться поводом откладывать обновление GLPI. Если в вашей среде уже есть корпоративный сканер (Nessus, Qualys), направленный на тот же хост, CVE Scan — лёгкое дополнение, специфичное для GLPI, а не конкурент.
Совместимость
- GLPI: 10.x и 11.x
- План: FREE
- Плагин: NexTool 6.11.0 или выше
Следующий шаг
CVE Scan Vulnerabilidades входит в NexTool — модульный плагин для GLPI. Познакомьтесь с другими модулями или свяжитесь с командой для полной оценки безопасности вашей среды.
Проверено командой NexTool Solutions.