audyt adwersaryjny
To nie jest jeden audyt. To dyscyplina.
Każdy może raz przeprowadzić test bezpieczeństwa i zrobić zrzut ekranu z zielonym wynikiem. Trudniej jest atakować własny system raz za razem, w miarę jak rośnie, i za każdym razem dostawać tę samą odpowiedź. Ostatnia runda: audyt z udziałem 50 agentów, wdrożone poprawki, a potem osobny adwersaryjny ponowny audyt z 14 perspektyw, w którym każde znalezisko musiało przetrwać sceptyka, zanim zostało uznane. Co się trzyma, to się trzyma.
co objął najnowszy audyt
Najpierw zakres, metoda i ograniczenia. Liczba agentów potem.
Z najnowszego audytu rdzenia, z 25 września 2026. Liczba agentów mówi, jak intensywny był audyt, a nie jak dobry, więc oto, co ten audyt faktycznie zrobił.
- Kod
- Pakiet rdzenia, 162 pliki i 17,362 wiersze, na jednym ustalonym commicie, plus kod gateway potrzebny do ustalenia, czy każda ścieżka jest aktywna.
- Dostęp
- Pełny kod źródłowy i świeża baza danych zbudowana z migracji. Nie produkcyjna baza danych; ustawienia dostępne tylko w produkcji oznaczono jako niezweryfikowane i sprawdziłem je sam później.
- Metoda
- Czterech recenzentów przeczytało w całości po jednej warstwie. Prowadzący ponownie sprawdził każde ustalenie względem pliku i uruchomił każde twierdzenie dotyczące czasu lub wzorca, zanim zostało zaliczone.
- Waga
- HIGH oznacza przeoczony kryzys lub odmowę usługi na aktywnej ścieżce, wyciek między tenantami albo utratę pieniędzy. Średnia oznacza zabezpieczenie, które przy awarii przepuszcza (fail-open), kredyt utworzony z niczego lub po cichu utracone dane. Każde ustalenie jest też oznaczone jako aktywne lub uśpione: osiągalne dziś w produkcji albo nie.
- Rozbieżności
- Ustalenie, którego prowadzący nie mógł odtworzyć, było odrzucane lub oznaczane jako niezweryfikowane, a nie uśredniane z resztą.
- Wynik
- 2 ustalenia HIGH i 13 średnich. Wszystkie naprawione tego samego dnia, każde z testem, który nie przechodził na starym kodzie, a cały zestaw testów uruchomiono ponownie w CI.
- Nieobjęte
- Wierność około 7,000 wierszy przetłumaczonych komunikatów bezpieczeństwa, produkcyjna baza danych, konfiguracja serwera WWW oraz 17 wciąż otwartych ustaleń o niskiej wadze.
Przeprowadzony samodzielnie przez kierowanych przeze mnie recenzentów AI, a nie niezależne zapewnienie strony trzeciej.
rytm
Atakowane ponownie, runda po rundzie. Każde poniższe ustalenie dotyczące wycieku między tenantami zostało wykryte przez audyt, a nie zgłoszone przez klienta, i naprawione.
✓ klejnoty koronne utrzymane w każdej rundzie, izolacja · pieniądze · nadzór · SSRF · domeny tokenów
trzy z prawdziwych
HIGH Wyciek rozmów między tenantami
Pamięć czatu była kluczowana nadawcą, a nie tenantem, więc u gościa, który pisał przez platformę do dwóch firm, rozmowa z jedną mogła pojawić się w prompcie drugiej. Naprawione: historia jest kluczowana firmą w warstwie przechowywania, z testem, który nie przejdzie, jeśli stary klucz wróci. Wykrył to audyt, nie zgłosił tego klient.
HIGH Dostawca drenujący wywołującego
W międzynajemcowej ekonomii narzędzi dostawca mógł podnieść cenę udostępnionego narzędzia po tym, jak wywołujący zaczął z niego korzystać, i wyczerpać jego saldo. Naprawione: wywołujący zgadza się na cenę za każde wywołanie, fail-closed: brak zgody, brak opłaty, egzekwowane, zanim przesunie się choćby jeden kredyt.
HIGH Kryzys za licznikiem
Sprawdzenie rozliczeń wykonywało się przed sprawdzeniem kryzysowym, więc klient w kryzysie piszący do firmy bez środków dostawał „niedostępne” zamiast numeru linii kryzysowej. Naprawione: obsługa kryzysowa jest bezpłatna, przed każdym limitem i opłatą, na każdym kanale klienta.
Perspektywy obejmują izolację · uwierzytelnianie · wstrzykiwanie · pieniądze · zarządzanie · rezerwacje · kanały · autonomicznego rezydenta · prawa do danych (GDPR/PECR) · generator stron · frontend · operacje. Werdykt w każdej rundzie: zero krytycznych pozostających otwartych; izolacja tenantów i powierzchnia XSS okazały się czyste; brak aktywnego obejścia uwierzytelniania: każdy potwierdzony przypadek brzegowy naprawiony i ponownie wdrożony.
uczciwe liczby
Każda liczba, z zastrzeżeniem już dołączonym.
Większość twórców koloryzuje. Wolę, żebyś ufał temu, co prawdziwe, niż był pod wrażeniem tego, co takie nie jest.
System jest uczciwy, bo uczciwy jest ten, kto go zaprojektował. Zadbałem o to od początku: wbudowane, nie doklejone.
zaproszenie
Liczby się bronią. Zastrzeżenia w komplecie.
Jeśli szukasz twórcy, który atakuje własną pracę tak mocno, zanim ktokolwiek o to poprosi, i robi to dalej w miarę rozwoju systemu, porozmawiajmy.
Zapytaj o audyty: co znaleziono, co naprawiono, co jest nadal otwarte.
- Co jest nadal otwarte?
- Co było najgorszym znaleziskiem?
- Kto przeprowadził te audyty?