Проверка уязвимостей JavaScript-библиотекПроверка уязвимостей JavaScript-библиотек
Читает скрипты, которые сайт отдаёт браузеру, находит библиотеки — jQuery, Bootstrap, AngularJS, React, Vue, Lodash, Moment.js — и их версии и сопоставляет CVE по тем же данным, что и npm audit (GitHub Advisory Database / OSV). Для каждой библиотеки показывает безопасную версию в той же ветке, есть ли уязвимость в KEV, закончилась ли поддержка ветки и кто загружает копию (ядро WordPress, плагин, тема, CDN). Доступ к коду и подтверждение владения не нужны.
Что делает эта проверка?
Проверка уязвимостей JavaScript-библиотек читает файлы скриптов, которые сайт отдаёт браузеру, находит библиотеки — jQuery, Bootstrap, AngularJS, React, Vue, Lodash — и их версии и сопоставляет CVE по базе GitHub Advisory Database, которую использует npm audit. Для каждой библиотеки показывает безопасную версию в той же ветке, статус KEV, окончание поддержки и источник копии.
Отправляется один GET-запрос к главной странице (не более 3 перенаправлений), затем читаются файлы скриптов, которые загружает страница: собственные файлы сайта и CDN библиотек, не более 30 файлов; части, импортируемые модульными сборками, тоже просматриваются. Скрипты аналитики и рекламы не скачиваются. Если сборка ссылается на файл лицензий webpack, читается и он; если собственные скрипты сайта ссылаются на карту исходного кода, читаются только первые байты карты (открыта ли она?). Ничего не сохраняется, формы не заполняются, страницы не обходятся. Версия читается из самого файла (строка лицензии, строка версии, хеш файла) или из его адреса; библиотека с нечитаемой версией не считается «без уязвимостей».
Что проверяется и как исправить
Каждый пункт проверки, почему он важен и что делать, если его нет. На экране результата те же шаги показываются только для пробелов на вашем сайте.
Библиотека с активно эксплуатируемой уязвимостью
Почему это важно: Уязвимость из списка KEV агентства CISA или с готовым инструментом атаки (Metasploit, Nuclei) злоумышленники используют уже сегодня. Например, CVE-2020-11023 в jQuery до 3.5.0 попала в KEV 23 января 2025 г.
Как исправить: Обновите библиотеку до безопасной версии из отчёта. Если копию приносит плагин или тема WordPress, обновите этот компонент; если она загружается с CDN, смените версию в адресе и обновите значение integrity.
npm install jquery@3.7.1 --save-exactnpm audit --omit=devУязвимость критической или высокой важности
Почему это важно: Критические и высокие записи — чаще всего выполнение кода на странице через пользовательский ввод (XSS), загрязнение прототипа или внедрение в шаблон; их можно использовать на любой странице, где вызывается уязвимая функция.
Как исправить: Обновитесь до безопасной версии в той же ветке; если в ветке исправления нет, отчёт предложит переход на новую мажорную версию. Перед этим прочитайте заметки о несовместимых изменениях.
Уязвимость средней или низкой важности
Почему это важно: Записи средней важности обычно требуют вызова конкретной функции с конкретным вводом; сами по себе они не срочные, но если ваши страницы используют эту функцию, риск реален.
Как исправить: Обновитесь до безопасной версии в ближайшее окно обслуживания. Если уязвимость в одной функции (например, htmlPrefilter в jQuery), можно проверить в коде, что вы её не используете.
Версия без поддержки
Почему это важно: Ветка, поддержка которой закончилась (AngularJS, jQuery 1.x/2.x, Bootstrap 3/4, Vue 2), не получает исправлений новых уязвимостей. Даже если уязвимостей нет сегодня, завтрашняя останется открытой.
Как исправить: Запланируйте переход на поддерживаемую ветку. Для библиотек, поддержка которых закончилась целиком (AngularJS), переход может означать переписывание; до тех пор ограничьте источники скриптов через CSP.
Скрипт из скомпрометированного источника
Почему это важно: Домен polyfill.io в 2024 г. сменил владельца, и новый владелец добавил в скрипт код, перенаправлявший посетителей на мошеннические сайты; в списке и домены того же оператора — bootcdn, bootcss, staticfile. Скрипт с этих адресов выполняет на вашем сайте чужой код.
Как исправить: Сразу удалите скрипт. Если нужен полифил, используйте зеркало Cloudflare или Fastly или добавьте нужный полифил в собственную сборку.
Адрес CDN без закреплённой версии
Почему это важно: Адрес на jsDelivr/unpkg без версии или с @latest сам меняет содержимое, когда владелец пакета публикует новую версию. В 2024 г. версии, опубликованные со взломанной учётной записи lottie-player, попали на сайты именно так.
Как исправить: Укажите в адресе точную версию и добавьте integrity.
<!-- Kaçının: https://cdn.jsdelivr.net/npm/paket@latest/dist/paket.min.js --><script src="https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js" integrity="sha384-1H217gwSVyLSIfaLxHbE7dRb3v4mYCKbpQvzx0cegeju1MVsGrX5xXxAvs/HgeFs" crossorigin="anonymous"></script>Integrity (SRI) у скриптов CDN
Почему это важно: Без атрибута integrity файл, изменённый на CDN или по пути, выполняется в браузере без проверки. С integrity браузер не выполнит файл с несовпадающим хешем.
Как исправить: Добавьте integrity и crossorigin="anonymous" к адресам CDN с версией; значение возьмите на странице CDN или командой "openssl dgst -sha384 -binary file.js | openssl base64 -A".
Публично доступная карта исходного кода
Почему это важно: Файл .map на рабочем сайте раскрывает читаемый исходный код и пути файлов сборки, и злоумышленнику проще изучить устройство приложения, скрытые адреса API и забытые ключи.
Как исправить: Не публикуйте карты исходного кода (webpack "devtool: false" или "hidden-source-map", Vite "build.sourcemap: false" или "hidden") и загружайте их только в сервис отслеживания ошибок.
Прочитанные скрипты
Почему это важно: Для информации: сколько скриптов найдено, сколько прочитано и сколько библиотек распознано. Непрочитанные файлы (аналитика/реклама или сверх лимита) видны в этом числе.
Как исправить: Для приложений с нечитаемыми версиями сопоставьте package-lock.json на странице SBOM — там проверяются и зависимости, не видные снаружи.
Частые вопросы
- Чем это отличается от npm audit?
- npm audit читает package-lock.json, требует доступа к коду и учитывает пакеты разработки, которые не попадают на сайт. Эта проверка работает только по домену и видит копии, реально загружаемые на рабочем сайте; две версии одной библиотеки из темы и плагина — отдельные строки. Серверные зависимости она не видит; если код у вас есть, сопоставьте package-lock на странице SBOM.
- Находится ли версия в собранных (webpack, Vite) сайтах?
- Обычно да: минификаторы сохраняют строки лицензий и собственную строку версии библиотеки (поле version у React, VERSION у Bootstrap), а также читаются файл лицензий webpack и модульные части. Если сборщик полностью удалил версию, результат — «не видно», а не «уязвимостей нет».
- Что делать, если на сайте WordPress найдена уязвимость jQuery?
- Отчёт показывает, откуда копия. Если она в wp-includes, обновите ядро WordPress; если в папке плагина или темы — обновите или замените этот компонент. Чаще всего старый jQuery приносят темы и плагины, которые включают его в себя.
- Почему безопасная версия иногда новая мажорная?
- Безопасная версия — наименьшая из версий-исправлений в самих записях, которая закрывает все известные уязвимости сразу. Ветки без поддержки, например jQuery 1.x или Bootstrap 3, исправлений не получают, поэтому предлагается следующая мажорная версия.
- Это бесплатно? Нужен ли аккаунт?
- Да, бесплатно и без аккаунта: без регистрации доступно 3 проверки в день (общие для всех бесплатных инструментов и карточки безопасности). С бесплатным аккаунтом — 10 проверок в час и сохранение результатов.
- Безопасно ли запускать проверку на своём сайте?
- Лёгкое сканирование читает только открытую информацию (DNS, TLS-рукопожатие, HTTP-ответ, журналы сертификатов): не заполняет формы, не подбирает пароли и ничего не эксплуатирует. Что именно читает каждый инструмент, указано в разделе «Источники и метод».
Другие тесты
Проверка заголовков безопасности
Оценивает HSTS, глубину CSP, CORS, SRI, смешанное содержимое и настройки cookie.
Проверка SSL/TLS
Цепочка сертификатов, протоколы, слабые шифры.
Проверка безопасности почты
SPF, DKIM и DMARC: можно ли отправить поддельное письмо от вашего имени?
Разведка поверхности атаки
Пассивный OSINT: поддомены, висячие записи, технологический стек, DNS и ASN; то, что видит атакующий на этапе разведки.
Сканер поддоменов
Все поддомены вашего домена: разрешение, первое появление, висячие записи и признаки захвата.
Проверка безопасности DNS и домена
DNSSEC, CAA, серверы имён и регистрация домена: блокировка, срок.
Проверка cookie и согласия
Трекеры и cookie, загружаемые до согласия, инструмент согласия и политика cookie.
Другие бесплатные инструменты безопасности
WP Lens: сканер уязвимостей WordPress
Сопоставляет версии ядра, плагинов и тем WordPress с известными уязвимостями.
Онлайн-сканер портов
Находит открытые порты и версии сервисов на сервере и сопоставляет их с известными уязвимостями.
CVE по баннеру
Вставьте баннер сервиса и посмотрите известные уязвимости этой версии. Без сканирования.
Проверка SBOM на уязвимости
Сопоставляет зависимости из файла CycloneDX или SPDX с известными уязвимостями.