Podejście
Jak AllowGate podejmuje decyzje
AllowGate dla tych samych danych wejściowych zawsze daje tę samą odpowiedź. Decyzja, którą zobaczy audytor, to ta sama, od której zależy zablokowanie lub przepuszczenie procesu w Twoim CI. Ta strona wyjaśnia, w jaki sposób ta decyzja jest podejmowana.
Section 1
Pytanie
Każdy skaner odpowiada na to samo pytanie: „czy to CVE występuje?" Rzadko jednak jest to pytanie, na które naprawdę muszą odpowiedzieć zespoły bezpieczeństwa.
AllowGate odpowiada na inne: „czy ta podatność CVE może realnie zaszkodzić tej usłudze, w tym środowisku, przy tej ekspozycji i zgodnie z polityką tego zespołu?" Sposób postawienia pytania ma znaczenie. CVSS 9.8 w usłudze, która nie ma dostępu do sieci, nie nasłuchuje na żadnym porcie ani nie ma osiągalnej ścieżki wykonania podatnego kodu, nie stanowi tego samego zagrożenia co to samo CVE w publicznie dostępnym API obsługującym płatności. Proces triage'u, który sprowadza oba te przypadki do tego samego poziomu zagrożenia, przeciąża zespół, utrudnia priorytetyzację działań i wprowadza audyt w błąd.
Każda decyzja emitowana przez AllowGate wskazuje konkretną usługę, konkretny artefakt, konkretną wersję polityki i konkretne środowisko. To właśnie jest jednostka oceny. Nie ma globalnego „czy to CVE jest groźny?", jest tylko „czy to CVE jest akceptowalne tu i teraz."
Te same dane wejściowe. Ten sam wynik. Zawsze.
Section 2
Dwuetapowa ocena
Ocena przebiega w dwóch odrębnych fazach. Rozdzielenie ich pozwala jednocześnie zachować elastyczność (na poziomie usługi, tenanta i tagów) oraz zapewnić możliwość audytu (jedna efektywna polityka dla każdego CVE, ze stałymi regułami pierwszeństwa).
Faza 1 to ustalenie obowiązującej polityki. Zbierane są wszystkie reguły, których zakres odpowiada danej usłudze, środowisku, projektowi i tagom. Następnie są one walidowane i łączone w jedną efektywną politykę. Reguły nie są hierarchiczne. Reguła obowiązuje tylko wtedy, gdy wszystkie zadeklarowane przez nią pola zakresu pasują do ocenianego obiektu. Nic nie jest niejawnie dziedziczone.
Faza 2 to ocena CVE. Surowy wynik CVSS jest korygowany na podstawie kontekstu zarejestrowanego podczas skanowania (ekspozycja, osiągalność, uprawnienia środowiska uruchomieniowego, zastosowane mechanizmy ograniczające ryzyko, sygnały czasowe). W rezultacie powstaje skorygowany poziom istotności. Następnie jest on oceniany względem efektywnej polityki wyznaczonej w Fazie 1, przy użyciu stałego łańcucha priorytetów. Wynikiem jest jedna z decyzji: allow (zezwól), deny (odrzuć), undetermined (nierozstrzygnięte) lub filtered (odfiltrowanie - gdy zaufana deklaracja VEX mówi, że CVE nie dotyczy tego artefaktu).
To rozdzielenie ma kluczowe znaczenie. Faza 1 obejmuje wyłącznie logikę polityk i nie zależy od żadnego konkretnego CVE. Faza 2 jest jedynym miejscem, w którym sygnały kontekstowe wpływają na ostateczną decyzję.
Section 3
Kolejność decyzji
Łańcuch kolejności w Fazie 2 jest ustalony i uporządkowany. To nie jest funkcja punktacji ani miękka większość. Pierwszy pasujący krok wygrywa i wstrzymuje resztę.
- Krok 1 - Global Hard Deny. Absolutne blokady na poziomie platformy: najwyższy poziom krytyczności (critical) na publicznie dostępnej usłudze, podatności z listy KEV, wysoka krytyczność z osiągalnym kodem. Tych nie da się przesłonić, nawet potwierdzeniem na poziomie zarządu.
- Krok 2 - Deny Override. Jawne allow, ograniczone do usługi lub artefaktu, z dołączonym potwierdzeniem ryzyka. Omija zakresowe deny. Nie omija Kroku 1.
- Krok 3 - Scoped Deny. Reguła mówiąca: ta konkretna usługa, tag lub wzorzec CVE jest tutaj zablokowany, koniec.
- Krok 4 - Threshold. Jeśli skorygowany poziom krytyczności nie przekracza efektywnego progu dla tego zakresu, allow. Próg to najbardziej szczegółowy obowiązujący próg bazowy, ograniczony przez wybrany tier tenanta.
- Krok 5 - Threshold Override. Omija sprawdzenie progu (i tylko sprawdzenie progu) dla konkretnego CVE lub wzorca, z dołączonym uzasadnieniem i datą wygaśnięcia. Nie może omijać żadnego kroku deny.
- Krok 6 - Undetermined. Jeśli żaden krok nie rozwiązał decyzji, emituj undetermined. Wtedy rozstrzyga polityka środowiska tenanta. Mapowanie jest konfigurowane per środowisko przez tenanta, nie wbudowane na sztywno przez AllowGate; typowa konfiguracja to: produkcja rozstrzyga undetermined na deny, deweloperskie na allow.
Undetermined to sygnał zwrotny do zespołu, a nie werdykt. Oznacza, że żadna reguła nie obowiązuje dla tego CVE w tym zakresie, więc silnik odsyła do domyślnej polityki środowiska. Akcja: zaktualizuj politykę (dodaj scoped deny, podnieś próg), dodaj zakresowy wyjątek z odpowiednim poziomem potwierdzenia, lub dostarcz brakujący kontekst (dowód osiągalności, tag ekspozycji) i uruchom ponownie. Silnik nigdy po cichu nie przepuści CVE, o którym nie potrafi wnioskować; informuje Cię o tym, żebyś mógł zdecydować.
Przykład. Usługa payments-api na produkcji ma próg bazowy 5.0 (payments obsługuje dane kart), z jawnym scoped deny przypiętym do CVE-2024-51736, ponieważ analiza osiągalności nie jest jeszcze kompletna. Skan znajduje CVE-2024-51736 (CVSS 9.8) na tej usłudze. Silnik przechodzi przez łańcuch: w Kroku 1 nie pasuje żadna reguła systemowa; w Kroku 2 nie pasuje żadne deny override; w Kroku 3 scoped deny pasuje i łańcuch zostaje przerwany.
{
"cve_id": "CVE-2024-51736",
"service": "payments-api",
"environment": "prod",
"adjusted_score": 9.8,
"decision": "deny",
"decision_confidence": "high",
"winning_rule": {
"type": "scoped_deny",
"scope": { "service": "payments-api" }
},
"justification": [
"step1: no system rule or global_hard_deny matched",
"step2: no exception or deny_override matched",
"step3: scoped_deny matched (service=payments-api) -> deny"
]
}
Section 4
Ryzyko uwzględniające pewność sygnałów
Każdy sygnał kontekstowy niesie poziom pewności. Automatycznie wyprowadzony tag ekspozycji z manifestu runtime ma wysoką pewność. Heurystyka statyczna ze skanu manifestu w czasie buildu - średnią. Ręczna deklaracja operatora - niską. Pewność wynika ze źródła sygnału, nie z deklaracji autora reguły.
Modyfikatory dzielą się na dwie klasy. Twarde modyfikatory (ekspozycja, osiągalność oparta na dowodach, ograniczenie ryzyka przez sandbox, kontekst użycia oraz dane wywiadowcze dotyczące exploitów przekraczające próg danego poziomu) bezpośrednio wpływają na skorygowany poziom ważności (severity). Miękkie modyfikatory (dostępność PoC, ochrona przez WAF, wiek podatności, heurystyki rezydualne) wnoszą wkład podlegający ograniczeniu. Limit narzuca wybrany tier tenanta, a nie pojedyncze reguły.
stotne są tutaj dwa mechanizmy ochronne. Po pierwsze, miękkie modyfikatory nigdy nie mogą obniżyć skorygowanej oceny istotności poniżej minimalnego progu przypisanego do jej pierwotnej klasy; jedynym sposobem na dopuszczenie CVE o istotności przekraczającej ten próg jest jawne nadpisanie w postaci reguły deny override. Po drugie, jeśli którykolwiek z sygnałów składowych miał niską pewność, a jego usunięcie odwróciłoby decyzję, silnik emituje undetermined zamiast po cichu przepuszczać. Wtedy o dalszym postępowaniu decyduje polityka środowiska.
Ten sam mechanizm progu rozszerza się na systemy technologii operacyjnej (OT). Zasób sterujący procesem fizycznym może posiadać atestowaną klasyfikację safety-consequence w zakresie od low do safety_critical. Podnosi ona próg niezależnie od progu IT danego tieru; obowiązującym progiem jest większa z tych dwóch wartości. Jeśli klasyfikacja ma niską pewność, kieruje decyzję do stanu undetermined, zamiast zastosowania zaniżonego progu. Dla działającego zasobu safety-critical odbiorcy decyzji nie mogą interpretować deny jako polecenia zatrzymania, odłączenia ani innego przerwania sterowanego procesu; eskalacja musi odbywać się poza tym mechanizmem. Zasoby IT nie niosą klasyfikacji i zachowują się jak dotychczas.
W praktyce oznacza to, że sygnał o niskiej pewności nigdy nie może niepostrzeżenie zmienić decyzji z deny na allow. Albo nie wpłynie na wynik, albo wymusi jawne podjęcie decyzji.
Section 5
Wyjątki, pod właściwą kontrolą
Zmęczenie zarządzaniem wyjątkami jest faktem. Dziś większość zespołów śledzi wyjątki w arkuszu kalkulacyjnym z listą CVE, które ktoś kiedyś uznał za „akceptowalne”. Trzy lata później nikt już nie pamięta dlaczego, a audytor chce poznać uzasadnienie.
AllowGate eliminuje potrzebę takich arkuszy. Wyjątki są pierszoplanowymi obiektami polityki, nie komentarzami w zgłoszeniu. Każdy wyjątek musi wskazywać konkretny CVE, musi być ściśle ograniczony (do usługi lub identyfikatora artefaktu, nigdy jedynie do tagu), musi mieć datę wygaśnięcia oraz zawierać potwierdzenie akceptacji ryzyka na poziomie adekwatnym do bazowego wyniku CVSS podatności: zespół dla wyników poniżej 7.0, dział bezpieczeństwa dla 7.0–9.0, kierownictwo wykonawcze dla 9.0 i wyżej. Poziom jest weryfikowany podczas wczytywania polityki.
Wygasłe wyjątki są wyłączane z procesu oceny. Bez okresu karencji. Aby uwidocznić nadchodzącą regresję jeszcze przed zmianą decyzji bramki, AllowGate dołącza wskazówkę next_actions do każdej decyzji, która byłaby inna, gdyby wygasły wyjątek nadal obowiązywał. Zespół widzi nadchodzącą zmianę na wiele tygodni przed audytem.
exceptions:
- cve: CVE-2024-51736
scope:
service: payments-api
expires_at: 2026-06-01
risk_acknowledgment:
level: security
by: ops@example.com
reason: vulnerable code path is unreachable from public traffic
Section 6
Wynik: łańcuch uzasadnienia
Każdej decyzji towarzyszy łańcuch uzasadnienia. To nie jest wpis w logu. To ustrukturyzowany zapis, który wskazuje nadrzędną regułę decyzyjną, reguły pasujące, lecz nadpisane, poziom ryzyka przed i po jego korekcie, wersje polityk i ustawień tenanta, które doprowadziły do podjęcia decyzji, snapshoty źródeł danych CVE oraz katalogu KEV obowiązujących w danym momencie, sygnaturę kontekstu oraz listę rekomendowanych dalszych działań.
To właśnie taki materiał dowodowy jest najczęściej wymagany przez audytorów. SOC 2 CC7.1 wymaga udokumentowanych procedur wykrywania i oceny podatności. ISO 27001 A.8.8 wymaga możliwego do prześledzenia procesu zarządzania podatnościami technicznymi. PCI DSS 6.3 wymaga klasyfikacji wykrytych podatności oraz dokumentowania zastosowanych działań naprawczych. DORA RTS w zakresie zarządzania ryzykiem ICT wymaga, aby decyzje związane z ryzykiem były możliwe do jednoznacznej identyfikacji i śledzenia. Łańcuch uzasadnienia spełnia wszystkie te wymagania, eliminując potrzebę utrzymywania oddzielnego procesu gromadzenia materiału dowodowego.
{
"decision": "deny",
"decision_confidence": "high",
"winning_rule": {
"type": "scoped_deny",
"scope": { "service": "payments-api" }
},
"matched_rules": [
{ "type": "threshold", "scope": { "service": "payments-api" }, "value": 5.0 },
{ "type": "threshold_override", "scope": { "service": "payments-api" } },
{ "type": "scoped_deny", "scope": { "service": "payments-api" } }
],
"overridden_rules": [],
"justification": [
"severity: raw=9.8, sum_hard=0, sum_soft=0, adjusted=9.8",
"floor: floor=7 not applied (pre_floor=9.8)",
"step3: scoped_deny matched -> deny"
],
"next_actions": [
"exception_invalid_ack_level: required=executive, actual=security"
]
}
Section 7
Determinizm
Te same dane wejściowe, ten sam wynik, zawsze. To nie jest slogan, lecz właściwość egzekwowana przez silnik decyzyjny i weryfikowana przez audytorów.
Aby umożliwić odtworzenie procesu decyzyjnego, każda decyzja jest przypisana do trzech niezależnych wersji: polityki warstwy platformowej, polityki warstwy tenanta oraz koperty parametrów, która dostarczyła progi i wagi ufności. Dodatkowo zapisywane są: skrót (digest) źródła danych CVE, snapshot katalogu KEV oraz pełny kontekst oceny (w tym tożsamość skanera, który wygenerował oceniane dane). Odtworzenie procesu po wielu miesiącach, przy użyciu tych samych wersji i tych samych snapshotów, musi prowadzić do identycznej decyzji.
Kontekst jest zapisywany w momencie podjęcia decyzji, a nie odtwarzany później na podstawie bieżących danych. Tagi ekspozycji, uprawnienia środowiska uruchomieniowego oraz dowody osiągalności (reachability) są zapisywane jako elementy rekordu decyzji. Jeśli dana usługa jutro zmieni status z wewnętrznej na dostępną z Internetu, nie wpłynie to wstecznie na decyzje podjęte wcześniej. Podobnie dodanie podatności do katalogu CISA KEV nie powoduje retroaktywnej zmiany decyzji podjętych przed aktualizacją.
Decyzja, której nie da się odtworzyć, nie jest decyzją. Jest opinią, która przypadkiem znalazła się w logu audytu.
Section 8
Dostarczane jako SaaS w modelu multi-tenant
AllowGate to usługa hostowana. Silnik, pakiet reguł systemowych i definicje tierów są utrzymywane i nadzorowane przez nas; Twój zespół jest tenantem korzystającym z platformy.
Reguły funkcjonują na dwóch warstwach. Warstwa platformowa (reguły systemowe, globalne hard deny oraz definicje tierów) leży po stronie AllowGate i z założenia obowiązuje wszystkich tenantów. Warstwa tenanta (Twoje bazowe progi, scoped deny, wyjątki oraz wybór tieru) jest własnością Twojego zespołu, a każda reguła jest oznaczona identyfikatorem tenanta. Silnik wymusza izolację zapisów na poziomie polityk: żaden tenant nie może utworzyć reguły działającej dla innego, żaden nie może utworzyć globalnego hard deny, a także nie może zmienić klasyfikacji modyfikatora w celu obejścia miękkiego limitu przypisanego do jego tieru.
Tiery są zestawami parametrów opracowanymi i zarządzanymi przez AllowGate. Obejmują maksymalny limit progowy, limit miękkich modyfikatorów, wagi pewności oraz minimalny poziom istotności. Wybierasz tier, ale go nie definiujesz. Dzięki temu regulowany tier pozostaje rzeczywiście regulowany, a każda aktualizacja platformy (np. nowa reguła systemowa lub zaostrzenie limitów) może zostać wdrożona jednocześnie dla wszystkich tenantów, bez konieczności samodzielnego przepisywania polityk przez każdy zespół.
Chcesz mieć to w swoim zestawie narzędzi?
Jeśli na co dzień zajmujesz się analizą podatności CVE, chcielibyśmy Cię wysłuchać. Tylko e-mail. Odpowiadamy w ciągu 1 tygodnia.
Wybieramy 15-30 liderów bezpieczeństwa do rozmów projektowych.