Достижимость как доказательство

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

Длинный хвост находится на расстоянии одного фильтра.

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

Рабочий набор

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

blocking = reachable × unfixed × policy-relevant

Stella Ops Экран экспозиции: рабочий набор из семи результатов сканирования, один отмечен блокировкой с состоянием REACHABLE, остальные удерживаются с состояниями NOT OBSERVED
Экран экспозиции, консоль v1.0-RC1 с демонстрационными данными. NOT OBSERVED не является «неуязвимым» — неизвестные остаются видимыми, пока доказательства не говорят об обратном.

REACHABLE

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

NOT OBSERVED

Судя по собранным доказательствам, путь к исполняемому файлу не найден. Это утверждение о доказательствах, а не об уязвимости. Результат сканирования сохраняет свое место в рабочем наборе.

Два рейтинга, один набор данных

Один и тот же рабочий набор обслуживает две работы. Переключение между ними меняет сортировку наверху — ничего не входит и не уходит.

Поставка

Ранжирование по факторам, блокирующим релиз: прежде всего достижимость, отсутствие исправления и значимость для политики.

Безопасный

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

Он меняет рейтинг и акцент, но не данные.

Откуда берётся доказательство

Статический анализ формирует вердикт при каждом сканировании. Двоичные символы и факты выполнения добавляют глубину, когда она вам нужна. CVECommon Vulnerabilities and Exposures – уникальный идентификатор публично известной уязвимости безопасности

Уровень 1

Статический анализ графа вызовов

Строит граф вызовов из скомпилированного байт-кода и из исходного кода, затем прослеживает пути от ваших точек входа к функциям, названным в бюллетене.

  • • Языки с графом вызовов: Go, Java, C#/.NET, JavaScript и TypeScript, Python, Rust, PHP, Ruby. На образ анализируется один язык. Остальные экосистемы попадают в категорию unknown — с оценкой, а не пропуском.
  • • Офлайн-извлечение уже: построение графа вызовов из дерева исходников в CLI поддерживает только Go и Rust и использует лексический уровень — набор инструментов SSA находится внутри scanner worker. Остальные языки анализирует конвейер сканирования, чей заранее извлечённый граф использует CLI.
  • • Python, JavaScript/TypeScript, Rust, PHP и Ruby анализируются по исходному тексту, и каждое ребро несёт свою достоверность — вы видите, какой уровень дал вердикт
  • • Рефлексия, динамические вызовы и виртуальная диспетчеризация за пределами известных реализаций не моделируются — каждый результат называет это ограничение
Уровень 2

Анализ двоичных символов

CLI-линия для нативного кода без исходников: таблицы символов ELF и имена функций из DWARF, x86, x64 и ARM64. Её находки самостоятельны и отделены от вердикта сканирования.

  • • Таблицы символов ELF и имена функций из DWARF
  • • Дизассемблирование x86, x64 и ARM64. Отладочная информация читается только из DWARF — без PDB
Уровень 3

Зонды eBPFExtended Berkeley Packet Filter — технология ядра Linux, выполняющая изолированные программы для высокопроизводительного мониторинга и анализа среды выполнения без модулей ядра во время выполнения

Подайте реальные данные выполнения — Stella Ops проверит и запечатает их как самое сильное доказательство достижимости. Зонды запускаете вы; RC1 поставляет путь приёма.

  • • Инструментарий eBPFExtended Berkeley Packet Filter — технология ядра Linux, выполняющая изолированные программы для высокопроизводительного мониторинга и анализа среды выполнения без модулей ядра на базе тетрагона.
  • • Записываетsymbol_id, code_id, hit_count, loader_base.
  • • Сохранение конфиденциальности: значения аргументов не фиксируются

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

Неизвестные как первоклассные State

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

Сегмент достижимостиВес по умолчанию
reachable:proven1.0
reachable:likely0.85
not-observed0.0

Выше — значит больше риска, а не больше уверенности: вес масштабирует оценку риска находки. Подтверждение во время выполнения не заменяет доказательство пути — оно повышает уверенность, приписанную вердикту. Там, где анализатор не наблюдал пути вовсе, Stella Ops сообщает не наблюдалось с подписанным заявлением о покрытии, но никогда «недостижимо»: отсутствие наблюдаемого пути не доказывает, что пути нет.

Рекомендация политики: рассматривать unknown как первоклассный вердикт, устанавливать явные пороговые значения для каждой серьезности и регистрировать причины переопределения рецензента в пакете доказательств.

Где вводятся операторы VEX

Заявления VEX от издателей присоединяются к тому же графу доказательств и нормализуются до пяти статусов — not_affected, affected, fixed, under_investigation, unknown — поэтому «в расследовании» — это состояние с последствиями, а не сноска. VEXVulnerability Exploitability eXchange – машиночитаемые утверждения о том, являются ли уязвимости реально эксплуатируемыми в вашем контексте

not_affected affected fixed under_investigation unknown

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

Как объединяются доказательства SBOM и VEX →

KEV и EPSS участвуют — они не решают

Списки CISA KEV и оценки EPSS являются сигналами эксплойтов рекомендательного уровня. Они повышают ранг и срочность результатов сканирования внутри рабочего набора. KEVKnown Exploited Vulnerabilities – каталог CISA активно эксплуатируемых уязвимостей EPSSExploit Prediction Scoring System – вероятностная оценка (0–100%), предсказывающая вероятность эксплуатации уязвимости

Exploit signals attach at the advisory level, not at the finding level. Open a CVECommon Vulnerabilities and Exposures – уникальный идентификатор публично известной уязвимости безопасности to read its advisory-level exploit data: the KEVKnown Exploited Vulnerabilities – каталог CISA активно эксплуатируемых уязвимостей listing and the EPSSExploit Prediction Scoring System – вероятностная оценка (0–100%), предсказывающая вероятность эксплуатации уязвимости score belong to the advisory, and they read the same for every service that carries the affected component.

Они не являются доказательством достижимости. Запись KEV в коде, который ваша служба никогда не загружает, меняет акцент, а не вердикт — если только в вашей политике не указано, что результаты сканирования с известными эксплойтами блокируются, несмотря ни на что. Блокировать могут два класса правил, и они независимы: список запрещённых CVE полностью игнорирует достижимость, а правило достижимости блокирует только при доказанном пути — reachable:likely и unknown через него не блокируют никогда, какие бы состояния ни перечисляла политика.

A policy gate can combine both kinds of answer in one rule: reachability state together with EPSSExploit Prediction Scoring System – вероятностная оценка (0–100%), предсказывающая вероятность эксплуатации уязвимости, KEVKnown Exploited Vulnerabilities – каталог CISA активно эксплуатируемых уязвимостей, and CVSSCommon Vulnerability Scoring System – оценка критичности от 0 до 10, показывающая серьёзность уязвимости thresholds. "Known-exploited and reachable" and "known-exploited regardless of reachability" are both expressible; which one you enforce is your policy, not a default we pick for you.

По сравнению со сканером в CI

Сканер отвечает: «Что сейчас находится на этом изображении». Это необходимо, но недостаточно для принятия решения о выпуске.

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

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

Что добавляет Stella Ops

  • • Результаты объединяются из 38 активных источников рекомендаций, а затем ранжируются по достижимости
  • • Подписанное DSSE воспроизводимое доказательство для каждого вердикта, включая удаленные.
  • • Вердикт передается шлюзу политики выпуска, и Watch продолжает сравнивать текущий дайджест с утвержденным после развертывания.

Чего Stella Ops не делает

Trivy охватывает репозитории Git, виртуальные машины и цели Kubernetes, а также неправильную конфигурацию и секретное сканирование. Stella Ops нет. Его областью применения являются образы контейнеров и снимки файловой системы с подписанными воспроизводимыми доказательствами для каждого вердикта.

Полное сравнение: Stella Ops против Trivy | Stella Ops против Grype

Реализация: объединение хэшей узлов

Достижимость свидетельство адресуется по содержимому для дедупликации и проверки. Хэши узлов позволяют эффективно различать версии. Хэш узла SHA256(normalize(purl) + ":" + normalize(symbol)) Хэш пути SHA256(entryNodeHash + ":" + joinedIntermediateHashes + ":" + sinkNodeHash) Значимые пути Top-K сохраняются в наборе доказательств. Пути ранжируются по частоте выполнения (на основе времени выполнения) или глубине вызова (на основе статики).
Read more

Достижимость свидетельство адресуется по содержимому для дедупликации и проверки. Хэши узлов позволяют эффективно различать версии.

Хэш узла

SHA256(normalize(purl) + ":" + normalize(symbol))

Хэш пути

SHA256(entryNodeHash + ":" + joinedIntermediateHashes + ":" + sinkNodeHash)

Значимые пути Top-K сохраняются в наборе доказательств. Пути ранжируются по частоте выполнения (на основе времени выполнения) или глубине вызова (на основе статики).

Реализация: подписанные доказательства

Каждый анализ достижимости создает криптографически подписанное доказательство, хранящееся в хранилище с адресацией по содержимому. DSSE?Dead Simple Signing Envelope – простой гибкий стандарт для подписи произвольных данных криптографическими подписями DSSE конверт с форматом предиката in-toto SLSA Возможность проверки аудиторами без доступа к сети Детерминированное воспроизведение дает побитово-идентичные результаты. Графики и трассировки заархивированы для автономной проверки Пути хранения с адресацией к содержимому cas://reachability_graphs/<hh>/<sha>.tar.zst cas://runtime_traces/<hh>/<sha>.tar.zst
Read more

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

  • DSSE конверт с форматом предиката in-toto SLSA
  • Возможность проверки аудиторами без доступа к сети
  • Детерминированное воспроизведение дает побитово-идентичные результаты.
  • Графики и трассировки заархивированы для автономной проверки

Пути хранения с адресацией к содержимому

cas://reachability_graphs/<hh>/<sha>.tar.zst

cas://runtime_traces/<hh>/<sha>.tar.zst

Проверяется по опубликованной эталонной истине

Классификатор достижимости проверяется по размеченному корпусу, который поставляется в публичном дереве исходного кода: восемь минимальных сервисов на Java, Node.js, Python, Go, .NET, Ruby, Rust и PHP, каждый с файлом меток, задающим для каждого CVE ожидаемый уровень — от R0, недостижимого в этом сервисе, до R4, достижимого от точки входа, — и обоснование.

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

Как провести это сравнение — шаг 2.1 пилотной оценки →

Реализация: зонды eBPF

Stella Ops принимает факты выполнения через потоковую конечную точку приёма и считает их самым сильным доказательством достижимости. RC1 не поставляет сборщик: зонды на базе Tetragon — это инструментация, которую запускаете вы, а достижимость работает без них за счёт статического и двоичного слоёв. Захваченные данные зонда symbol_id: канонический идентификатор символа code_id: идентификатор секции кода hit_count: частота исполнения loader_base: базовый адрес в памяти cas_uri: ссылка с адресацией по содержимому Зонды отправляют факты времени выполнения в POST /signals/runtime-facts/ndjson в виде потоковой передачи NDJSON. Каждое наблюдение содержит CAS URI для лежащего в основе артефакта.
Read more

Stella Ops принимает факты выполнения через потоковую конечную точку приёма и считает их самым сильным доказательством достижимости. RC1 не поставляет сборщик: зонды на базе Tetragon — это инструментация, которую запускаете вы, а достижимость работает без них за счёт статического и двоичного слоёв.

Захваченные данные зонда

symbol_id: канонический идентификатор символа

code_id: идентификатор секции кода

hit_count: частота исполнения

loader_base: базовый адрес в памяти

cas_uri: ссылка с адресацией по содержимому

Зонды отправляют факты времени выполнения в POST /signals/runtime-facts/ndjson в виде потоковой передачи NDJSON. Каждое наблюдение содержит CAS URI для лежащего в основе артефакта.

Начните со своего собственного рабочего набора

Наведите Stella Ops на изображение, которое вы отправляете сегодня, и прочитайте вердикты, которые оно подписывает. Если достижимость удаляет меньше, чем утверждается, вы тоже это увидите — каждое удаление имеет свое доказательство.

Бесплатный уровень: 3 среды и до 100 сканирований новых дайджестов за скользящие 24 часа, самостоятельное размещение. v1.0-RC1, релиз-кандидат.