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

Докажите, действительно ли вызывается уязвимый код

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

Что это значит для вашего бизнеса

Исправляйте только уязвимости, которые ваше приложение действительно может задеть — остальное пропускайте. Пакет „Стела“ доказывает, какие CVE достижимы, чтобы команда сосредоточилась на реальных рисках, а не на шуме сканеров. ReachabilityАнализ, доказывающий, вызывается ли уязвимый код вашим приложением — фильтрация ложных срабатываний из шума сканеров

30‑секундное резюме

До 70–90 %

Типичное снижение шума

Наблюдаемый диапазон зависит от стека и покрытия.

3

Слои анализа

Статические графы вызовов, бинарные символы, runtime eBPF‑пробы

100%

Подписано и воспроизводимо

Каждый вердикт достижимости — это доказательство, подписанное DSSE

Трехуровневый анализ

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

Уровень 1

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

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

  • • Поддержка языков: Go, Rust, C#, Java, Python, JavaScript, C/C++
  • • Обрабатывает виртуальную диспетчеризацию, вызовы интерфейса и отражение с консервативной аппроксимацией.
  • • Создает DAG с состоянием достижимости для каждого узла.
Уровень 2

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

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

  • • Извлечение таблицы символов из ELF, PE, Mach-O
  • • Перекрестные ссылки на информацию об отладке DWARF/PDB, если она доступна.
Уровень 3

Зонды eBPF во время выполнения

Дополнительное профилирование производства. Фиксирует фактические вызовы функций во время выполнения.

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

Результат: значительно меньше ложных срабатываний. Сосредоточьтесь на 12 достижимых CVE вместо 487 теоретических.

Implementation: node hash joins

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

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

Хэш узла

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

Хэш пути

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

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

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

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

Бакет достижимостиВес по умолчанию
Точка входа1.0
Прямой вызов0.85
Подтверждено в рантайме0.45
Неизвестно0.5
Недостижимо0.0

Итоговая оценка = max(bucket_weights) для всех путей. Неизвестные узлы способствуют оценке риска, а не игнорируются.

Матрица покрытия достижимости для шлюза политики

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

Язык/время выполненияСтатический путь вызоваБинарное/символическое свидетельствоДоказательства во время выполненияВорота по умолчанию, когда неизвестны
Го, Руст, C/C++Проверка прямого и транзитивного извлечения пути вызоваПроверка точности соответствия символа/идентификатора сборкиДополнительное подтверждение eBPF для услуг высокого рискаПересмотреть или заблокировать важные выводы политикой
Языки Java и JVMПроверка достижимости на уровне метода и случаев динамической отправки.Проверка сопоставления символов байт-кода/jarДля отражающих путей рекомендуется использовать трассировки времени выполнения.Направить неизвестных на полосу ручной проверки
.СЕТЬПроверка графа вызовов IL и происхождения пакетов.Проверка разрешения PDB/символов в сборках выпускаПодтверждение во время выполнения для сценариев обрезки/AOTПрежде чем принять решение, просмотрите неизвестные данные.
Узел, Python, Руби, PHPПроверка точек входа в структуру и границ динамического импорта.Доказательство символа является частичным для динамической отправки.Настоятельно рекомендуется использовать трассировки времени выполнения.Сохранять неизвестное как явное состояние и требовать одобрения

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

Implementation: signed proofs

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

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

  • DSSEDead Simple Signing Envelope – простой гибкий стандарт для подписи произвольных данных криптографическими подписями конверт с in-totoФреймворк для защиты цепочки поставок ПО путём проверки того, что каждый шаг был выполнен по плану и авторизованными участниками Формат предиката SLSASupply-chain Levels for Software Artifacts — фреймворк для обеспечения целостности программных артефактов по всей цепочке поставок
  • Возможность проверки аудиторами без доступа к сети
  • Детерминированное воспроизведение дает побитово-идентичные результаты.
  • Графики и трассировки заархивированы для автономной проверки

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

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

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

Implementation: eBPF probes

Дополнительный инструментарий на базе Tetragon фиксирует фактическое выполнение функций в производстве, предоставляя доказательства достижимости с высочайшей степенью достоверности. Захваченные данные зонда symbol_id: канонический идентификатор символа code_id: идентификатор секции кода hit_count: частота исполнения loader_base: базовый адрес в памяти cas_uri: ссылка с адресацией по содержимому Зонды отправляют наблюдения в /api/v1/observations пакетами. Каждое наблюдение включает URI CAS для базового артефакта.
Read more

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

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

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

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

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

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

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

Зонды отправляют наблюдения в /api/v1/observations пакетами. Каждое наблюдение включает URI CAS для базового артефакта.

Готовы сократить количество ложных срабатываний на существенно меньше?

Установить пакет „Стела“ и начните создавать подписанные доказательства достижимости с помощью трехуровневого анализа.