Co powinien obejmować audyt bezpieczeństwa?
W skrócie: Gruntowny audyt bezpieczeństwa obejmuje pięć obszarów: bezpieczeństwo aplikacji (OWASP Top 10), bezpieczeństwo infrastruktury i sieci, kontrolę dostępu i uwierzytelnianie, ochronę danych i prywatność (w tym zgodność z RODO) oraz gotowość reagowania na incydenty. Poniższa checklista powstała dla zespołów produktowych, które chcą zrozumieć, co audyt powinien zawierać — przed, w trakcie i po współpracy ze specjalistą.
Czym jest audyt bezpieczeństwa i czym różni się od testu penetracyjnego?
Audyt bezpieczeństwa to systematyczny przegląd całości zabezpieczeń: polityk, procedur, kontroli technicznych i stanu zgodności. Jest szerszy i bardziej ustrukturyzowany niż test penetracyjny, który skupia się na próbach wykorzystania podatności w wybranych systemach.
Można to ująć tak: test penetracyjny pyta „czy atakujący może się włamać?". Audyt bezpieczeństwa pyta „czy nasze całościowe podejście do bezpieczeństwa jest adekwatne?". Audyt bada nie tylko, czy mury mają dziury, ale czy mury stoją we właściwych miejscach, czy ktoś ich pilnuje i czy istnieje plan na wypadek, gdy coś się przedostanie.
Kompleksowy audyt bezpieczeństwa zwykle obejmuje:
- Ocenę techniczną: skanowanie podatności, przeglądy konfiguracji, analizę kodu
- Przegląd procesów: procedury reakcji na incydenty, zarządzanie zmianą, nadawanie dostępów
- Ewaluację zgodności: mapowanie obecnego stanu na wymogi regulacyjne (RODO, NIS2, PCI DSS)
- Analizę polityk: polityki bezpieczeństwa, zasady dopuszczalnego użycia, procedury obsługi danych
- Czynniki ludzkie: świadomość bezpieczeństwa, podatność na phishing, zarządzanie dostępem uprzywilejowanym
Dla organizacji z Unii Europejskiej audyt coraz częściej musi uwzględniać dyrektywę NIS2, która rozszerzyła wymogi cyberbezpieczeństwa na kolejne sektory i narzuca surowsze obowiązki raportowania incydentów. Audyt powinien ocenić gotowość na te wymogi przed terminem zgodności, nie po nim.
Większość organizacji zyskuje na pełnym audycie raz w roku, z ukierunkowanymi ocenami (pentesty, skany podatności) kwartalnie lub po istotnych zmianach.
Co obejmuje OWASP Top 10 i dlaczego powinno Cię to obchodzić?
OWASP Top 10 to regularnie aktualizowana lista najbardziej krytycznych ryzyk bezpieczeństwa aplikacji webowych, utrzymywana przez Open Web Application Security Project. Stanowi bazowy punkt odniesienia, względem którego powinna być testowana każda aplikacja webowa — i standardowy framework, którego audytorzy używają w ocenach bezpieczeństwa aplikacji.
Aktualne kategorie OWASP Top 10:
1. Broken Access Control. Użytkownicy mogą działać poza zamierzonymi uprawnieniami. To najczęstsza kategoria podatności: dostęp do danych innego użytkownika przez zmianę ID w adresie URL, wykonywanie akcji administracyjnych bez uprawnień administratora.
2. Cryptographic Failures. Dane wrażliwe wystawione przez słabe lub brakujące szyfrowanie: transmisja przez HTTP zamiast HTTPS, hasła w plaintext, przestarzałe algorytmy (MD5, SHA-1 dla haseł), klucze API w kodzie po stronie klienta.
3. Injection. Niezaufane dane trafiają do interpretera (SQL, NoSQL, LDAP, polecenia OS) jako część komendy lub zapytania. SQL injection wciąż jest powszechne mimo dobrego zrozumienia — często przez nadużycie ORM lub sklejanie surowych zapytań ze stringów.
4. Insecure Design. Wady bezpieczeństwa wpisane w architekturę, których lepsza implementacja nie naprawi: logika biznesowa dopuszczająca nieograniczone próby logowania, enumeracja kont przez różne komunikaty błędów, brak rate limitingu na wrażliwych operacjach.
5. Security Misconfiguration. Niezmienione domyślne poświadczenia, włączone zbędne funkcje, komunikaty błędów ujawniające stack trace, publicznie dostępne buckety chmurowe. To jedne z najłatwiejszych podatności do znalezienia i wykorzystania.
6. Vulnerable and Outdated Components. Biblioteki, frameworki lub inne komponenty ze znanymi podatnościami. Szczególnie podstępne, bo podatność nie siedzi w Twoim kodzie, lecz w zależności, której możesz aktywnie nie monitorować.
7. Identification and Authentication Failures. Słabe polityki haseł, brak MFA, problemy z zarządzaniem sesją, podatność na credential stuffing.
8. Software and Data Integrity Failures. Poleganie na pluginach, bibliotekach lub pipeline'ach CI/CD bez weryfikacji integralności. W tę kategorię celują ataki na łańcuch dostaw.
9. Security Logging and Monitoring Failures. Niewystarczające logowanie oznacza niewykryte naruszenia. Jeśli nie widzisz, że atak się wydarzył, nie możesz na niego odpowiedzieć.
10. Server-Side Request Forgery (SSRF). Aplikacja pobiera zdalne zasoby bez walidacji adresu URL od użytkownika, dając atakującym dostęp do usług wewnętrznych.
Każdy audyt bezpieczeństwa powinien systematycznie testować aplikację względem tych kategorii. Reprezentują one podatności najczęściej wykorzystywane przez atakujących w realnym świecie.
Co powinna zawierać Twoja checklista bezpieczeństwa aplikacji?
Bezpieczeństwo aplikacji to warstwa najbliższa użytkownikom i danym. Checklista audytu powinna obejmować co najmniej uwierzytelnianie, autoryzację, obsługę danych wejściowych, ochronę danych i zarządzanie sesją.
Uwierzytelnianie i zarządzanie sesją:
- MFA dostępne dla wszystkich kont użytkowników
- Wymuszona mocna polityka haseł (minimalna długość, złożoność, weryfikacja w bazach wycieków)
- Blokada konta lub rate limiting po nieudanych próbach logowania
- Tokeny sesji generowane kryptograficznie bezpieczną losowością
- Sesje wygasające po rozsądnym okresie bezczynności
- Unieważnianie sesji przy zmianie hasła i wylogowaniu
- Bezpieczne atrybuty cookies (HttpOnly, Secure, SameSite)
Autoryzacja i kontrola dostępu:
- Spójnie wdrożona kontrola dostępu oparta na rolach lub atrybutach
- Kontrole autoryzacji po stronie serwera przy każdym żądaniu (nie tylko ukrywanie w UI)
- Zasada najmniejszych uprawnień dla wszystkich ról i kont serwisowych
- Endpointy API egzekwujące autoryzację niezależnie od frontendu
- Funkcje administracyjne wydzielone i dodatkowo chronione
Walidacja wejścia i kodowanie wyjścia:
- Wszystkie dane wejściowe walidowane po stronie serwera (walidacja klienta to nie bezpieczeństwo)
- Zapytania parametryzowane we wszystkich operacjach bazodanowych (bez sklejania stringów)
- Kodowanie wyjścia zapobiegające Cross-Site Scripting (XSS)
- Uploady plików ograniczone typem i rozmiarem, przechowywane poza web rootem
- Skonfigurowane nagłówki Content Security Policy (CSP)
Ochrona danych:
- Cała transmisja przez TLS 1.2+ (bez mixed content)
- Dane wrażliwe szyfrowane w spoczynku (szyfrowanie bazy, szyfrowane backupy)
- Hasła hashowane bcrypt, scrypt lub Argon2 (nigdy MD5 ani czysty SHA)
- Klucze API i sekrety w zmiennych środowiskowych lub secret managerach (nie w kodzie)
- Obsługa danych osobowych zgodna z wymogami RODO
Obsługa błędów i logowanie:
- Komunikaty błędów nieujawniające stack trace, szczegółów bazy ani ścieżek wewnętrznych
- Logowanie zdarzeń istotnych dla bezpieczeństwa (próby logowania, odmowy dostępu, błędy walidacji)
- Logi przechowywane bezpiecznie i retencjonowane zgodnie z wymogami regulacyjnymi
- Monitoring i alerty skonfigurowane pod anomalne wzorce
Jak audytować bezpieczeństwo infrastruktury i sieci?
Bezpieczeństwo infrastruktury obejmuje serwery, sieci i usługi chmurowe hostujące aplikację. Źle skonfigurowana infrastruktura to jeden z najczęstszych wektorów ataku — zwłaszcza przy migracjach do chmury, gdzie konfiguracje domyślne nie zawsze są bezpieczne.
Konfiguracja serwerów i chmury:
- Systemy operacyjne i oprogramowanie załatane i aktualne
- Zbędne usługi i porty wyłączone
- Domyślne poświadczenia zmienione we wszystkich systemach (bazy, panele administracyjne, urządzenia sieciowe)
- Polityki IAM w chmurze zgodne z zasadą najmniejszych uprawnień
- Buckety i zasoby chmurowe z właściwymi kontrolami dostępu (bez publicznego dostępu, chyba że zamierzony)
- Szablony Infrastructure as Code (IaC) przejrzane pod kątem błędnych konfiguracji
Bezpieczeństwo sieci:
- Firewalle przepuszczające tylko niezbędny ruch
- Segmentacja sieci oddzielająca systemy publiczne od infrastruktury wewnętrznej
- VPN lub architektura zero-trust dla zdalnego dostępu do systemów wewnętrznych
- Konfiguracja DNS zabezpieczona przed transferem stref i przejęciem
- Ochrona DDoS dla usług publicznych
Bezpieczeństwo kontenerów i wdrożeń:
- Obrazy kontenerów skanowane pod kątem znanych podatności przed wdrożeniem
- Kontenery działające jako użytkownicy nie-root z minimalnymi uprawnieniami
- Sekrety niewbudowane w obrazy kontenerów
- Pipeline CI/CD zabezpieczony (kontrole dostępu, podpisane artefakty, ślad audytowy)
- Proces wdrożeń oparty o infrastrukturę niemutowalną, gdzie to możliwe
Backup i odzyskiwanie:
- Regularne automatyczne backupy krytycznych danych i konfiguracji
- Backupy szyfrowane i przechowywane w osobnej lokalizacji
- Odtwarzanie z kopii testowane okresowo (nieprzetestowane backupy to nie backupy)
- Zdefiniowane i osiągalne RTO (Recovery Time Objective) i RPO (Recovery Point Objective)
Jakie kontrole dostępu i wymogi zgodności powinien zweryfikować audyt?
Kontrola dostępu i zgodność to organizacyjna strona bezpieczeństwa. Kontrole techniczne są skuteczne tylko wtedy, gdy wspierają je polityki, procesy i właściwe zarządzanie tym, kto ma dostęp do czego.
Zarządzanie dostępem:
- Przeglądy dostępów użytkowników co najmniej kwartalnie
- Proces offboardingu odbierający wszystkie dostępy w 24 godziny od odejścia
- Konta współdzielone wyeliminowane lub zminimalizowane z indywidualną rozliczalnością
- Dostęp uprzywilejowany (admin, root, baza) wymagający zatwierdzenia i logowany
- Dostęp dostawców zewnętrznych ograniczony zakresem, czasowy i monitorowany
- Konta serwisowe zinwentaryzowane z udokumentowanym przeznaczeniem i właścicielami
Zgodność z RODO (dla organizacji w UE):
- Prowadzony rejestr czynności przetwarzania (art. 30)
- Oceny skutków dla ochrony danych (DPIA) dla przetwarzania wysokiego ryzyka
- Udokumentowany i przetestowany proces obsługi wniosków osób (DSAR)
- Zdefiniowane okresy retencji danych, zautomatyzowane gdzie to możliwe
- Ustanowiony proces zgłaszania naruszeń (72 godziny do organu nadzorczego)
- Umowy powierzenia przetwarzania z wszystkimi procesorami i podprocesorami
- Zidentyfikowana i udokumentowana podstawa prawna każdej czynności przetwarzania
Gotowość na dyrektywę NIS2 (jeśli dotyczy):
- Wdrożone środki zarządzania ryzykiem dla sieci i systemów informatycznych
- Ustanowione procedury obsługi incydentów ze zdefiniowanymi ścieżkami eskalacji
- Plany ciągłości działania i zarządzania kryzysowego
- Oceniona bezpieczność łańcucha dostaw (wymogi bezpieczeństwa dla dostawców)
- Program szkoleń cyberbezpieczeństwa dla kierownictwa i pracowników
- Udokumentowane polityki obsługi i ujawniania podatności
Zgodność branżowa:
- PCI DSS przy przetwarzaniu danych kart płatniczych (kwartalne skany, roczna ocena)
- HIPAA przy danych zdrowotnych (istotne dla firm z UE obsługujących rynek USA)
- Sektorowe wymogi NIS2 dla podmiotów kluczowych i ważnych
Audyt powinien wyprodukować analizę luk zgodności mapującą obecny stan na każdy mający zastosowanie wymóg, wskazującą braki i priorytetyzującą naprawy według ryzyka i terminów regulacyjnych.
Jak przygotować się do audytu bezpieczeństwa?
Przygotowanie decyduje o tym, jak sprawnie przebiegnie audyt i jak użyteczne będą wyniki. Dobrze przygotowana organizacja wyciąga z tej samej współpracy więcej wartości, bo audytorzy spędzają czas na znajdowaniu problemów, a nie zbieraniu podstawowych informacji.
Dokumentacja do zebrania przed audytem:
- Diagramy architektury sieci (faktyczne, nie aspiracyjne)
- Dokumentacja architektury aplikacji
- Lista wszystkich systemów, usług i integracji zewnętrznych w zakresie
- Istniejące polityki i procedury bezpieczeństwa
- Poprzednie raporty audytowe i status realizacji zaleceń
- Listy dostępów użytkowników do krytycznych systemów
- Inwentarz dostępów dostawców i podmiotów trzecich
Przygotowanie techniczne:
- Zapewnij audytorom odpowiednie konta testowe i dostępy
- Przygotuj środowisko stagingowe odzwierciedlające produkcję (jeśli audyt obejmuje pentesty)
- Wyznacz technicznego punkta kontaktowego odpowiadającego na pytania o architekturę i konfigurację
- Udokumentuj znane problemy i już wdrożone kontrole kompensujące
Przygotowanie organizacyjne:
- Jasno zdefiniuj zakres audytu (które systemy, lokalizacje, ramy zgodności)
- Zidentyfikuj interesariuszy, których należy poinformować o ustaleniach
- Ustanów kanał komunikacji między zespołem audytowym a technicznym
- Ustaw oczekiwania co do harmonogramu: wykonanie audytu, szkic raportu, raport finalny
Po audycie:
- Przejrzyj ustalenia z interesariuszami technicznymi i biznesowymi
- Priorytetyzuj naprawy według oceny ryzyka i wpływu biznesowego
- Przypisz właścicieli i terminy każdemu ustaleniu
- Zaplanuj re-testy krytycznych znalezisk po naprawach
- Zaplanuj kolejny cykl audytowy
W Atium nasze audyty bezpieczeństwa podążają za tym uporządkowanym schematem. Pracujemy z Twoim zespołem nad zdefiniowaniem zakresu, wykonaniem oceny i dostarczeniem wykonalnych ustaleń priorytetyzowanych realnym ryzykiem, nie tylko teoretycznymi ocenami wagi.
FAQ
Jak często przeprowadzać audyt bezpieczeństwa?
Kompleksowy audyt co najmniej raz w roku. Dodatkowo ukierunkowane oceny po większych zmianach infrastruktury (migracja do chmury, premiera nowej aplikacji), istotnych zmianach organizacyjnych (fuzje, szybka rekrutacja) lub incydentach bezpieczeństwa. Skanowanie podatności kwartalnie, a systemy krytyczne z ciągłym monitoringiem. Organizacje podlegające NIS2 lub PCI DSS mogą mieć częstotliwość audytów zdefiniowaną w regulacji.
Ile trwa audyt bezpieczeństwa?
Ukierunkowany audyt bezpieczeństwa aplikacji to jeden–dwa tygodnie. Kompleksowy audyt aplikacji, infrastruktury, polityk i zgodności trwa zwykle trzy–sześć tygodni, w zależności od wielkości i złożoności środowiska. Sam audyt to zwykle krótsza część; przygotowanie i naprawy trwają dłużej. Zaplanuj dwa–trzy miesiące od startu audytu do zamknięcia krytycznych punktów naprawczych.
Czym różni się audyt wewnętrzny od zewnętrznego?
Audyt wewnętrzny prowadzi własny zespół bezpieczeństwa lub IT — koncentruje się na bieżącej zgodności i przestrzeganiu procesów. Audyt zewnętrzny prowadzi niezależna strona trzecia, dając bezstronny obraz stanu zabezpieczeń. Audyty zewnętrzne mają większą wagę u regulatorów, klientów i partnerów, bo są niezależne. Większość organizacji zyskuje na obu: regularne oceny wewnętrzne uzupełnione corocznymi audytami zewnętrznymi.
Czy potrzebujemy audytu, skoro używamy chmury jak AWS czy Azure?
Tak. Dostawcy chmury działają w modelu współdzielonej odpowiedzialności: zabezpieczają infrastrukturę bazową, ale za konfiguracje, aplikacje, dane i kontrole dostępu odpowiadasz Ty. Źle skonfigurowane środowiska chmurowe to jedne z najczęstszych źródeł wycieków danych. Audyt powinien szczegółowo przejrzeć konfiguracje chmury, polityki IAM, uprawnienia storage i ustawienia sieci.
Co się dzieje, gdy audyt znajdzie krytyczne podatności?
Krytyczne podatności należy naprawiać natychmiast — zwykle w 24–48 godzin dla aktywnie wykorzystywalnych problemów. Raport audytowy klasyfikuje ustalenia według wagi (krytyczne, wysokie, średnie, niskie) z rekomendowanymi krokami naprawczymi. Zespół powinien mieć wcześniej uzgodniony proces eskalacji krytycznych znalezisk: kto zatwierdza zmiany awaryjne i jak komunikować ryzyko interesariuszom.
Ile kosztuje audyt bezpieczeństwa?
Koszty zależą od zakresu i głębokości. Ukierunkowana ocena bezpieczeństwa aplikacji webowej to 5 000–15 000 euro. Kompleksowy audyt wielu aplikacji, infrastruktury, środowisk chmurowych i ram zgodności to zwykle 15 000–50 000 euro. Stałe zarządzane oceny bezpieczeństwa z kwartalnymi testami i ciągłym monitoringiem wyceniane są jako roczne retainery. Koszt najlepiej oceniać na tle potencjalnego kosztu naruszenia, który dla MŚP w UE wynosi średnio kilkaset tysięcy euro.
Ebook: cyberbezpieczeństwo w praktyce
Co Wam realnie grozi, jakie zabezpieczenia wdrożyć najpierw i jak przygotować firmę na incydent. Bez straszenia, z konkretami.