6.4 Метрики управления безопасностью и уязвимостями
Обзор и мотивация
Эта тема закрывает часть 6, расширяя ту же дисциплину надёжности, которую построила эта часть, установку целей, сочетание со страховочными метриками, честное сообщение инцидентов, на отдельный, но тесно связанный риск: не откажет ли система сама по себе, а заставит ли кто-то её отказать, или эксплуатирует её, намеренно. Метрики управления уязвимостями измеряют, насколько хорошо организация находит и исправляет слабости безопасности до того, как они эксплуатируются: сколько уязвимостей существует, насколько они серьёзны и, критически, как быстро они устраняются после обнаружения, поскольку известная, но не исправленная уязвимость это постоянный, количественно измеримый риск, который организация решила нести, сознательно или через пренебрежение.
Центральная забота этой темы напрямую параллельна обращению темы 4.4 с находками статического анализа: сырое число уязвимостей плохая метрика, смешивающая тривиальные и критические проблемы, и она подвержена именно тем же рискам манипулирования, сужению определения, подавлению и манипулированию порогом, которые описывает тема 1.2 в общем. Конкретное дополнение, которого требуют метрики безопасности, это время до устранения, отслеживаемое против серьёзности, поскольку критическая уязвимость, месяцами сидящая без исправления, представляет принципиально другой риск, чем та же уязвимость, пойманная и исправленная в течение дня, информация, которую одно простое число передать не может.
Для крупных команд метрики безопасности несут последствия за пределами непосредственного технического риска: корпоративные организации сталкиваются с договорной и репутационной уязвимостью от взлома, а государственные организации сталкиваются с последствиями для национальной безопасности, правовыми и для общественного доверия, делающими метрики безопасности делом подлинного общественного интереса, а не просто внутренней инженерной заботой. Эта тема относится к управлению уязвимостями с той же строгостью и той же дисциплиной сочетания со страховочной метрикой, которую эта книга применяет на протяжении всего изложения, поскольку метрики безопасности подвержены каждому риску манипулирования, который описывает эта книга, с соответственно более высокими ставками, когда это манипулирование удаётся.
Ключевые принципы
- Время до устранения по серьёзности важнее сырого числа уязвимостей. Критическая проблема, месяцами не исправленная, принципиально другой риск, чем та же проблема, быстро пойманная и исправленная.
- Метрики безопасности подвержены тем же рискам манипулирования, что и находки статического анализа (тема 4.4), с более высокими ставками, когда манипулирование удаётся.
- Классификация серьёзности нуждается во внешних, стандартизированных критериях, где это возможно, а не чисто внутреннем суждении, способном дрейфовать к снисходительности.
- Уязвимость, раскрытая и быстро исправленная, признак здорового процесса, а не провал, который нужно скрывать. Наказание за раскрытие отговаривает от сообщения, от которого зависит вся эта система.
- Долг безопасности это категория технического долга (тема 4.5), и он должен конкурировать за приоритизированную мощность устранения на той же явной, количественно измеренной основе.
Рекомендации
Отслеживайте время до устранения по серьёзности как основную метрику
Для каждой обнаруженной уязвимости записывайте её серьёзность (используя стандартизированную шкалу, такую как Общая система оценки уязвимостей (CVSS), где применимо) и отслеживайте время от обнаружения до подлинного устранения, не до закрытия заявки или объединения исправления, ещё не развёрнутого. Устанавливайте явные цели времени устранения по серьёзности, обычно измеряемые в днях для критических проблем и неделях для проблем более низкой серьёзности, и отслеживайте соответствие этим целям как основную метрику здоровья безопасности, а не сырое, невзвешенное число уязвимостей.
Используйте стандартизированную оценку серьёзности вместо чисто внутреннего суждения
Там, где доступна стандартизированная внешняя система оценки вроде CVSS, используйте её как основу для классификации серьёзности, а не полагайтесь полностью на внутреннее, потенциально непоследовательное суждение. Это отражает дисциплину классификации утёкших дефектов темы 5.1 и дисциплину классификации инцидентов темы 6.2, применённую здесь конкретно к безопасности, и это сопротивляется тому же риску снисходительного дрейфа, против которого предупреждают те темы, поскольку внешне закреплённую оценку труднее тихо пересмотреть вниз, чем чисто внутреннюю.
Стройте подлинно некарательную культуру раскрытия уязвимостей и внутреннего сообщения
Применяйте принцип безвиновного разбора инцидента из темы 6.2 напрямую к безопасности: инженер, обнаруживающий и сообщающий об уязвимости, которую он сам внёс, или исследователь, ответственно раскрывающий найденную извне, должен рассматриваться как предоставляющий ценную услугу, а не признающийся в провале. Наказание за раскрытие, внутреннее или от внешних исследователей, надёжно отговаривает именно от того сообщения, от которого зависит вся система управления уязвимостями, загоняя реальный риск в подполье, а не в управляемый процесс устранения.
Относитесь к долгу безопасности как к категории внутри вашего бэклога технического долга
Включайте известные, принятые с риском уязвимости, сознательно ещё не устранённые из-за конкурирующих приоритетов, в тот же видимый, количественно измеренный бэклог технического долга, описанный в теме 4.5, с той же формулировкой стоимости исправления против стоимости несения. Это предотвращает исчезновение риска безопасности либо в невидимый, незадокументированный статус «мы знаем об этом», либо нечестную конкуренцию против работы над функциями без явного, количественно измеренного кейса для его приоритета.
Сочетайте метрики уязвимостей с контекстом подверженности и эксплуатируемости
Не каждая уязвимость с одинаковой номинальной оценкой серьёзности несёт одинаковый фактический риск: критическая уязвимость во внутреннем инструменте без внешней сетевой подверженности это другой риск, чем та же номинальная серьёзность в обращённом к интернету сервисе, обрабатывающем клиентские данные. Где осуществимо, взвешивайте приоритизацию по фактической подверженности и контексту эксплуатируемости, а не только по оценке серьёзности, так чтобы мощность устранения концентрировалась на подлинно самых высокорисковых пунктах в первую очередь.
Компромиссы: плюсы и минусы
| Подход | Плюсы | Минусы |
|---|---|---|
| Сырое число уязвимостей | Просто сообщать | Смешивает тривиальные и критические проблемы; легко подделывается подавлением |
| Отслеживание, взвешенное по серьёзности, время до устранения | Отражает фактическую подверженность риску со временем | Требует дисциплинированной, последовательной классификации и отслеживания |
| Чисто внутреннее суждение серьёзности | Гибко, адаптировано к контексту | Склонно к снисходительному дрейфу и непоследовательности между командами |
| Стандартизированная внешняя оценка (например, CVSS) плюс взвешивание контекста | Последовательно, внешне закреплено, сопротивляется манипулированию | Требует дополнительного анализа контекста для подлинно точной приоритизации |
Центральное напряжение: последовательность против контекста. Чисто стандартизированный подход оценки последователен и устойчив к манипулированию, но может упустить подлинный контекст, подверженность и эксплуатируемость, определяющий фактический риск; чисто контекстуальный, внутренне оцениваемый подход захватывает нюанс, но склонен к тому же риску снисходительного дрейфа, против которого эта книга предупреждает для каждой другой метрики, зависящей от классификации. Разрешайте напряжение, закрепляясь на стандартизированной оценке как последовательной базовой линии, затем применяя сверху задокументированное, проверяемое аудитом взвешивание контекста, а не одну из крайностей по отдельности.
Вопросы для обсуждения в команде
Отслеживаем ли мы время до устранения по серьёзности, или только сырое число уязвимостей? Откройте вашу фактическую текущую метрику и проверьте, различает ли она критическую проблему, месяцами сидящую без исправления, от исправленной в течение дня, поскольку сырое число относится к этим очень разным рискованным ситуациям одинаково.
Используем ли мы стандартизированную внешнюю систему оценки серьёзности, или классификация полагается на чисто внутреннее, потенциально непоследовательное суждение? Если чисто внутреннее, обсудите, что изменило бы принятие стандарта вроде CVSS в вашей текущей практике классификации.
Чувствовал бы себя инженер, внёсший и затем сообщивший об уязвимости, в безопасности, делая это, или он боялся бы наказания? Это прямая, конкретная для безопасности версия вопроса безвиновной культуры темы 6.2, и честный ответ здесь имеет огромное значение для того, можно ли вообще доверять вашим данным уязвимостей.
Есть ли у нас видимый, количественно измеренный бэклог известных, принятых с риском уязвимостей, или статус «мы знаем об этом» тихо становится невидимым и неадресованным со временем? Проверьте, отслеживается ли ваш долг безопасности с той же строгостью, что общий бэклог технического долга (тема 4.5).
Учитывает ли наша приоритизация устранения фактическую подверженность и эксплуатируемость, или она полагается чисто на номинальную оценку серьёзности независимо от контекста? Выберите реальный пример, где две уязвимости со схожей номинальной серьёзностью несли очень разный фактический риск, и обсудите, правильно ли приоритизировал бы их ваш текущий процесс.
Дрейфовала ли когда-либо классификация серьёзности уязвимости вниз со временем без ясного обоснования? Это отражает паттерн манипулирования определением, против которого предупреждают и тема 1.2, и тема 6.2; проведите аудит выборки ваших недавних классификаций на этот конкретный риск.
Отраслевой взгляд
Стартап. Формальные процессы управления уязвимостями часто не нужны очень рано, но принятие базового автоматизированного сканирования зависимостей и простой, честной внутренней нормы сообщения с самого начала стоит мало и предотвращает невидимое накопление долга безопасности до того, как у команды появится мощность адресовать его систематически.
Малый бизнес. Большинство современных платформ разработки включают бесплатное или недорогое автоматизированное сканирование уязвимостей для зависимостей; включите это рано и отслеживайте время до устранения для всего, обозначенного как критическое, даже без выделенной функции безопасности или сложного инструментария.
Корпорация. Последовательная, стандартизированная оценка серьёзности и подлинно некарательная культура раскрытия обе существенны и обе труднее поддерживать в масштабе, где непоследовательность по десяткам команд и культурный дрейф к поиску виноватых после серьёзного инцидента постоянные риски. Инвестируйте в выделенную функцию управления безопасностью для поддержания последовательности классификации и активной защиты культуры раскрытия.
Государство. Метрики безопасности здесь часто напрямую пересекаются с национальной безопасностью, регуляторным соответствием и общественным доверием, а серьёзная, неправильно обработанная уязвимость может иметь последствия далеко за пределами типичного взлома частного сектора. Поддерживайте строгую, внешне закреплённую классификацию серьёзности, активно защищайте внутреннюю и внешнюю культуру раскрытия и относитесь к долгу безопасности с прозрачностью и строгостью приоритизации, которую рекомендует эта тема, поскольку незадокументированная, тихо принятая критическая уязвимость в общественной инфраструктуре подлинно серьёзный, проверяемый аудитом риск.
Примеры
Корпорация. Команда безопасности компании-разработчика программного обеспечения годами сообщала руководству только сырое число уязвимостей, число, остававшееся плоским, создавая ложное чувство стабильности. Пересмотренный анализ, взвешенный по серьёзности, время до устранения, раскрыл, что, хотя общее число было плоским, критические уязвимости занимали в среднем более девяноста дней на устранение, далеко за пределами любой разумной цели, поскольку они безуспешно конкурировали против работы над функциями в каждом цикле планирования без выделенной, защищённой мощности. Установление жёсткой цели устранения за 7 дней для критических уязвимостей, подкреплённой защищённой мощностью устранения долга безопасности, отражающей модель выделения технического долга из темы 4.5, снизило среднее время устранения критических уязвимостей до менее пяти дней в течение двух кварталов.
Государство. Национальное инфраструктурное агентство обнаружило, после внешнего аудита безопасности, что внутренние инженеры неформально избегали сообщать об уязвимостях, обнаруженных в собственном коде, опасаясь, что это плохо отразится на их обзорах производительности, прямую параллель паттерну движимого обвинением недосообщения инцидентов из темы 6.2. Агентство установило явную, публично сообщённую политику, защищающую внутренних сообщающих об уязвимостях от любых последствий для производительности, смоделированную напрямую по безвиновной практике реагирования на инциденты, и внутренние сообщения об уязвимостях существенно выросли в течение следующего года, результат, который руководство агентства правильно интерпретировало как доказательство улучшенного обнаружения и честного сообщения, а не доказательство снижающегося качества кода, избежав естественного, но ошибочного вывода, что растущее число должно означать, что дела пошли хуже.
Бизнес-кейс: мотивация, ROI и TCO
Отдача от тщательного, хорошо классифицированного, честно сообщаемого управления уязвимостями это избегнутая стоимость взлома, для серьёзного инцидента безопасности часто во много раз превышающая стоимость проактивного устранения, наряду с избегнутым регуляторным, договорным и репутационным ущербом. Пример компании-разработчика программного обеспечения выше показывает конкретный механизм: долг безопасности годами тихо проигрывал конкуренцию приоритизации против работы над функциями, именно тот паттерн, против которого предупреждает тема 4.5 для технического долга в целом, пока защищённая мощность устранения не исправила это напрямую.
Полная стоимость владения включает инструментарий автоматизированного сканирования, защищённую мощность устранения, которую рекомендует выделять эта тема, и устойчивую культурную инвестицию в некарательную практику раскрытия. Эта стоимость скромна по сравнению со стоимостью серьёзной, успешно эксплуатированной уязвимости, которую проактивное, хорошо приоритизированное устранение поймало бы и исправило задолго до того, как её можно было бы эксплуатировать.
Антипаттерны и ловушки
- Отслеживание только сырого числа уязвимостей: смешивает тривиальные и критические проблемы и даёт ложное чувство стабильности или кризиса независимо от фактического риска.
- Чисто внутренняя, нестандартизированная классификация серьёзности: склонна к снисходительному дрейфу и непоследовательности между командами.
- Наказание за раскрытие уязвимостей, внутреннее или внешнее: загоняет реальный риск в подполье, а не в управляемый процесс устранения.
- Долг безопасности без видимого, количественно измеренного бэклога: проигрывает конкуренцию приоритизации против работы над функциями по умолчанию.
- Приоритизация только по номинальной оценке серьёзности, игнорирование контекста подверженности и эксплуатируемости: неправильно направляет ограниченную мощность устранения.
- Интерпретация растущего числа сообщений об уязвимостях как доказательства снижающегося качества без проверки, не улучшилось ли само сообщение: конкретный пример ловушки искажающей переменной из темы 1.6.
Модель зрелости
- Уровень 1, Инициация: Уязвимости отслеживаются, если вообще, как сырое число без взвешивания по серьёзности, без отслеживания времени устранения и с карательной культурой раскрытия.
- Уровень 2, Развитие: Некоторая классификация серьёзности существует, но стандарты непоследовательны, а время устранения не отслеживается против явных целей.
- Уровень 3, Стандартизация: Стандартизированная, внешне закреплённая оценка серьёзности и явные цели времени устранения по серьёзности применяются последовательно, с подлинно некарательной культурой раскрытия.
- Уровень 4, Управление: Долг безопасности отслеживается в видимом, количественно измеренном бэклоге с защищённой мощностью устранения; приоритизация учитывает подверженность и контекст эксплуатируемости, а не только серьёзность.
- Уровень 5, Оркестрация: Организация может указать на конкретные, измеримые сокращения времени устранения критических уязвимостей и может продемонстрировать устойчивую, доверенную культуру раскрытия, производящую честные, всеобъемлющие данные уязвимостей.
Идеи для обсуждения
- Каково наше текущее среднее время до устранения для критических уязвимостей, и соответствует ли оно явной цели?
- Чувствовал бы себя инженер, внёсший уязвимость, в безопасности, сообщая о ней сам?
- Есть ли у нас видимый, количественно измеренный бэклог известного, принятого с риском долга безопасности?
- Учитывает ли наша приоритизация устранения фактическую подверженность, или только номинальную серьёзность?
- Дрейфовала ли когда-либо классификация серьёзности вниз со временем без ясного обоснования?
Основные выводы
- Отслеживайте время до устранения по серьёзности, а не сырое число уязвимостей, как основную метрику здоровья безопасности.
- Используйте стандартизированную внешнюю оценку серьёзности (такую как CVSS) как последовательную базовую линию, устойчивую к риску снисходительного дрейфа, к которому приглашает чисто внутреннее суждение.
- Стройте подлинно некарательную культуру раскрытия; наказание за сообщение загоняет реальный риск в подполье.
- Относитесь к долгу безопасности как к категории технического долга (тема 4.5), честно конкурирующей за защищённую мощность устранения.
- Взвешивайте приоритизацию по фактической подверженности и эксплуатируемости, а не только оценке серьёзности.
Источники и дальнейшее чтение
- Спецификация Общей системы оценки уязвимостей (CVSS) от FIRST.org: стандартизированный фреймворк оценки серьёзности, на который ссылается эта тема на протяжении всего изложения.
- Ресурсы OWASP Foundation по управлению уязвимостями и практике жизненного цикла безопасной разработки программного обеспечения.
- Site Reliability Engineering: How Google Runs Production Systems, под редакцией Бетси Бейер, Криса Джонса, Дженнифер Петофф и Найалла Ричарда Мёрфи (принципы безвиновной культуры, которые эта тема применяет к раскрытию в безопасности).
- NIST Special Publication 800-40, Guide to Enterprise Patch Management Planning: авторитетное руководство по практике устранения уязвимостей.