Доступность как доказательство

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

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

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

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

Уровень 1

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

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

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

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

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

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

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

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

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

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

Объединения хэша узла

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

Хэш узла

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) для всех путей. Неизвестные узлы способствуют оценке риска, а не игнорируются.

DSSE Подписанные доказательства

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

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

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

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

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

Проверки времени выполнения eBPF

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

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

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

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

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

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

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

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

Готовы сократить количество ложных срабатываний на 70–90 %?

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