open atlas
↑ К треку
Защитная безопасность BLUE · 04 · 01

Управление уязвимостями

Управление уязвимостями — это замкнутый цикл: обнаружить, приоритизировать, устранить, проверить, — а не ежеквартальный скан, который никто не читает. Зрелый навык — ранжировать по эксплуатируемости и доступности, а затем закрывать находки в рамках защитимого SLA.

BLUE Middle ◷ 15 min
Уровень
ОсновыJuniorMiddleSenior

Сканер выдаёт 4300 находок по всему парку машин. 311 из них — CVSS 9.0 и выше. Команда реально может пропатчить за спринт штук 40. Так какие именно 40? Юниорский ответ — «с самым высоким CVSS». Зрелый ответ — тот, что переживёт разбор после пробоя: из этих 311 критичных какие действительно достижимы из интернета, на запущенном сервисе, с известным эксплойтом в дикой природе? Это подмножество обычно — пара десятков, и оно почти никогда не совпадает с верхушкой списка, отсортированного по CVSS. Управление уязвимостями — это дисциплина, которая превращает 4300 единиц шума в 40 решений, а затем доказывает, что эти 40 закрыты.

К концу урока ты сможешь вести управление уязвимостями как замкнутый цикл — обнаружить, приоритизировать по эксплуатируемости и доступности, устранить в рамках защитимого SLA и проверить фикс, — вместо рассылки отчёта по скану, который никто не читает.

Цикл, а не скан

Самый частый провал в управлении уязвимостями — не пропущенный CVE, а отношение к скану как к результату. Скан — это начало работы, а не её конец. NIST SP 800-40r4 описывает всё это как корпоративное управление патчами и уязвимостями — непрерывный процесс с явными фазами — именно потому, что одноразовый отчёт устаревает в тот же момент, когда выходят новые CVE и поднимаются новые хосты. Состояние мира меняется ежедневно; ежеквартальный PDF протух раньше, чем закончилась встреча.

У цикла четыре подвижные части, и ценность живёт в связях между ними:

  • Обнаружить — знать, что у тебя есть и что с этим не так. Сначала инвентаризация активов (нельзя пропатчить хост, о котором ты забыл), затем аутентифицированные сканы, телеметрия агентов, проверки зависимостей по SBOM и обзор внешней поверхности.
  • Приоритизировать — превратить поток находок в ранжированную очередь по эксплуатируемости и доступности, а не по сырой серьёзности.
  • Устранить — пропатчить, перенастроить, изолировать или компенсировать — с привязанными часами (SLA).
  • Проверить — пересканировать и подтвердить, что находка действительно исчезла, затем вернуть результат в обнаружение.

Пропусти проверку — и у тебя не цикл, а бесконечный список, где «мы это пропатчили» и «это исправлено» — два разных утверждения, которые ты никогда не сверяешь. В день, когда аудитор спросит «покажи, что этот CVE закрыт на всех 200 хостах», команда, которая проверяла, ответит за минуты; команда, которая просто выкатила патч, теперь сканирует под давлением.

Приоритизируй по эксплуатируемости и доступности, а не по сырому CVSS

Вот число, которое перестраивает мышление зрелого инженера: из всех CVE, опубликованных за год, лишь малая доля — исследования и данные CISA KEV дают существенно меньше 5% — вообще когда-либо эксплуатируются в дикой природе. И всё же наивная программа считает каждый CVSS 9.8 одинаково горящим. Так и сжигают спринт, патча критичный по рейтингу RCE в библиотеке, которая вкомпилирована, но недостижима, пока «средняя» ошибка конфигурации на твоём интернет-фейсинг логине стоит открытой.

CVSS даёт базовую серьёзность — вендоронезависимый балл 0–10 о том, насколько плох изъян, если его эксплуатируют. Он действительно полезен, и FIRST (кто ведёт спецификацию) явно говорят: базовый балл — это серьёзность, а не риск. Чтобы дойти до риска, ты накладываешь сверху две вещи, которые один базовый CVSS не схватывает:

  • Эксплуатируемость — есть ли рабочий эксплойт и используется ли он? Временны́е метрики CVSS v3.1 и метрики угрозы v4.0 кодируют это, но самый острый сигнал — каталог Known Exploited Vulnerabilities (KEV) от CISA и EPSS (вероятность, что CVE будет проэксплуатирован в ближайшие 30 дней). CVE из KEV прыгает в начало очереди почти независимо от своего базового балла.
  • Доступность (exposure) — действительно ли затронутая вещь достижима и запущена в твоём окружении? Интернет-фейсинг бьёт внутренний; нагруженный, слушающий сервис бьёт спящий код; хост с чувствительными данными бьёт одноразовую коробку. Это твой контекст, и ни один внешний фид его не знает.

Зрелый рефлекс: ранг = серьёзность × эксплуатируемость × доступность, применяемые в этом порядке как фильтры. Начни с пересечения KEV-и-доступно — и 311 критичных схлопываются в очередь, которую реально разгрести.

НаходкаБаза CVSSЭксплуатируемостьДоступностьРеальный приоритет
RCE в краевом auth-прокси9.8В CISA KEV, активноИнтернет-фейсингP0 — патчить сейчас
RCE во встроенной либе9.8Нет эксплойта, низкий EPSSПуть кода недостижимНизкий — планово
Обход авторизации в логине6.5Опубликован PoCИнтернет, чувствительноВысокий — на неделе
Утечка инфо во внутр. тулзе5.3Нет эксплойтаТолько VPN, малоценноБэклог / принять

Две строки с CVSS 9.8 — это весь урок: одинаковые базовые баллы, противоположные приоритеты, потому что эксплуатируемость и доступность растаскивают их в стороны. Ранжируй только по базовому баллу — и будешь брать их в порядке подбрасывания монетки; ранжируй по полной картине — и очередь очевидна.

SLA: часы, делающие «потом» подотчётным

Приоритет без срока — это пожелание. SLA на устранение — это обязательство, что находка заданной серьёзности будет закрыта в фиксированном окне, и оно существует, чтобы остановить медленную утечку, где «мы до этого доберёмся» тихо становится «оно открыто уже 400 дней». Типичные уровни выглядят так: критично / активно эксплуатируется → 7–15 дней, высоко → 30 дней, средне → 90 дней, низко → следующий плановый цикл. (Обязывающие директивы CISA для федеральных агентств используют ровно эту форму — записи KEV на жёстких фиксированных сроках — и это здравый дефолт, чтобы перенести в частный SLA.)

Само число — это компромисс, а не закон физики. Патчишь слишком быстро — рискуешь выкатить сломанное обновление в прод без окна тестирования; патчишь слишком медленно — оставляешь окно эксплойта открытым. Зрелый ход — сделать SLA уровневым по серьёзности и с учётом исключений: большинство находок едут на стандартных часах, а всё, что не успевает к сроку, получает явное, владеемое, ограниченное по времени исключение с компенсирующим контролем — никогда не молчаливый сдвиг. SLA, который ты постоянно нарушаешь и никогда не измеряешь, хуже, чем его отсутствие, потому что он производит ложную уверенность.

Почему это работает

Почему бы не пропатчить всё немедленно и не пропустить приоритизацию совсем? Две причины. Первая — пропускная способность: реальный парк генерирует куда больше находок, чем любая команда способна обработать, поэтому что-то откладывается, выбираешь ты это или нет, — приоритизация лишь делает выбор осознанным, а не случайным. Вторая — радиус поражения: каждый патч — это изменение, а изменения ломают вещи. Поспешное обновление ядра, уронившее платёжный кластер, может стоить дороже уязвимости, которую оно закрыло. Приоритизация — не способ делать меньше работы; это способ потратить фиксированный, дефицитный бюджет на устранение там, где он покупает максимум снижения риска за час.

Проверь, затем замкни цикл

«Пропатчено» — это событие деплоя. «Исправлено» — это наблюдаемое состояние. Разрыв между ними — место, где программы тихо проваливаются: патч, не применившийся на 12 из 200 хостов, изменение конфига, откаченное следующим деплоем, образ контейнера, пересобранный из всё ещё уязвимого базового. Проверка пересканирует затронутые активы и подтверждает, что находка действительно исчезла — и только тогда тикет закрывается. Результат проверки утекает обратно в обнаружение, что и делает это циклом, а не списком: тот же скан, что подтверждает сегодняшний фикс, выявляет завтрашнюю новую находку.

Эта обратная связь — ещё и то, как ты измеряешь саму программу. Важны не «сколько у нас CVE» — это число безгранично и деморализует. Важны среднее время до устранения (MTTR) по серьёзности, доля находок, закрытых в рамках SLA, и частота рецидивов (находки, которые возвращаются, потому что фикс не прижился). Программа, отчитывающаяся этим, может ответить «становимся ли мы безопаснее?» с доказательствами; та, что отчитывается сырыми числами, может ответить лишь «работает ли ещё сканер?».

Выбери лучший вариант

Сканер возвращает две находки CVSS 9.8. (A) RCE в твоём интернет-фейсинг auth-прокси, числящийся в каталоге CISA KEV как активно эксплуатируемый. (B) RCE во вкомпилированной библиотеке, чей путь кода никогда не достигается, без известного эксплойта и с почти нулевым EPSS. У тебя хватает времени аккуратно пропатчить одно за спринт. Что идёт первым и на каком основании?

Викторина

Почему базового балла CVSS самого по себе недостаточно для приоритизации устранения?

Викторина

Команда выкатывает патч для критичного CVE по всему парку и сразу закрывает тикет. Через месяц аудитор находит этот CVE всё ещё присутствующим на 12 из 200 хостов. Какую фазу они пропустили и почему это важно?

Расставь шаги по порядку

Упорядочь цикл управления уязвимостями от первой фазы до фазы, которая возвращается в первую:

  1. 1 Обнаружить — инвентаризировать активы, затем сканировать на находки
  2. 2 Приоритизировать — ранг по серьёзность × эксплуатируемость × доступность
  3. 3 Устранить — патч / настройка / компенсация под часы SLA
  4. 4 Проверить — пересканировать, подтвердить фикс, вернуть в обнаружение
Вспомните перед уходом
  1. 01
    Пройди по четырём фазам цикла управления уязвимостями и объясни, почему проверка — и стрелка обратно к обнаружению — это часть, превращающая скан в программу.
  2. 02
    У тебя две находки CVSS 9.8 и время пропатчить одну. Как решаешь и что это раскрывает про CVSS, KEV, EPSS и доступность?
Итог

Управление уязвимостями — замкнутый цикл, а не ежеквартальный скан: обнаружить (инвентаризация, затем скан), приоритизировать, устранить под SLA, проверить и вернуть результат в обнаружение. Зрелый навык — приоритизация: базовый балл CVSS это серьёзность, а не риск, и лишь малая доля CVE вообще эксплуатируется, поэтому ранжируй по серьёзность × эксплуатируемость × доступность, начиная с пересечения каталога KEV от CISA (активно эксплуатируемые CVE) и того, что действительно достижимо в твоём окружении. Так две идентичные находки CVSS 9.8 получают противоположные приоритеты. Устранение едет на уровневом по серьёзности SLA (критично/эксплуатируется — за дни, высоко — за месяц, ниже — по циклу) с явными, владеемыми исключениями вместо молчаливых сдвигов, потому что каждый патч — это ещё и изменение, способное сломать прод. А проверка не обсуждается: «пропатчено» это деплой, «исправлено» это пересканированное, подтверждённое состояние — поэтому ты измеряешь MTTR и долю в рамках SLA, а не безграничный счётчик открытых CVE. В следующий раз, когда сканер вручит тебе 4300 находок, твой первый вопрос — не «какой самый высокий балл», а «какие из них эксплуатируются и доступны, и могу ли я доказать, что они закрыты».

Практика

Начни сверху. Задачи идут от простого к сложному: вспомнить факт, применить к случаю, затем senior-уровень. Открой, попробуй, потом открой ответ.

вспомнитьприменитьуглубить0 из 6 завершено
Связанные уроки

Что-то непонятно?

Задай вопрос по этому уроку. Вопросы анонимны и попадают напрямую автору — урок станет лучше.

хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources2
expand
  1. 01
  2. 02

Trademarks belong to their respective owners. Editorial reference only.