Подходы к поиску уязвимостей: хороший, плохой, злой
Александр Дорофеев, 16/04/24
Ядром любого сканера безопасности является реализация механизма поиска уязвимостей. Кратко разберем распространенные подходы, используемые в сканерах уязвимостей, а именно применение скриптов, реализацию стандарта SCAP (Security Content Automation Protocol) и поиск по версиям программного обеспечения.
Автор: Александр Дорофеев, CISSP, CISA, CISM, АО “Эшелон Технологии”
Рассмотрим подходы в той последовательности, в которой они появлялись как технологии.
Использование скриптов
Предполагает запуск сценариев, реализующих логику определения наличия уязвимостей. В простейшем случае в ходе выполнения скрипта осуществляется подключение к сетевому сервису, разбор его баннера с целью извлечения версии ПО и сравнение с заданными в скрипте значениями. Скрипт может также включать дополнительную логику взаимодействия с проверяемым узлом, например проверить, что бэкдор, связанный с уязвимостью, не был активирован. В прародителе целого ряда коммерческих сканеров уязвимостей Nessus данный механизм реализован с помощью языка NASL, в известном сканере портов Nmap для этой цели поддерживается запуск скриптов на языке Lua (Nmap Scripting Engine).
Запуск большого количества скриптов занимает продолжительное время, иногда даже несколько часов. Полнота сканирования полностью зависит от возможностей вендора по разработке и поддержанию в актуальном состоянии десятков тысяч небольших программ. Стоит отметить, что присутствует и риск нарушения работоспособности сервиса в случае, если скрипт пытается сымитировать реальную эксплуатацию уязвимости.
Спецификация SCAP
Была разработана американским NIST в далеком 2009 г., она определяет то, как перевести требования безопасности информации в формализованный вид – SCAP-контент. Для определения требований используются языки XCCDF (The Extensible Configuration Checklist Description Format) и OVAL (Open Vulnerability and Assessment Language). XCCDF используется для описания требований, а OVAL – для описания алгоритма проверки. Для проведения проверок используется SCAP-интерпретатор, который и составляет ядро сканера уязвимостей, использующего данный подход.
К сожалению, заложенная гибкость привела к сложности и данная технология оказалась тяжелой в полноценной реализации задуманного. Так, вендоры, производящие решения на базе SCAP-интерпретаторов, редко когда заявляют о числе проверок, сопоставимом с количеством известных уязвимостей. Обычно речь идет о нескольких десятках тысяч проверок, в то время как общее количество уязвимостей уже превысило 160 тыс.
Поиск уязвимостей по версиям ПО
Стал возможен благодаря появлению множества баз данных уязвимостей в доступных для автоматического разбора форматах. Самыми известными являются БДУ ФСТЭК России, NIST NVD, базы компаний-разработчиков операционных систем. Версии установленного на узлах ПО можно определять как по сети, разбирая баннеры сетевых сервисов, так и анализируя установленные пакеты, подключившись с помощью протоколов, используемых для удаленного администрирования.
Данный подход известен своей феноменальной скоростью поиска уязвимостей, так как "сканирование" в данном случае представляет собой всего лишь обращения к локальной агрегированной базе данных. Использование большого количества источников позволяет обеспечить практически 100%-ное покрытие известных уязвимостей.
Выводы
Если сопоставить ключевые характеристики рассмотренных подходов, то можно получить следующую картину, отображенную в таблице.
Таблица. Сравнение подходов к поиску уязвимостей
Проведя такой анализ подходов, разработчики группы компаний "Эшелон" остановили свой выбор на варианте, связанном с поиском уязвимостей по версиям ПО, который и был реализован в Сканер-ВС 6.
Решение позволяет проводить поиск уязвимостей сетевых сервисов на основе сетевого сканирования портов и уязвимостей системного и прикладного программного обеспечения, установленного в ОС семейств Linux и Windows, на основе инвентаризации ПО по протоколам SSH и WinRM.
После сетевого сканирования или инвентаризации поиск уязвимостей занимает считанные секунды. Негативное воздействие на инфраструктуру полностью исключено. Источниками данных об уязвимостях для Сканер-ВС 6 являются БДУ ФСТЭК, NIST NVD, базы уязвимостей Astra Linux, РедОС, Ubuntu, Debian, RedHat и др. Обновления выходят ежедневно. Продукт разработан для функционирования в ОС Astra Linux 1.7. Поставка возможна как виде дистрибутива, так и в виде LiveUSB.
Демоверсия Сканер-ВС 6 доступна в виде дистрибутива, Docker Compose и ISO-образа LiveUSB на сайте [1] продукта.