CyberbezpieczeństwoPREZENTACJA PARTNERA
Omnilogy: Proponujemy naturalne, ale nieoczywiste podejście do bezpieczeństwa
EVP
Z Tomaszem Płońskim, CTO w Omnilogy, rozmawiamy o punktach styku pomiędzy bezpieczeństwem i obserwowalnością środowisk IT, możliwościach analizy i wykrywania podatności bezpośrednio na poziomie wykonywanego kodu aplikacji, a także o niezbędnych wnioskach z podatności Log4Shell oraz sposobach rozwiązań Dynatrace i Sysdig.
Cyberbezpieczeństwo i obserwowalność to, według prognoz, jedne z najważniejszych priorytetów w zakresie inwestycji z obszaru IT. Rzadko jednak występowały w parze…
To jest jeden z mitów, które należy obalić. Jak nigdy dotąd, połączenie obserwowalności i bezpieczeństwa staje się czymś tak oczywistym, że aż trudno sobie wyobrazić, że do tej pory traktowaliśmy je oddzielnie. Wiele osób nie potrafi dostrzec tego, co faktycznie łączy te dwa światy. Mówię tutaj o danych. Bezpieczeństwo obejmuje tworzenie procedur i standardów, ale opiera się przecież na systemach, które analizują dane nt. zachowania użytkowników i aplikacji.
Jeżeli popatrzymy z kolei na obserwowalność, to już w jej definicji znajduje się możliwość pomiaru bieżącego stanu systemu na podstawie generowanych przez ten system danych, takich jak logi, metryki i trace’y. W nowoczesnych środowiskach każde urządzenie, oprogramowanie, komponent infrastruktury chmurowej, każdy kontener i każda mikrousługa tworzy zapisy aktywności.
Celem obserwowalności jest zrozumienie, co dzieje się we wszystkich tych środowiskach i technologiach. W ten sposób obserwowalność zapewnia nowe narzędzia do wykrywania i rozwiązywania problemów, co przekłada się na większą niezawodność i wydajność systemów, a także na zadowolenie użytkowników lub klientów. Cyberbezpieczeństwo analizuje dane z tych samych środowisk i z tych samych komponentów. Dane są więc z jednej strony spoiwem tych dwóch światów, a z drugiej – sprawiają, że obie dziedziny znajdują wspólny język.
Platforma Dynatrace analizuje wykonywany kod aplikacji na poziomie każdej transakcji. Widzimy rzeczywiste ścieżki komunikacji oraz zakres danych, do których poszczególne komponenty środowiska mają dostęp. Taka wiedza jest ogromnym ułatwieniem dla zespołów CyberSec.
Czy podobną spójność widać już na poziomie narzędzi wykorzystywanych w kontekście bezpieczeństwa i utrzymania infrastruktury?
Odpowiedź zależy od stosowanych narzędzi. Na poziomie technicznym kwestie bezpieczeństwa oraz monitoringu IT są nadal często postrzegane w sposób odrębny. Takie rozumienie wynika z faktu, że działy cyberbezpieczeństwa, co do zasady, korzystają z dużej liczby zróżnicowanych narzędzi, patrzą na zagrożenia z wielu perspektyw i na wielu poziomach. W kontekście utrzymania infrastruktury ciągle odnosimy się zaś głównie do statycznego monitoringu. Obserwowalność to jednak zdecydowanie coś więcej.
Jako Omnilogy oferujemy klientom platformę obserwowalności Dynatrace, obserwowalności, a nie monitoringu. Jej nadrzędnym zadaniem – poza zbieraniem danych telemetrycznych z obserwowanych komponentów – jest zrozumienie i analizowanie zależności między tymi danymi i ich źródłami. Zależności te mają kluczowe znaczenie zarówno w kontekście prac mających na celu zapewnienie jak największej sprawności infrastruktury IT, jak i w procesie analizy skali zagrożeń.
Platforma Dynatrace analizuje wykonywany kod aplikacji na poziomie każdej transakcji. Widzimy więc dokładnie rzeczywiste ścieżki komunikacji oraz zakres danych, do których poszczególne komponenty środowiska mają dostęp. Taka wiedza jest ogromnym ułatwieniem dla zespołów odpowiedzialnych za bezpieczeństwo.
Czy oprogramowanie Dynatrace pozwala także na wykrywanie zagrożeń?
Tak, choć jest to szerszy temat. Zacznijmy od najprostszego przypadku. Dynatrace jako rozwiązanie agentowe analizuje kod uruchamiany w poszczególnych aplikacjach. Mogą to być samodzielne aplikacje, ale także mikroserwisy, aplikacje działające w kontenerach, w chmurze prywatnej czy publicznej. Mogą być to również aplikacje typu serverless – jak Azure Functions czy AWS Lambda. Jednocześnie, oprogramowanie Dynatrace bazuje na algorytmach AI, wykrywających anomalie w stosunku do tego, co zostało sklasyfikowane jako normalne zachowanie danego systemu. Może więc – w pełni automatycznie – wykrywać profile zachowania aplikacji odbiegające od normy, np. zwiększony poziom ruchu, błędnych logowań lub błędów biznesowych.
To właśnie dzięki takim obserwacjom można w bardzo łatwy sposób wykrywać potencjalne zagrożenia czy próby naruszenia polityk bezpieczeństwa. W jednej z organizacji, dzięki tego typu funkcjonalności, bardzo szybko wykryliśmy próbę skopiowania bazy klientów przez automat przeszukujący w godzinach nocnych zbiory danych przy użyciu losowo generowanych identyfikatorów. Tego typu możliwości, choć być może nie są wprost związane z bezpieczeństwem, Dynatrace zapewnia w bardzo naturalny sposób. Przykładem dedykowanej funkcjonalności bezpieczeństwa w ramach tej platformy jest wykorzystanie agenta analizującego uruchamiany kod aplikacji do wykrywania podatności potencjalnie w tym kodzie istniejących.
W definicji obserwowalność znajduje się możliwość pomiaru stanu systemu na podstawie generowanych przez ten system danych, takich jak logi, metryki i trace’y. Każde urządzenie, oprogramowanie, komponent chmurowy, kontener, mikrousługa generuje zapisy aktywności.
Czy chodzi o tego samego agenta Dynatrace, który zbiera dane telemetryczne?
Dokładnie tego samego oraz stojącą za nim sztuczną inteligencję. Agent ma dostęp do załadowanych bibliotek, analizuje kod wykonywanych transakcji. Nie trzeba zatem na serwerach instalować dodatkowego narzędzia. Nie trzeba też wykonywać żadnych dodatkowych skanów. Dynatrace synchronizuje się z publicznymi bazami podatności – m.in. SNYK i NVD – i sprawdza uruchomiony kod aplikacji pod kątem znanych luk. Co ważne, takie rozwiązanie działa w trybie ciągłym i nie powoduje żadnego narzutu wydajnościowego na obserwowaną aplikację.
Równolegle, wszystkie gromadzone dane są interpretowane w czasie rzeczywistym – sztuczna inteligencja tworzy model analizowanych aplikacji oraz mapę powiązań między komponentami na poziomie fizycznym i logicznym. Poza tym na bazie przyjętego modelu ocenia poziom ryzyka – rozumie bowiem zależności oraz kontekst zbieranych danych. W przypadku wykrytych podatności Dynatrace – oprócz wskazania ich istnienia – dodatkowo analizuje czy dany komponent jest dostępny z sieci publicznej oraz czy ma dostęp do baz danych. Dostarcza więc komplet informacji o tym, jakie usługi lub bazy danych mogą być zagrożone wskutek odnalezionej w kodzie aplikacji podatności.
Jak dużym ułatwieniem dla zespołów odpowiedzialnych za bezpieczeństwo IT jest tego rodzaju funkcjonalność?
Ogromnym! Działy bezpieczeństwa z reguły zasypywane są informacjami o kolejnych incydentach, faktycznych lub potencjalnych. W efekcie, skuteczność ich pracy zależy w dużej mierze od umiejętności właściwego definiowania priorytetów i planowania prac, tak aby w pierwszej kolejności rozwiązywać zgłoszenia, które mają naprawdę krytyczne znaczenie. Tymczasem zdecydowana większość informacji o wykrytych podatnościach to fałszywe alarmy albo podatności o małym prawdopodobieństwie wykorzystania.
Warto pamiętać, że każda podatność raportowana z publicznej bazy ma ocenę ryzyka CVSS w skali od 0 do 10, gdzie 10 oznacza maksymalny poziom ryzyka. Jest to metryka przydatna, jednak oderwana od kontekstu danej organizacji. Nie znając kontekstu, w którym działa komponent z wykrytą podatnością, nie mamy podstaw, aby określić rzeczywisty poziom ryzyka. Każdy alarm musimy analizować z najwyższą uwagą.
W tym kontekście podejście Dynatrace wyróżnia m.in. funkcjonalność automatycznej oceny poziomu zagrożenia – bardzo trafnej zresztą. Platforma Dynatrace definiuje bowiem własny wskaźnik zwany Davis Security Score, który wyjściowo bazuje na ocenie CVSS, ale zrewidowany pod kątem konfiguracji konkretnego środowiska. Przykładowo, system Dynatrace jest w stanie zmniejszyć ocenę ryzyka, jeśli do komponentu, w którym wykryta została podatność, nie można dostać się z sieci publicznej – czyli potencjalny atak jest mniej prawdopodobny – lub też nie ma on dostępu do bazy danych, zatem ryzyko kompromitacji danych jest mniejsze.
Ponadto, dla każdej zidentyfikowanej podatności Platforma Dynatrace dostarcza informację o ewentualnym istnieniu publicznych eksploitów, za pośrednictwem których realizowana jest największa liczba ataków. Tego rodzaju selekcja odbywa się na poziomie każdego komponentu z osobna, co pozwala odpowiednio ustawić priorytety zadań w przypadku jednoczesnego wykrycia podatności na wielu komponentach – tak jak miało to miejsce w przypadku luki Log4Shell.
Dynatrace synchronizuje się z publicznymi bazami podatności – m.in. SNYK i NVD – i sprawdza uruchomiony kod aplikacji pod kątem znanych luk. Takie rozwiązanie działa w trybie ciągłym i nie powoduje żadnego narzutu wydajnościowego na obserwowaną aplikację.
Z jakimi nakładami pracy wiąże się konfiguracja funkcji Application Security w Dynatrace?
Nie trzeba nic konfigurować. Wykorzystywana jest tu wyłącznie natywna funkcjonalność agenta i samej platformy. Jedyne, co trzeba zrobić, to zdecydować czy alarmy bezpieczeństwa chcemy obserwować w samym Dynatrace, czy zintegrować je z centralną konsolą SOC. Tego typu funkcjonalność jest trudna do przecenienia – zdolność do wykrywania podatności w stosowanych bibliotekach w czasie prawie rzeczywistym, bez obciążania systemu monitorowanego, bez żadnej konfiguracji jest dzisiaj niezbędna.
Funkcjonalność Application Security diametralnie zmienia możliwości wykrywania podatności. Dotychczas standardową praktyką dla większości – tych bardziej świadomych – organizacji było wykonywanie skanów pod kątem podatności w środowiskach produkcyjnych regularnie, ale rzadko – na przykład raz na tydzień. Takie skany są kosztowne, a jednocześnie zwykle generują dużą liczbę fałszywych alarmów. Z kolei ich niewystarczająca częstotliwość sprawia, że luka w publicznie dostępnej usłudze może być otwarta przez kilka dni.
Dynatrace eliminuje takie ryzyko w sposób automatyczny. Automatyzacja wykrywania podatności jest szczególnie istotna w projektach transformacji cyfrowej zakładających modernizację aplikacji za sprawą mikroserwisów i chmury obliczeniowej, które znacząco zwiększają dynamikę zmian i skomplikowanie powiązań w aplikacjach. Dynatrace swoim rozwiązaniem wychodzi naprzeciw tym wyzwaniom dzięki zastosowaniu automatyzacji i AI.
Wykrywanie podatności to jednak nie wszystko…
Faktycznie. Prawdziwa siła Platformy Dynatrace objawia się w funkcjonalności analizy własnego kodu pod kątem możliwości przeprowadzenia ataków. Innymi słowy, zapewnia ona możliwość oceny czy tworzony w organizacji kod nie zawiera błędów, które mogą być wykorzystane przez cyberprzestępców. Jest to o tyle istotne, że kod aplikacji jest dziś tworzony w ogromnym tempie. Jeśli zestawimy ten fakt z problematyką luki kompetencyjnej i koniecznością zatrudniania początkujących deweloperów, to błędy w kodzie oprogramowania stają się wręcz naturalne.
Takie błędy, nawet najmniej oczywiste, potencjalnie mogą generować nowe podatności. Dlatego, analizując kod wykonywany na poziomie każdej transakcji, agent Dynatrace jest w stanie stwierdzić, czy jest on w pełni bezpieczny, czy może zostać wykorzystany na potrzeby ataku. Oczywiście, analogicznie, jak w przypadku wykrywania podatności bibliotek, automatycznie wykonywana jest też analiza ryzyka, ekspozycji na atak i naruszenia bezpieczeństwa danych.
Ponadto, taka analiza dostarcza konkretnych informacji o typie każdej podatności, stwierdzając, czy pozwala ona na przeprowadzenie ataku typu SQL Injection, Command Injection czy Improper Input Validation. Programista otrzymuje więc kompletną informację na czym polega problem wraz ze wskazaniem miejsca w kodzie, w którym taka podatność występuje – nie zostaje mu nic innego jak rozpocząć naprawę.
A co w sytuacji, kiedy taka podatność zostanie wykorzystana do przeprowadzenia ataku jeszcze zanim zostanie naprawiona?
Istnieją dwa scenariusze. W pierwszym z nich agent Dynatrace wykryje atak, zaraportuje użycie luki i wskaże całą ścieżkę ataku, włącznie z informacjami o tym, do jakich danych próbowano się dostać. Drugi scenariusz działania jest szerszy. Zakłada bowiem, że po wykryciu próby ataku agent Dynatrace zablokuje kod wykonywanej transakcji – tylko tej konkretnej, dzięki czemu cała aplikacja pozostaje w pełni funkcjonalna. Decyzja o tym, w jakim trybie pracuje agent, to jedyna istotna konfiguracja, którą trzeba wykonać.
W jaki sposób rozwiązania Dynatrace ułatwiają prowadzenie takich analiz?
Scenariusz przeszukiwania olbrzymich ilości danych w kontekście bezpieczeństwa był impulsem do odejścia od tradycyjnych systemów indeksujących logi. Na potrzeby Dynatrace stworzono autorską koncepcję „Grail Data Lakehouse”, która nie wymaga m.in. indeksowania i umożliwia budowanie wynikowej struktury danych w locie. Mechanizmy równoległego przetwarzania pozwalają na natychmiastowy dostęp do danych historycznych, tak samo jak do danych bieżących. Dzięki temu zyskujemy dowolność przy robieniu analizy typu post mortem, a dział bezpieczeństwa może z łatwością poszukiwać nieprzewidzianych wcześniej zależności.
Dynatrace definiuje własny wskaźnik zwany Davis Security Score, który bazuje na ocenie CVSS, ale zrewidowany pod kątem konfiguracji konkretnego środowiska. Zmniejsza np. ocenę ryzyka, jeśli do komponentu, w którym wykryta została podatność, nie można dostać się z sieci publicznej.
Mówiliśmy o bezpieczeństwie aplikacji w środowiskach produkcyjnych, a co z ochroną środowisk przedprodukcyjnych, typowych dla świata DevSecOps?
DevSecOps, podobnie jak DevOps, bazuje na automatyzacji i możliwości szybkiego dostępu do wskaźników pozwalających na ocenę jakości dostarczanego oprogramowania. Dostępną w platformie Dynatrace funkcjonalność Application Security można z powodzeniem wykorzystać do automatycznej oceny wydań pod kątem braku istotnych podatności i na podstawie dostarczonych danych np. wstrzymać promocję konkretnego wydania aplikacji do kolejnych środowisk.
Czy zautomatyzować można także kwestie, takiej jak weryfikacja konfiguracji aplikacji pod kątem zgodności z obowiązującymi w organizacji politykami?
Oczywiście! Tego typu potrzebom świetnie odpowiada rozwiązanie Sysdig – dedykowane narzędzie, które rekomendujemy w projektach chmurowych, zarówno w obszarze chmury prywatnej, jak i chmury publicznej. Jesteśmy bowiem w stanie włączyć Sysdig w proces tworzenia infrastruktury w modelu GitOps – Infrastructure as Code, a rozwiązanie to automatycznie zidentyfikuje potencjalne ryzyka i niezgodności z politykami w szablonach konfiguracji oraz pozwoli zablokować ich wykorzystanie. Podobnie w przypadku obrazów maszyn.
W efekcie, Sysdig zapobiega uruchomieniu aplikacji, która nie spełnia standardów bezpieczeństwa. W ramach projektów, które realizujemy przy użyciu Sysdig, jesteśmy w stanie sprawdzić zgodność konfiguracji z takimi standardami, jak CIS benchmarks, NIST 800-53, SOC2 czy PCI-DSS. Zapewniamy poświadczenia, które mogą być wykorzystane do wewnętrznych i zewnętrznych audytów.
Co więcej, właśnie Sysdig pomaga w nadawaniu uprawnień minimalnych, sugerując odpowiednie zasady, tak aby eliminować przypadki przydzielania nadmiarowych przywilejów. Jest to o tyle ważne, że struktura uprawnień w środowiskach chmurowych jest bardzo granularna, skomplikowana i stale się rozrasta.
Czy zapewnienie bezpieczeństwa środowisk aplikacyjnych opartych na zasobach chmurowych wymaga zupełnie innego rozłożenia ciężaru działań w obszarze bezpieczeństwa IT?
Zdecydowanie tak. Nie ma przypadku w tym, że kładziemy dzisiaj nacisk na bezpieczeństwo samej aplikacji i konkretnych zasobów chmurowych. Największy wpływ mamy bowiem na to, co uruchamiamy i na to, gdzie uruchamiamy. Dobierając odpowiednie techniki i narzędzia, a także włączając bezpieczeństwo w procesy DevOps, jesteśmy w stanie stworzyć rozwiązania, które w sposób w pełni zautomatyzowany pozwolą na zapewnienie bezpieczeństwa opartego na warstwie aplikacji i infrastruktury. Myślę, że w tym kontekście oferta Omnilogy jest naprawdę unikalna. Jesteśmy blisko procesów zagwarantowania niezawodności, a nie da się zapewnić niezawodności bez bezpieczeństwa aplikacji. Znamy się na tym, choć – przyznaję – proponujemy naturalne, ale ciągle nieoczywiste podejście.