В современном мире кибербезопасности своевременное и точное получение информации об уязвимостях является одним из ключевых элементов защиты информационных систем. Однако глобальное разнообразие источников данных и различия в форматах существенно усложняют задачу автоматизированного сбора и анализа уязвимостей. Рассмотрим подробней, каким образом можно эффективно получать данные об уязвимостях из более чем 100 различных источников без использования больших языковых моделей (LLM), что сохраняет прозрачность и контроль над процессом. Ценность оперативной информации об уязвимостях невозможно переоценить. Традиционно основным источником выступал Национальный список уязвимостей (NVD), который агрегировал данные о CVE (Common Vulnerabilities and Exposures).
Несмотря на высокий уровень надёжности и стандартизации, это дает значительную задержку между публикацией уязвимости и её появлением в списке. Задержка может составлять недели или даже месяцы, что критично для организаций, стремящихся к проактивной защите. В ответ на такие вызовы создаются специализированные сервисы, которые работают с сотнями различных источников данных: это публичные и приватные базы, вендорские уведомления, блоги, RSS-ленты, API и даже баг-трекеры. Главная задача — максимально быстро выявить и обработать данные для предоставления актуальной картины угроз. Сложность работы с таким множеством источников заключается в их высокой разнородности.
У каждого вендора и платформы собственный способ публикации информации: кто-то предпочитает структурированные форматы в виде JSON API, другие ограничиваются текстовыми блогами или HTML-страницами, которые постоянно меняются. Это требует разработки функиональной гибкой инфраструктуры сбора, которая легко адаптируется под изменения и быстро масштабируется. Ключевой подход в такой системе — построение множества «коллекторов» данных, представляющих собой веб-скрейперы и парсеры, заточенные под конкретные сайты и форматы. Каждому из них присуща высокая вероятность выходы из строя из-за редизайнов сайтов, изменений API или удаления информации. Поэтому архитектура строится с расчетом на регулярную замену и обновление этих компонентов.
Для ускорения разработки таких коллекторов применяется специализированный движок обхода, обладающий функциональностью записи и воспроизведения HTTP-запросов и ответов. Благодаря этому разработчики могут без подключения к интернету тестировать и отлаживать парсеры, добиваясь максимальной стабильности. Работа с DOM-структурой страниц ведётся через две базовые операции: extract и find. Первая возвращает строки с данными по заданным селекторам и функциям обработки, вторая — узлы дерева DOM. Такой функциональный подход позволяет применять разнообразные функции-мапперы для обработки и нормализации извлечённых данных.
Например, можно выделить отдельно разработанные функции для обработки дат, URL, семантических версий, CVSS-метрик, очистки от HTML-тегов и обработки JSON из текстовых полей. Такая библиотека мапперов является общей для всех коллекторов и позволяет быстро создавать комплексные цепочки обработки данных, которые остаются тестируемыми и повторно используемыми в разных задачах. Обработка сложных текстовых полей ведется по принципу пошагового упрощения с помощью так называемых Regex Reducers. Этот метод основан на последовательном применении регулярных выражений к исходной строке, что позволяет выделять нужные данные — будь то имя автора, версия продукта или наименование компании — и одновременно очищать строку для дальнейшего анализа. Данный подход обеспечивает высокую устойчивость к вариативности контента и минимизирует использование сложных монолитных регулярных выражений.
Для поддержания качества данных и своевременного обнаружения неисправностей в работе коллекторов применяются системы проверки ожидаемых данных. Если парсер не находит в определённой части страницы необходимые узлы или данные, генерируется ошибка. Это позволяет быстро выявить изменения в структуре страниц и оперативно внести правки в коллекторы. Таким образом, ключевые принципы в разработке системы сбора уязвимостей без LLM следующие: модульность и лёгкость замены компонентов, функциональное извлечение и трансформация данных, пошаговая очистка сложных текстов, а также настойчивая проверка целостности получения информации. Отказ от крупных языковых моделей базируется на желании максимальной транспарентности и прослеживаемости процесса сбора.
Каждому элементу данных можно сопоставить конкретное правило или функцию, что критично для аудита и доверия заказчиков. Роль ИИ в таких решениях ограничивается обработкой неструктурированных текстов, где традиционные методы затруднительны, и эти результаты отчётливо маркируются в итоговой базе. Перспективы развития таких систем связаны с автоматизацией создания селекторов и мапперов при помощи ИИ, что позволит ускорить выпуск новых коллекторов и повысить их адаптивность. Также возможно появление универсальных сборщиков, которые с помощью машинного обучения смогут извлекать базовую информацию с произвольных страниц, что особенно полезно при анализе новых и малоизученных источников. Подытоживая, реализация систем для сбора данных об уязвимостях из сотен разных источников требует не только технических навыков, но и понимания особенностей публикации информации в сообществе безопасности.
Правильно организованный процесс обеспечивает получение своевременной, полной и проверенной информации, что играет решающую роль в успешной защите IT-инфраструктур от быстро развивающихся угроз.