Smart-Diff - семантическая дельта риска

Что изменилось в возможности использования, а не в количестве CVE

Семантическая разница в достижимости и состоянии VEX между двумя выпусками.

Дельта счетчика показывает, сколько идентификаторов прибыло и ушло. Smart-Diff сравнивает два дайджеста как состояния риска: какие результаты сканирования получили или потеряли наблюдаемый путь выполнения, какие состояния VEX были перемещены и какие из этих изменений оценивает ваша политика.

Он меняет то, что рецензент читает в первую очередь, а не результаты сканирования ниже.

Где оно находится в цепочке доказательств

  1. Источник
  2. Сборка
  3. Сканирование
  4. Вердикт
  5. Решение
  6. Развертывание
  7. Watch

Дельта вычисляется, когда дайджест-кандидат проверяется на предмет продвижения выпуска: вердикт содержит то, что изменилось по сравнению с дайджестом, который он заменяет, и решение закрепляет это в доказательствах.

Два прочтения одного и того же выпуска

Наглядный пример – демонстрационная формулировка, а не измеренный результат.

Инструмент на основе подсчета сообщает

+3 CVE

При обновлении базового образа и одной зависимости добавились три идентификатора. Диаграмма показывает рост риска, но не определяет, может ли выполниться код хотя бы одного из них.

Smart-Diff отчеты

+3 CVE, эксплуатируемая поверхность сократилась

Три новых результата находятся на пути выполнения со статусом NOT OBSERVED. Один результат, который был REACHABLE и не исправлен в предыдущем дайджесте, исчез. Существенное изменение — именно это удаление.

Фразу «+3 CVE, эксплуатируемая поверхность сократилась» инструмент на основе количества сформировать не может. Для этого нужно знать, какой уязвимый код может выполниться, а не только число результатов.

Что на самом деле сравнивается

Smart-Diff — это разница между состоянием риска, привязанная к двум дайджестам изображений: выпуску, который вы запускаете, и выпуску, который вы предлагаете. ReachabilityАнализ, доказывающий, вызывается ли уязвимый код вашим приложением — фильтрация ложных срабатываний из шума сканеров

Изменения достижимого пути

Какие результаты получили или потеряли наблюдаемый путь выполнения между базовым и целевым дайджестами. Результат, переставший быть достижимым, — другое событие, чем полностью исчезнувший результат.

VEX переходы между состояниями

Перемещения утверждений, такие как «затронуто» в «не затронуто», записаны с обоснованием, лежащим в их основе — рецензент видит, почему состояние изменилось, а не только то, что оно переместилось.

Как Stella Ops обрабатывает SBOM и VEX →

Изменения, имеющие отношение к политике

Изменения, которые пересекают шлюз политики, оценивает ваша политика: изменения серьезности, доступность исправлений, класс достижимости. Изменения, которые ваша политика игнорирует, остаются в дельте и занимают более низкий рейтинг.

Привязывается к двум дайджестам, можно воспроизводить, как и любой вердикт.

Дельта записывается как подписанное DSSE свидетельство, определяющее базовый и целевой дайджесты изображений. Его полезная нагрузка содержит добавленные, удаленные и измененные результаты сканирования, результат шлюза политики достижимости и список существенных изменений. Повторите его, используя те же два дайджеста и те же доказательства, и вы получите ту же дельту. DSSEDead Simple Signing Envelope – простой гибкий стандарт для подписи произвольных данных криптографическими подписями

Smart-Diff ссылка на предикат →

Почему подсчет вводит в заблуждение

Релиз может добавить десять идентификаторов CVE в коде, который никогда не загружается, и удалить один результат, который был REACHABLE и не исправлен. Политика на основе количества заблокирует более безопасный релиз. Обнаружение существенного изменения риска ранжирует дельту, поэтому проверяющий сначала видит, что изменило эксплуатируемую поверхность. Остальные результаты доступны через один фильтр.

Контекст базовой совокупности результатов сканирования, а не дельт: ~85% критических уязвимостей контейнера находятся в неактивном коде (отчет Sysdig 2024 Container Security Report). Дельта, которая считает только идентификаторы, наследует этот шум по обе стороны сравнения.

Где приземляется дельта

Обзор выпуска перед его продвижением.

  1. Дайджест-кандидат достигает рассмотрения. Его вердикт содержит разницу с дайджестом, утвержденным в настоящее время в целевой среде.
  2. Рецензент сначала читает существенные изменения: что стало доступным, что перестало быть доступным, какие состояния VEX были перемещены и почему.
  3. При продвижении релиза дельта запечатывается в доказательствах решения. Когда позже кто-то спросит, почему был разрешен этот выпуск, в ответ будет указано, что изменилось с прошлого раза, а не просто снимок.

Как решения содержат доказательства →

Граница

Качество дельты зависит от покрытия анализа достижимости. Анализ охватывает Java, C#, Go, JavaScript, TypeScript и Python. Для других языков Smart-Diff всё равно фиксирует добавленные, удалённые и изменённые результаты между двумя дайджестами, но не заявляет об изменении эксплуатируемости и прямо сообщает об этом, вместо того чтобы отчитаться об отсутствии изменений.

Какие доказательства достижимости охватывают →