Извините, сэр, не найдется ли у вас минутки поговорить об обновлениях безопасности? Конечно же не найдется, наверняка вы заняты тем, что устанавливаете патчи. Если серьезно, то стоит взять паузу и подумать о том, насколько эффективно вы это делаете (спойлер: скорее всего, не очень-то эффективно).
Разумеется, лучше всего быть богатым и здоровым и мгновенно устанавливать все существующие патчи для всего программного обеспечения, которым пользуется ваша компания. Но в реальной жизни все немного сложнее, и на все заплатки никогда не хватает времени — приходится приоритизировать. Вопрос: как это лучше всего делать?
На RSA Conference 2019 Джей Джейкобс из Cyenta Institute и Майкл Ройтман из Kenna Security представили свое исследование «Этиология эксплуатации уязвимостей». В докладе исследователи аргументированно, с цифрами рассуждают о том, какие уязвимости заслуживают повышенного внимания и как можно кардинально улучшить стратегию установки обновлений безопасности.
Основная идея состоит в том, что далеко не все уязвимости эксплуатируются на практике. И раз так, то установку значительной доли обновлений достаточно безопасно откладывать, отдавая приоритет тем, которые действительно могут быть (и скорее всего будут) задействованы в реальной атаке. Остается понять, как можно отличить «опасные» уязвимости от «в основном безвредных».
Вооружившись описаниями из базы CVE, публично доступными базами эксплойтов, а также данными сканеров уязвимостей и IPS/IDS — в сумме это 7,3 миллиарда записей атак и 2,8 миллиарда уязвимостей в 13 миллионах систем — исследователи построили модель, которая достаточно неплохо позволяет это предсказать. Но сперва немного анализа уязвимостей.
Сколько CVE существует в природе?
Любой специалист по информационной безопасности прекрасно представляет, что CVE существует огромное количество. Но вряд ли многие знают, сколько именно. Так вот, всего на данный момент их зарегистрировано около 108 000.
Причем следует иметь в виду, что последние пару лет темпы обнаружения уязвимостей увеличились: если с 2005 по 2017 год публиковалось порядка 300-500 CVE в месяц, то в конце 2017 среднемесячное значение резко перевалило за 1000 и с тех пор эти темпы сохраняются.
Как правило, о существовании эксплойта становится известно либо незадолго до, либо сразу после публикации соответствующей CVE. Исключения существуют, но в основной массе случаев это окно в плюс-минус две недели относительно даты публикации CVE. Так что реагировать на CVE стоит быстро.
Само собой, темпы установки обновлений значительно отстают. В среднем за месяц после обнаружения устраняется только четверть имеющихся в системах дыр. На устранение половины требуется 100 дней, а четверть остается непропатченной и спустя год.
Более двух третей незакрытых дыр приходятся на продукты всего трех вендоров. Несложно догадаться, каких именно вендоров и какие именно продукты:
При этом для 77% CVE не существует публично известных эксплойтов. Также интересно, что не все опубликованные уязвимости встречаются в реальных окружениях — таких только 37 000 из всех существующих 108 000 CVE. И лишь 5 000 CVE одновременно и существуют в живой природе, и эксплуатируемы. Именно эти уязвимости и следовало бы приоритетно закрывать — остается только правильно угадать.
Существующие стратегии установки обновлений
Для оценки релевантности стратегий установки обновлений исследователи использовали две метрики: долю «опасных» уязвимостей от общего количества пропатченных (эффективность) и долю закрытых уязвимостей от общего числа «опасных» (охват).
Одна из общепринятых стратегий установки обновлений основывается на рейтинге CVSS: приоритетно патчить все, чему присвоен CVSS выше определенного значения. Если посчитать эффективность и охват для CVSS 10, то получится 23% и 7% соответственно. Интересно, что совершенно такого же (во всяком случае, в данных метриках) результата можно добиться, устанавливая патчи случайным образом.
Наиболее распространенный подход патчить все, что имеет «высокий» рейтинг CVSS (то есть от 7 и выше) дает заметно лучшие результаты. В целом это неплохой подход, но трудоемкий — при его использовании придется приоретизировать установку большого количества обновлений.
Альтернативной стратегией является приоритезация обновлений по вендорам. Для разных разработчиков соотношение количества реально существующих эксплойтов и общего числа CVE разное, и логично было бы в первую очередь покрыть тех, уязвимости в чьих продуктов с большей вероятностью будут эксплуатироваться на практике.
Однако если посчитать эффективность и охват, то такая стратегия окажется вдвое хуже, чем установка обновлений случайным образом.
Так что этот подход в долгосрочной перспективе оказывается еще менее релевантным, чем основывающийся на оценке CVSS.
Модель расчета вероятности эксплуатации уязвимостей
И это возвращает нас к модели, построенной исследователями. Сопоставив данные из описаний CVE, публично доступных баз эксплойтов и систем IPS/IDS они смогли выделить набор признаков, которые влияют на вероятность того, что уязвимость будет эксплуатироваться на практике.
Скажем, такие признаки как наличие в CVE ссылки на запись в Microsoft Security Bulletin или наличие эксплойта в Metasploit резко увеличивают вероятность эксплуатации соответствующей уязвимости.
Некоторые признаки наоборот, понижают эту вероятность — среди таковых уязвимости в Safari, публикация эксплойта в не очень удобной для практического использования базе ExploitDB, наличие терминов «authenticated» или «double free memory» в описаниях CVE и так далее. Сочетание всех этих факторов позволяет рассчитать вероятность эксплуатации для любой отдельно взятой уязвимости.
Для проверки точности модели исследователи сравнили предсказания с данными реальных атак. Вот что показала проверка:
- Для уязвимостей с минимальной вероятностью эксплуатации модель работает хорошо.
- Модель склонна переоценивать вероятность эксплуатации для уязвимостей со средней предсказанной вероятностью.
- Наоборот, для уязвимостей с высокой вероятностью эксплуатации модель несколько недооценивает риск.
В общем, модель не идеальна, но в целом она работает. На ее основе исследователи создали три стратегии установки обновлений — высокоэффективную, сбалансированную и с максимальным охватом. Например, сбалансированная позволяет добиться вдвое большей эффективности, чем CVSS 7+ с лучшим охватом (63% против 52%) при вдвое меньшей трудоемкости — то есть вдвое меньшем количестве устанавливаемых патчей.
Напоследок советы от исследователей. Вот, что они предлагают сделать:
- Задумайтесь, используете ли вы в вашей стратегии установки обновлений что-либо, кроме оценок CVSS.
- Исследуйте, каким образом в вашей инфраструктуре ведется учет открытых и закрытых уязвимостей.
- Начните собирать данные со своих сенсоров об эксплойтах, использованных при атаках на ваши ресурсы.
- Собрав значительный объем данных, попробуйте рассчитать значения эффективности, охвата и затрачиваемых усилий для вашей инфраструктуры.
- Сравните полученные значения с другими стратегиями приоритезации.
Мы, со своей стороны, разделяем их точку зрения о том, что патчить вручную что попало — это пустая трата ресурсов. Однако наш подход иной — в приложении Kaspersky Systems Management (является частью решения Kaspersky Security для бизнеса) работают подсистемы мониторинга уязвимостей и управления установкой исправлений.
Они позволяют быстро выявлять, приоретизировать и закрывать уязвимости. Причем при расставлении приоритетов используются не только оценки CVSS, но и информация из Kaspersky Security Network. Например, если наши системы видят что уязвимость в данный момент активно используется злоумышленниками, то ее приоритет повышается. Подробнее о технологии можно почитать вот тут.