Oferujemy usługę analizy podatności kodu źródłowego aplikacji, która jest realizowana w oparciu o najlepsze praktyki w obszarze bezpiecznego wytwarzania oprogramowania oraz zalecenia organizacji OWASP (standard ASVS oraz MASVS). Analiza kodu źródłowego może być wspierana przez wyniki przeprowadzonych testów penetracyjnych.
W ramach naszych prac realizujemy statyczną analizę kodu źródłowego, która będzie dotyczyła najistotniejszych funkcjonalności z punktu widzenia bezpieczeństwa, m.in.:
-
Obsługa wejścia i wyjścia z aplikacji
-
Walidacja danych
-
Mechanizmy kryptograficzne
-
Zarządzanie pamięcią
-
Obsługa błędów
-
Odwołania do systemu operacyjnego
-
Logowanie
Zgodnie z metodyką nasze przeglądy kodu są wykonywane w następujących krokach:
-
Przeprowadzenie wywiadu z architektami aplikacji lub wiodącymi programistami w celu uzyskania informacji o jej funkcjach biznesowych oraz o jej strukturze wewnętrznej,
-
Oczyszczenie kodu źródłowego z kodów testowych oraz nieużywanych fragmentów kodu, a także oznaczenie kodów bibliotek zewnętrznych,
-
Przeprowadzenie statycznej analizy kodu z użyciem narzędzi automatycznych w celu zidentyfikowania podatności wykrywanych tymi narzędziami,
-
Manualna weryfikacja wyników uzyskanych z narzędzi automatycznych,
-
Uzupełnienie analizy za pomocą manualnych kontroli na podstawie list kontrolnych opisujących różne typy podatności adekwatne dla stosowanego języka programowania,
-
Przedyskutowanie wyników prac z architektami aplikacji lub wiodącymi programistami w celu określenie poziomu ryzyka podatności i podejścia zespołu programistycznego,
-
Przygotowanie raportu zawierającego listę zidentyfikowanych podatności wraz z rekomendacjami ich usunięcia.
Metodologia SAST: statyczna analiza bezpieczeństwa aplikacji
Statyczna analiza kodu źródłowego (SAST — Static Application Security Testing) to fundament analizy podatności kodu. W odróżnieniu od testów dynamicznych (DAST), SAST analizuje kod bez jego uruchamiania, co pozwala na wykrycie podatności na wczesnym etapie cyklu życia oprogramowania — zanim aplikacja trafi na środowisko testowe lub produkcyjne.
Jak działa SAST?
Narzędzia SAST analizują kod źródłowy, reprezentację pośrednią (bytecode, AST — Abstract Syntax Tree) lub skompilowane binaria w poszukiwaniu wzorców charakterystycznych dla podatności bezpieczeństwa. Analiza obejmuje:
Przepływ danych (data flow analysis): Śledzenie danych od punktów wejścia (input sources) przez kod aplikacji do punktów wyjścia (sinks). Jeśli dane z niezaufanego źródła (np. żądanie HTTP) trafiają do wrażliwej operacji (zapytanie SQL, polecenie systemowe) bez odpowiedniej sanitizacji, narzędzie SAST flaguje potencjalną podatność SQL Injection lub Command Injection.
Analiza modelu kontroli (control flow analysis): Badanie ścieżek wykonania kodu w poszukiwaniu warunków powodujących nieprawidłowe zachowanie — nieprawidłowe obsługi wyjątków, nieosiągalnego kodu, potencjalnych wyścigów (race conditions) w aplikacjach wielowątkowych.
Konfiguracja bezpieczeństwa: Analiza ustawień kryptograficznych, protokołów sieciowych i parametrów uwierzytelniania zaszytych w kodzie lub plikach konfiguracyjnych.
Najczęstsze typy podatności wykrywane zgodnie z OWASP
Standard OWASP ASVS (Application Security Verification Standard) definiuje kompleksowy katalog wymagań bezpieczeństwa. Analiza kodu skupia się na kategoriach podatności najczęściej spotykanych w aplikacjach enterprise.
OWASP Top 10 w kontekście analizy kodu
Injection (SQL, NoSQL, OS, LDAP): Podatności iniekcyjne pozostają na szczycie listy OWASP od lat. Brak parametryzacji zapytań SQL, nieprawidłowe escaping danych wejściowych lub budowanie poleceń systemowych z danych użytkownika — wszystkie te wzorce są wykrywalne przez SAST. Exploitacja podatności SQL Injection umożliwia atakującemu odczyt, modyfikację lub usunięcie danych z bazy danych, a w niektórych konfiguracjach — wykonanie poleceń na serwerze.
Broken Authentication: Nieprawidłowa implementacja mechanizmów uwierzytelniania — słabe algorytmy haszowania haseł (MD5, SHA1 bez soli), przechowywanie tokenów sesji w URL, brak wygaśnięcia sesji, podatności na ataki CSRF. Analiza kodu identyfikuje te wzorce na poziomie implementacji.
Sensitive Data Exposure: Przechowywanie poufnych danych (haseł, kluczy API, danych kart płatniczych) w plaintexcie w kodzie, logach lub bazie danych. Twarde kodowanie poświadczeń (hardcoded credentials) jest jedną z najczęściej wykrywanych przez SAST klas błędów.
XML External Entities (XXE): Nieprawidłowa konfiguracja parserów XML umożliwiająca atakującemu odczyt plików systemowych lub przeprowadzenie ataków SSRF. Częsta w aplikacjach przetwarzających dokumenty XML, pliki konfiguracyjne SOAP czy importy danych.
Security Misconfiguration: Nieprawidłowe ustawienia bezpieczeństwa w kodzie aplikacji — zbyt liberalne polityki CORS, brak nagłówków bezpieczeństwa HTTP (Content-Security-Policy, X-Frame-Options), włączone tryby debugowania w środowisku produkcyjnym.
Insecure Deserialization: Deserializacja niezaufanych danych bez walidacji może prowadzić do zdalnego wykonania kodu (Remote Code Execution). Ta klasa podatności jest szczególnie groźna w aplikacjach Java korzystających z mechanizmów serializacji Java Native Serialization lub popularnych bibliotek jak Jackson, XStream.
Integracja analizy kodu z procesem DevSecOps
Największą wartość analiza bezpieczeństwa kodu przynosi, gdy jest zintegrowana z procesem wytwarzania oprogramowania, nie traktowana jako jednorazowy audyt przed wdrożeniem.
Shift Left Security
Paradygmat “Shift Left” polega na przesunięciu testów bezpieczeństwa jak najwcześniej w cyklu wytwarzania oprogramowania. Koszt naprawy podatności wykrytej na etapie kodowania jest kilkaset razy niższy niż koszty naprawy tej samej podatności wykrytej w produkcji po incydencie bezpieczeństwa.
Integracja SAST z pipeline’em CI/CD pozwala na automatyczne skanowanie każdego commitu lub pull requesta. Programista otrzymuje informację o wykrytych podatnościach natychmiast, w kontekście swojej pracy — co ułatwia zrozumienie problemu i szybką korektę. Jednocześnie organizacja zyska pewność, że kod z wysokim ryzykiem nie trafi na środowisko produkcyjne bez weryfikacji.
Weryfikacja manualna wyników SAST
Narzędzia automatyczne generują fałszywe alarmy (false positives) — wyniki wskazujące na podatność, która w rzeczywistości nie istnieje ze względu na kontekst aplikacji. Manualna weryfikacja przez doświadczonego analityka jest niezbędna do odfiltrowania fałszywych alarmów i oceny realnego ryzyka prawdziwych podatności w kontekście architektury i danych przetwarzanych przez aplikację.
nFlo łączy narzędzia automatyczne (Micro Focus Fortify, SonarQube, Semgrep) z manualną weryfikacją przez doświadczonych analityków bezpieczeństwa, dostarczając wyniki wysokiej jakości z minimalną liczbą fałszywych alarmów. Połączenie analizy kodu źródłowego z testami penetracyjnymi aplikacji webowej zapewnia najwyższe pokrycie bezpieczeństwa — identyfikując zarówno podatności na poziomie implementacji, jak i te widoczne z perspektywy zewnętrznego atakującego.
📚 Przeczytaj kompletny przewodnik: IAM / Zero Trust: Zarządzanie tożsamością i dostępem - od podstaw do Zero Trust
Powiązane pojęcia
Poznaj kluczowe terminy związane z tym artykułem w naszym słowniku cyberbezpieczeństwa:
- Zarządzanie podatnościami — Zarządzanie podatnościami to systematyczny proces identyfikacji, oceny i…
- Zarządzanie urządzeniami końcowymi — Zarządzanie urządzeniami końcowymi (Endpoint Management) to proces…
- Analiza podatności kodu źródłowego — Analiza podatności kodu źródłowego to proces systematycznego badania kodu…
- Bezpieczeństwo kodu źródłowego — Bezpieczeństwo kodu źródłowego to praktyki i narzędzia chroniące integralność i…
- Access Management — Access Management to proces kontroli i monitorowania, kto ma dostęp do zasobów…
Dowiedz się więcej
Zapoznaj się z powiązanymi artykułami w naszej bazie wiedzy:
- Audyt Kodu Źródłowego - Czym jest, jak działa i dlaczego warto go wykonać
- Micro Focus Fortify – automatyczne badanie podatności kodu
- Analiza Danych z IBM watsonx.ai: Klucz do zrozumienia Twoich klientów
- Analiza PEST: Klucz do skutecznego planowania strategii w świecie nowoczesnych technologii
- Analiza trendów w obszarze Cybersecurity na rynku polskim
Sprawdź nasze usługi
Potrzebujesz wsparcia w zakresie cyberbezpieczeństwa? Sprawdź:
- Zarządzanie podatnościami - ciągłe monitorowanie i eliminacja luk
- Testy penetracyjne - identyfikacja podatności w infrastrukturze
Poznaj nasze produkty
Rozwiązania wspomniane w tym artykule, które mogą pomóc w ochronie Twojej organizacji:
- IBM watsonx.ai — IBM
- IBM watsonx — IBM
