Что значит «устаревшая технология»
Сайт может годами работать без видимых проблем, но библиотеки и программы под ним стареют. Мы различаем три уровня риска: версия с опубликованными уязвимостями (номера CVE), ветка без поддержки — исправлений больше не будет, и просто устаревшая версия, у которой есть более новые выпуски. Это оценка риска, а не диагноз: уязвимость в библиотеке срабатывает не на каждом сайте.
| Что проверяем | Как определяем версию | Пример риска |
|---|---|---|
| JS-библиотеки: jQuery, jQuery UI, Bootstrap, AngularJS, Vue, React, Lodash, Moment.js и другие | По адресу файла (jquery-1.12.4.min.js, ?ver=3.7.1, /bootstrap/3.3.7/) или по заголовку в первых 2 КБ файла | jQuery до 3.5.0 — XSS (CVE-2020-11022, CVE-2020-11023) |
| Язык и веб-сервер | Заголовки Server и X-Powered-By: PHP/7.4.33, nginx/1.18.0, Apache/2.4.41 | PHP 7.4 без исправлений безопасности с ноября 2022 года |
| Движок сайта | Мета-тег generator, служебные файлы; версия WordPress сверяется с wordpress.org | Joomla 3 без поддержки с августа 2023 года |
| Соединение | Проверочное TLS-соединение | Сервер принимает TLS 1.0/1.1, нет HTTP/2 |
| Вёрстка | Код страниц | Нет мета-тега viewport, вёрстка таблицами, Flash, заплатки для Internet Explorer, старый год в подвале |
Откуда данные об уязвимостях и сроках
Уязвимости JS-библиотек — встроенная база по образцу retire.js и записей NVD: в неё вошли только записи с точно известными границами версий. Сроки поддержки — официальные графики проектов: php.net, python.org, Bootstrap, AngularJS, Vue, Joomla, Drupal, OpenSSL, жизненный цикл Windows Server. Базу мы обновляем вручную, поэтому самая свежая уязвимость может в неё ещё не попасть.
Почему версия может определиться неточно
- Файл переименован или собран вместе с другими. Тогда версии в адресе нет, а заголовок мог быть удалён при сборке.
- Версия в ?ver= — не всегда версия библиотеки. Темы и плагины WordPress иногда подставляют туда свою версию.
- Дистрибутивы Linux переносят исправления. nginx или Apache из пакета Ubuntu могут быть защищены, хотя номер версии старый.
- Сервер может скрывать версии. Тогда мы честно пишем «версию не определили» — это не значит, что всё актуально.
Что делать с результатом
- Красные пункты — первыми. Версии PHP, движка и сервера без поддержки: новые уязвимости в них не закрывают.
- Библиотеки с CVE. Обновление внутри ветки обычно простое (Lodash, jQuery UI). Переход jQuery 1.x → 3.x или Bootstrap 3 → 5 — уже переделка, её делают на копии сайта.
- Вёрстка и мобильная версия. Если нет viewport и страницы свёрстаны таблицами, сайт плохо выглядит на телефоне — это видно посетителям и поисковикам.
- Когда устарело всё сразу. Сравните две сметы: обновление текущего сайта и новый сайт с переносом содержимого и адресов. Иногда второе выходит не дороже.
Вопросы и ответы
Проверка бесплатная?
Да. Регистрация не нужна, отчёт показывается сразу, ссылка на него хранится 90 дней. Бесплатно — до 10 проверок в сутки.
Уязвимость в jQuery — значит, сайт взломают?
Нет. Большинство уязвимостей в клиентских библиотеках срабатывают только при определённом использовании: например, если сайт вставляет на страницу HTML из недоверенного источника. Но такие версии ищут автоматические сканеры, а обновление снимает вопрос целиком.
Почему у меня WordPress, а jQuery «старый»?
Сам WordPress подключает актуальный jQuery. Старую версию обычно приносит тема или плагин, который подключает свою копию библиотеки. В отчёте указан адрес файла — по нему видно, откуда он.
Можно ли просто скрыть версии?
Скрыть версии в заголовках сервера стоит — это затрудняет подбор атак. Но устаревшая программа от этого не становится безопасной, обновление всё равно нужно.
Что такое «возраст технологий»?
Оценка от 0 до 100: компоненты без поддержки и с уязвимостями снижают её сильнее, устаревшие версии и признаки старой вёрстки — меньше. 100 — по внешним признакам всё современное.
Сайт на Тильде или конструкторе — есть смысл проверять?
Движок обновляет платформа, но в код страниц часто вставлены свои скрипты и виджеты — их версии проверка тоже покажет.
Можно ли проверить чужой сайт?
Можно: мы делаем обычные запросы к публичным страницам, как браузер посетителя. В отчёте только то, что и так видно в коде страниц и заголовках сервера.