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

Какво блокира доставянето — първо достижимата, некоригирана и значима за политиката експозиция.

Останалите са на един филтър разстояние.

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

Работният набор

Седем находки влизат в работния набор на екрана по-долу. Една блокира: тя е достижима и некоригирана. Другите шест са некоригирани, но не са показани като достижими — остават в набора, подредени по-ниско и никога скрити.

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 доставя пътя за приемане.

  • • Tetragon-базирана eBPFExtended Berkeley Packet Filter — технология на ядрото на Linux, която изпълнява изолирани програми за високопроизводителен мониторинг и анализ по време на изпълнение без модули на ядрото инструментация
  • • Записва symbol_id, code_id, hit_count, loader_base
  • • Запазваща поверителност: не се улавят стойности на аргументи

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

Неизвестни като първокласно състояние

Когато анализът не може да определи достижимост, неопределеността се проследява явно — не се скрива или тихо приема за безопасна.

Кошница за достижимостТегло по подразбиране
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, за всеки вердикт — включително премахнатите
  • • Вердиктът захранва контролната точка на изданието, а Наблюдение продължава да сравнява работещия хеш с одобрения след разгръщането

Какво не прави Stella Ops

Trivy обхваща Git хранилища, виртуални машини и Kubernetes цели, както и сканиране за неправилни конфигурации и тайни. Stella Ops не ги обхваща. Нейният обхват е образи на контейнери и моментни снимки на файлови системи с подписани, възпроизводими доказателства за всеки вердикт.

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

Реализация: свързване по хешове на възли

Доказателствата за достижимост са съдържателно-адресирани за дедупликация и проверка. Хешовете на възли позволяват ефективно сравняване между версии. Хеш на възел SHA256(normalize(purl) + ":" + normalize(symbol)) Хеш на път SHA256(entryNodeHash + ":" + joinedIntermediateHashes + ":" + sinkNodeHash) Топ-K значими пътища се запазват в пакета с доказателства. Пътищата се ранкират по честота на изпълнение (от средата по време на изпълнение) или дълбочина на извикване (от статичния анализ).
Read more

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

Хеш на възел

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

Хеш на път

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

Топ-K значими пътища се запазват в пакета с доказателства. Пътищата се ранкират по честота на изпълнение (от средата по време на изпълнение) или дълбочина на извикване (от статичния анализ).

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

Всеки анализ на достижимост произвежда криптографски подписано доказателство, съхранено в съдържателно-адресирано хранилище. 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

Държан отговорен пред публикувана еталонна истина

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

Същото дърво съдържа и инструмента, който оценява класификациите по класове — прецизност и пълнота, а не едно смесено число. Тъй като корпусът, етикетите и договорът за класовете са публични, не е нужно да приемате нашето им тълкуване: сканирайте същата еталонна истина със собствената си инсталация и сравнете резултата с публикуваните очаквани отговори.

Как се прави това сравнение е стъпка 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, кандидат за издание.