Jeszcze nic się nie zepsuło
Większość przeglądów kodu kończy się werdyktem: „jest w porządku”. Tyle że „w porządku” to nie pomiar. Tak samo mówiono o poprzedniej platformie – aż do pierwszego weekendu, w którym musiała udźwignąć prawdziwy ruch.
Czytamy kod na cztery sposoby: jak atakujący, jak następny programista, jak regulator, kiedy ktoś złoży wniosek o usunięcie danych, i jak Twój CFO, kiedy przyjdzie faktura z dopiskiem „nieprzewidziane”.
Czym właściwie jest audyt oprogramowania przed produkcją?
To nie jest code review ani test penetracyjny. Code review sprawdza, czy kod jest schludny. Pentest sprawdza, czy jedne drzwi są zamknięte. Ankieta zapisuje, co deklarujesz, że Twój system robi z danymi osobowymi; audyt sprawdza, czy kod się z Tobą zgadza.
Zadaje jedyne pytanie, które się liczy, kiedy pod wdrożeniem podpisujesz się własnym nazwiskiem: czy ludzie, którzy tego systemu nie pisali, dadzą radę go utrzymać, rozwijać i obronić? Dziś „obronić” znaczy także: obronić przed regulatorem.
Audyt prywatności danych to to samo ćwiczenie, tylko wycelowane w dane osobowe.
Polityki pisze się prozą. Systemy – kodem. Z tej rozbieżności biorą się decyzje organów nadzorczych, a widać ją w repozytorium. Dlatego śledzimy dane, a nie dokumentację:
- czy wycofana zgoda zatrzymuje przetwarzanie, czy tylko chowa checkbox,
- retencję i usuwanie danych w wersji wdrożonej, a nie obiecanej, prześledzone od początku do końca: co się kasuje, co trafia do archiwum, a co przetrwa w backupach, logach i buckecie dostawcy,
- dane szczególnych kategorii w logach i payloadach zdarzeń, gdzie nikt ich nie zgłosił,
- u zarejestrowanych brokerów danych: cykl DROP, hashowanie i raportowanie statusu.
Każde ustalenie, czy dotyczy bezpieczeństwa, czy prywatności, ma plik, linię, poziom ważności i kroki do odtworzenia. Każdy audyt kończy się kosztem utrzymania w osobodniach na miesiąc, bo „działa” i „da się utrzymać za rozsądne pieniądze” to dwa różne ustalenia – a na demo widać tylko jedno z nich. Tę samą listę rozpisaną przepis po przepisie, dla tych, którzy muszą wokół niej planować, znajdziesz w naszej checkliście zgodności.
Audyt, który wraca jako zbiór opinii bez numerów linii, to tylko druga opinia w ładniejszym formatowaniu. Ustaleń dotyczących prywatności też to dotyczy.
Co sprawdza audyt oprogramowania
Czytamy kod tak, jak biegły rewident czyta księgi.
Bez „wydaje mi się”. Z numerami linii.
Ustalenia bezpieczeństwa z poziomem ważności i CVSS
Ryzyko zależności i łańcucha dostaw (SBOM)
Autoryzacja i izolacja tenantów
Walidacja danych wejściowych i podatność na wstrzyknięcia
Pipeline CI/CD i bezpieczeństwo wydań
Architektura, powiązania i zasięg skutków awarii
Infrastruktura, zarządzanie sekretami, ścieżka wdrożenia
Dokumentacja i koszt wprowadzenia nowego programisty do projektu
Ujawnione sekrety, klucze i dane uwierzytelniające
Uwierzytelnianie i obsługa sesji
Ryzyka RODO, w tym dane szczególnych kategorii
CCPA, CPRA, Delete Act i wnioski o usunięcie danych składane przez DROP – oraz cała mozaika przepisów stanowych
Zgoda zebrana w banerze a zgoda respektowana w kodzie
Retencja i usuwanie danych – tak, jak działają, a nie jak je opisano
Podmioty przetwarzające, podprzetwarzające i to, dokąd dane naprawdę trafiają
Pokrycie testami i luki, które ukrywa
Analiza statyczna, linting i bezpieczeństwo typów
Schemat bazy danych, indeksy i koszt zapytań
Obserwowalność – logi, metryki, alerty
Koszt utrzymania w osobodniach na miesiąc
Dlaczego Sanddev?
Kod czytają ludzie, którzy budowali to, na czym on stoi
Zmierzyliśmy to, czego nikt nie mierzy
Sami bywaliśmy dostawcą po drugiej stronie takiego raportu
Warstwę zgód budujemy, a nie tylko ją czytamy
Ty decydujesz, kto naprawia
Techniczne due diligence przed rundą finansowania
Przestań zgadywać. Zacznij mierzyć.
Jak przebiega audyt oprogramowania – od zakresu do ponownego testu
Idzie na produkcję, a Ty się pod tym podpisujesz? Mamy o czym rozmawiać.
Nie wiesz, czy jesteś na tej liście? Przekaż nam repozytorium i tak. Powiemy Ci wprost, jeśli nie ma tam nic, za co warto wystawiać fakturę.
Ile kosztuje audyt oprogramowania – zanim zapytasz 🪙
Od 890 € do 14 000 €, zależnie od tego, ile jest kodu i z czym ten kod pracuje. Readiness Check dla repozytorium do ok. 250 plików kosztuje od 890 €. Pełny audyt to od 2400 € za pojedynczy produkt do 8000 € i więcej za systemy z wieloma repozytoriami albo działające w branżach regulowanych. Techniczne due diligence przed rundą finansowania lub przejęciem to 9000–14 000 €.
Najpierw od rozmiaru repozytorium, potem od tego, czego system dotyka. Płatności, dane medyczne lub biometryczne, architektura multi-tenant i historia kilku różnych dostawców – wszystko to dokłada pracy przy weryfikacji, bo każde ustalenie trzeba odtworzyć, zanim trafi do raportu. Zaglądamy do repozytorium i podajemy przedział, zanim się zobowiążesz. Ta rozmowa nic nie kosztuje.
Zwykle nie – i wolimy powiedzieć to od razu. Check to próbka: wyłapie oczywiste luki i powie, czy pełny audyt ma sens. Jeśli przetwarzasz płatności albo dane szczególnych kategorii w rozumieniu RODO, płytki przegląd, który niczego nie wykazał, jest wart mniej niż nic – bo dostajesz dokument z napisem „w porządku”, za którym nie stoją żadne dowody. Dla takich systemów wycenimy pełny audyt (od 2400 €) albo odmówimy zlecenia.
Nie – i jeśli ktoś twierdzi inaczej, to próbuje Ci coś sprzedać. Jesteśmy inżynierami, nie prawnikami. Dostarczamy opis tego, co Twój kod naprawdę robi z danymi osobowymi, z numerami plików i linii – czyli dokładnie to, czego DPIA potrzebuje na wejściu, a czego prawie nigdy nie dostaje. Co to oznacza w świetle prawa, rozstrzyga Twój IOD albo prawnik. Z naszego doświadczenia najtrudniejsza nigdy nie była interpretacja przepisów, tylko ustalenie faktów.
To jedna z pierwszych rzeczy, które sprawdzamy, bo zwykle właśnie tam jest luka. Zgodę najczęściej zbiera się poprawnie, a respektuje różnie: baner zapisuje rekord, a dwa czy trzy serwisy dalej nikt go nigdy nie odczytuje. Nikt tego nie zauważa, bo nic się nie psuje. To pytanie o kod – ma swój plik i swoją linię, a odpowiedź da się ustalić w jedno popołudnie.
Automatyczne skanowanie i ręczny przegląd przez seniora, każde ustalenie odtworzone przez drugą osobę oraz jeden pisemny raport: ustalenia z plikiem, linią, poziomem ważności i krokami do odtworzenia; szacunek pracochłonności dla każdego z nich; kolejność prac według priorytetów; wreszcie koszt utrzymania w osobodniach na miesiąc. W cenie jest też jedna rozmowa, na której omówimy raport z Twoim zespołem. Bez spotkania sprzedażowego przebranego za omówienie wyników.
Wyceniamy ją na podstawie samego raportu, jako stały zakres – więc porównujesz konkretną kwotę z kosztem bezczynności. Masz dwie opcje w różnych cenach: naprawy robimy my albo nasz senior nadzoruje Twoich programistów – przegląda decyzje architektoniczne i pull requesty, a kod pisze Twój zespół. Druga opcja jest tańsza, a wiedza zostaje u Ciebie w firmie.
Bo znamy już kod. Najdroższa część audytu to pierwsze czytanie; powtórka na znanym systemie i opisanie, co się zmieniło, to ułamek tej pracy. Większość klientów bierze ponowny test, bo poprawka bez dowodu, że działa, to tylko kolejne założenie.
Termin oddania dostajesz już przy ustalaniu zakresu, zanim cokolwiek podpiszesz – i go dotrzymujemy. Audyty to zaplanowana praca, nie kolejka: uczciwie mówimy, kiedy możemy zacząć, zamiast zaczynać z poślizgiem i kończyć w pośpiechu.
Dostępu do odczytu repozytorium, przybliżonej liczby plików i dziesięciu minut rozmowy o tym, co Cię niepokoi. Dokumentacji nie potrzebujemy – gdyby wystarczyła, żeby wprowadzić nas w projekt, audyt pewnie nie byłby Ci potrzebny.
Wtedy raport to stwierdzi – na piśmie i z dowodami. A właśnie tego potrzebujesz przed zarządem, inwestorem albo ubezpieczycielem. Zdarza się. Najczystszy kod, jaki oceniliśmy w tym roku, miał jedno ustalenie o niskiej ważności. Miał też najwyższy rachunek za utrzymanie w naszych zestawieniach – i właśnie po to robi się audyt.