()

Wstęp – definicje Vulnerability Management i podatności

Vulnerability Management tłumaczy się na język polski jako Zarządzanie podatnościami. Aby zrozumieć, czym jest owe zarządzanie podatnościami, należy najpierw zdefiniować samą podatność. Według jednej z definicji:

Podatność to wada, która może zniszczyć, uszkodzić lub narazić na szwank aktywa. W przypadku oprogramowania podatność jest zazwyczaj błędem w kodzie programu (bug) lub wadą w sposobie, w jaki program ujawnia lub umożliwia dostęp do danych.1

Podatność można zdefiniować jako lukę, powstałą na etapie projektowania aplikacji lub skonfigurowanie aplikacji w sposób, który takową lukę tworzy. Wspomniana już dwukrotnie luka powiązana jest z wieloma konsekwencjami, takimi jak m.in.:

  • Wyciek danych – wykorzystanie podatności przez atakujących może prowadzić do kradzieży danych wymagających szczególnej ochrony. Mowa tutaj głównie o danych osobowych, których przetwarzanie jest ściśle określone m.in. przez RODO. Wyciek takich danych może wiązać się ze znacznymi karami finansowymi, odpowiedzialnością karną czy utratą reputacji – a na pewno wiąże się z ogromnym stresem dla wielu osób. Może to również narazić na ryzyko kradzieży tożsamości, a w konsekwencji np. zaciągnięcie na nich pożyczek.
  • Eskalacja uprawnień – wykorzystanie określonych podatności pozwala również na podniesienie swoich uprawnień do poziomu administratora (Windows) lub roota (Linux). Jest to bardzo niepożądane działanie, ponieważ przez to każde lokalne lub domenowe konto może przejąć kontrolę nad systemem lub domeną. Takie podatności są bardzo atrakcyjne dla atakujących, ponieważ przejęcie konta bez zwiększonych uprawnień może doprowadzić ich do pełnej kontroli nad danym środowiskiem. Przykładem takiej podatności jest CVE-2018-8440, które pozwalało na podniesienie swoich uprawnień do poziomu administratora w Windowsach. Co ciekawe, była to luka windowsowego Harmonogramu zadań (Task Scheduler), która miała tak poważne konsekwencje.
  • Zdalne wykonanie kodu (RCE, ang. Remote Code Execution) – bardzo atrakcyjna podatność dla atakujących, ponieważ pozwala na wykonanie dowolnego złośliwego kodu bez konieczności uwierzytelniania w systemie. Dzięki temu mogą m.in. pobrać pożądane złośliwe oprogramowanie na urządzenie lub uruchomić tzw. reverse shell (odwrócona powłoka), który służy do kontrolowania serwera, omijając przy tym zapory ogniowe. Przykładem takiej podatności jest BlueKeep (CVE-2019-0708), który dotyczył różnych wersji Windowsów (Windows 7 i starsze). Luka polegała na możliwości wykonania złośliwego kodu poprzez wysłanie odpowiedniego pakietu, bez konieczności uwierzytelniania się.
  • Uniemożliwienie działania systemu – podatności mogą również zostać wykorzystane w atakach DoS lub DDoS (Denial-of-service / Distributed Denial-of-service), które przeciążają dane urządzenie. Zazwyczaj ataki DDoS polegają na wysłaniu ogromnej ilości pakietów do serwera, lecz ataki mogą wykorzystać również luki w oprogramowaniu. Jedną z takich luk było tzw. FragmentSmack (CVE-2018-5391), która polegała na wysyłaniu wielu pakietów, które były odpowiednio pofragmentowanymi pakietami IP. Wymuszało to na systemie przeprowadzanie wielu obliczeń, które znacznie obciążały procesor. Podatność była skierowana głównie na dystrybucje Linuksa i dotyczyła określonych wersji kernela.

Podatności mają wiele pośrednich konsekwencji, których nie wolno pominąć. Wykorzystanie podatności przez atakujących może wiązać się z wcześniej wspomnianymi konsekwencjami, wobec których nie można przejść obojętnie.

Aby uniknąć powyższych konsekwencji należy zarządzać podatnościami. Zanim jednak omówię, czym właściwie jest Vulnerability Management, omówię czym jest CVE ID – bardzo przydatne w tym procesie.

Źródło: https://pixabay.com/pl/illustrations/bezpiecze%C5%84stwo-cybernetyczne-1784985/

CVE, czyli skatalogowanie podatności

CVE to skrót od angielskiego Common Vulnerabilities and Exposures. Można powiedzieć, że jest to słownik podatności – każda podatność ma przypisany swój unikalny numer. Projekt sponsorowany jest przez Departament Bezpieczeństwa Krajowego Stanów Zjednoczonych i prowadzony przez dobrze znaną przez bezpieczników organizację, jaką jest MITRE.

Źródło: https://www.cve.org/

Nad projektem czuwa również amerykański National Institute of Standards and Technology, znany powszechnie jako NIST. Prowadzi on listę podatności opartą na numerach CVE, znaną jako National Vulnerability Database (w skrócie NVD). Strona NVD NIST jest bardzo praktyczna, ponieważ zawiera odnośniki do informacji o podatności, wraz z określeniem wagi podatności.

Źródło: https://nvd.nist.gov/vuln/detail/CVE-2014-0160

Źródło: https://nvd.nist.gov/vuln/detail/CVE-2014-0160

Źródło: https://nvd.nist.gov/

CVE ID składa się z:

  • Przedrostka CVE;
  • Roku, w którym podatność została opisana;
  • Unikalnego ciągu cyfr – do 2014 roku były to maksymalnie cztery cyfry, obecnie może być to nawet 7 cyfr.

Poszczególne fragmenty oddzielone są od siebie myślnikami.

Przykład: CVE-2014-0160.

Projekt CVE istnieje od 1999 roku. Pierwszą znalezioną i opisaną podatnością w ten sposób CVE-1999-0007, która została zaraportowana przez Microsoft2. Najniższym numerem CVE jest CVE-1999-0001.

Wspomnianą wcześniej wagę podatności określa się za pomocą CVSS, czyli Common Vulnerability Scoring System. Pozwala on na określenie wagi podatności, czyli tego jak poważna jest luka bezpieczeństwa. Dzięki niemu można za pomocą skali od 1 do 10 ocenić wagę podatności.

Pierwsza wersja CVSS została opublikowana w 2005 roku, druga w 2007 roku, trzecia w 2015 roku, zaś czwarta w 2023 roku. Obecnie powszechnie wykorzystuje się CVSS w wersji 3, o czym można się przekonać na stronie NIST NVD.

https://nvd.nist.gov/vuln/detail/CVE-2023-6658

Liczenie wagi podatności odbywa się za pomocą wielu działań matematycznych, dlatego podczas liczenia używa się gotowych kalkulatorów. Dla każdej podatności można zobaczyć, jak została wyliczona waga podatności – wystarczy nacisnąć na jej wynik. W powyższym przykładzie był to czarny prostokąt, w którym wpisane było 9.8 CRITICAL.

Źródło: https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator?name=CVE-2023-6658&vector=AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H&version=3.1&source=NIST

Źródło: https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator?name=CVE-2023-6658&vector=AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H&version=3.1&source=NIST

Każda wersja CVSS opiera się na uwzględnianiu wielu różnych czynników podczas określania wagi podatności. Dla CVSS w wersji 3 jest to 8 czynników, takich jak:

  • Wektor ataku (Attack vector, AV) – jeden z czterech możliwych wektorów ataku, czyli sposobów wykorzystania danej podatności. W tym kontekście oznacza to, jaki dostęp do danego środowiska ma atakujący. Wśród wektorów ataku wyróżnia się: Sieć [Internet] (Network, AV:N), Sieć lokalna (Adjacent Network, AV:A), Konto lokalne (Local, AV:L) i Fizyczny dostęp do urządzenia (Physical, AV:P)
  • Złożoność ataku (Attack complexity, AC) – wyróżnia się dwa poziomy złożoności: Niską złożoność (Low, AC:L) i Wysoką złożoność (High, AC:H). Z założenia niska złożoność nie wymaga od atakującego wielu przygotowań – ten sam atak może być powielony na wielu urządzeniach. Wysoka złożoność może wymagać np. konkretnej konfiguracji serwera, która jest podatna na dane zagrożenie.
  • Wymagane uprawnienia (Privileges Required, PR)określa poziom wymaganych uprawnień do wykorzystania podatności. Wyróżnia się trzy stopnie: Brak jakichkolwiek uprawnień (None, PR:N), Podstawowe uprawnienia użytkownika (Low, PR:L) i Zwiększone uprawnienia (High, PR:H)
  • Stopień interakcji użytkownika (User Interaction, UI)wyróżnia się dwa poziomy interakcji użytkownika: Brak interakcji (None, UI:N) i Wymagana interakcja (UI:R)
  • Zakres (Scope, S)dotyczy zakresu podatnych komponentów. Jeśli podatność w danym oprogramowaniu dotyczy jedynie tego oprogramowania i nie może być dalej wykorzystywana, ma nadawany status Unchanged (S:U). Jeśli zasoby inne niż podatne oprogramowanie mogą zostać dotknięte przez podatność, ma ona nadawany status Changed (S:C).

Pozostałe trzy czynniki pochodzą z Triady CIA. Są nimi:

  • Poufność (Confidentiality, C)
  • Integralność (Integrity, I)
  • Dostępność (Availability, A)

Do trzech powyższych czynników stosuje się trzy, te same miary: Zerowy wpływ (None), Mały (Low) i Duży (High).

Powyższe wskaźniki zostały omówione dla bazowej wartości CVSS (Base Score Metrics).

Zależnie od sumy uzbieranych punktów, podatności nadawana jest konkretna wartość ostrzeżenia. Do każdej podatności można przypisać jeden z czterech opisów wag: Low (Mała), Medium (Średnia), High (Duża) i Critical (Krytyczna).

Źródło: https://nvd.nist.gov/vuln-metrics/cvss

Wartość CVSS stanowi dla nas kluczową informację w procesie zarządzania podatnościami, ponieważ pokazuje nam możliwy wpływ podatności na dane urządzenia bądź aplikacje.

Źródło: https://pixabay.com/pl/photos/bezpiecze%C5%84stwo-cybernetyczne-smartfon-2765707/

Założenia zarządzania podatnościami

Przede wszystkim należy pamiętać o tym, że podatności były, są i będą. Jednorazowe załatanie wszystkich podatności da niewiele w długoterminowej perspektywie, ponieważ nowe zagrożenia systemów nadal będą się pojawiać. Wieloletnie trendy pokazują, że podatności jest jedynie coraz więcej.

Źródło: https://www.statista.com/statistics/500755/worldwide-common-vulnerabilities-and-exposures/

Na podstawie powyższych danych możemy wywnioskować, że w 2022 roku odkrywane było ok. 69 podatności dziennie. To prawie 5.5 razy więcej względem roku 2010, gdzie raportowano ok. 13 podatności dziennie.

Dzieje się tak, ponieważ podatności bardzo często wynikają z błędów ludzkich – to właśnie ludzie odpowiadają za tworzenie oprogramowania i konfigurowanie urządzeń3. Oznacza to, że odkrywanie kolejnych podatności jest praktycznie nie do uniknięcia, więc proces zarządzania podatnościami powinien być cykliczny. Można to porównać do drogi asfaltowej – nawet nowopowstała droga będzie z czasem wymagać remontów, zaś w świecie IT te „remonty” muszą być błyskawiczne.

W oparciu o: https://securitybeztabu.pl/vulnerability-management

Zero-day, czyli wszystkie ręce na pokład

Zero-day to jedna z gorszych rzeczy, z jakimi możemy spotkać się w piątek o 15.00. Zero-day to luka w zabezpieczeniach, na którą producent oprogramowania nie wypuścił aktualizacji.

Zgodnie z etyką działań w cyberprzestrzeni po wykryciu luki w zabezpieczeniach, powinno się poinformować twórców danego oprogramowania o możliwym exploitcie, aby mogli przygotować odpowiednią łatkę, zanim wiedza o wykorzystaniu podatności zostanie upubliczniona. Dzięki temu każdy, kto uaktualni oprogramowanie będzie (z założenia) zabezpieczony przed podatnością, która została upubliczniona.

Zero-day’e mogą wymagać od nas niestandardowych działań, które mogą być konieczne.

Źródło: https://pixabay.com/pl/photos/hakerstwo-cyber-haker-przest%C4%99pczo%C5%9B%C4%87-2964100/

Wybrane 0-day’e

  • Heartbleed (CVE-2014-0160) – podatność w OpenSSL odkryta w 2014 roku, która pozwalała na odczytywanie wybranych obszarów pamięci serwera – co mogło prowadzić do wycieku danych wrażliwych. Wynikała z błędnej interpretacji rozszerzenia Heartbeat, które służyło do utrzymywania nawiązanych wcześniej połączeń między klientem a serwerem. Była szczególnie groźna ze względu na to, że wykorzystanie jej nie zostawiało żadnego śladu w logach serwera.

Nieoficjalne logo podatności. Źródło: https://pl.wikipedia.org/wiki/Plik:Heartbleed.svg

  • Log4shell (CVE-2021-44228) – podatność w bibliotece log4j, która pozwala na zdalne wykonanie kodu (RCE) bez uwierzytelniania. Podatność była poważna, ponieważ dotykała wielu różnych programów od Apache – o tym, jakie były to programy, można przeczytać tutaj.
  • Exploity opracowane przez NSA, które zostały później wykorzystane np. w ataku WannaCry – NSA odkryło kilka podatności, do których exploity zostały skradzione, a następnie opublikowane. Jednym z nich był tzw. EternalBlue, który został opublikowany miesiąc po wprowadzeniu poprawki bezpieczeństwa przez Microsoft, oznaczonej jako MS17-010.

Oznacza to, że (na szczęście…) WannaCry wykorzystujące EternalBlue nie było 0-day’em – jednak same podatności były nimi w momencie, gdy nie były publicznie znane.

Przerażający widok.
Źródło: https://upload.wikimedia.org/wikipedia/commons/4/4f/%EA%B0%90%EC%97%BC%EC%82%AC%EC%A7%84.png

Jak identyfikować podatności?

Zacznę trywialnie, lecz to zdanie jest bardzo potrzebne – aby cokolwiek naprawić, najpierw trzeba zidentyfikować co jest popsute. Nie da się załatać opony, jeśli nie wiemy gdzie jest dziura.

Podstawą w identyfikowaniu podatności są… skanery podatności. To właśnie one pozwalają na wykrywanie podatności, które mogą i powinny być załatane. Przykładami takich skanerów jest np. Nessus (przeznaczony głównie dla firm) czy OpenVAS (otwartoźródłowy skaner).

Jest pewne darmowe narzędzie, które pozwala na identyfikowanie podatności na wielu różnych urządzeniach. Może to niektórych zaskoczyć, ale nmap pozwala na skan pod kątem konkretnych podatności – nie tylko otwartych portów i wersji usług. Więcej o tym można przeczytać na oficjalnej stronie nmapa – możliwe tagi do wykorzystania dostępne są tutaj.

Źródło: https://pixabay.com/pl/illustrations/dw%C3%B3jkowy-kod-kod-binarny-zero-4791836/

Jak łatać podatności?

Łatanie podatności może odbywać się na różny sposób. Należy jednak wspomnieć o podstawowym narzędziu utrudniania życia cyberprzestępców, jakim są aktualizacje. Instalowanie aktualizacji to podstawa, jeśli chodzi o unikanie podatności.

W procesie łatania podatności należy również mieć na uwadze to, jakie urządzenia powinny być załatane jako priorytetowe. Inne zagrożenie stanowi podatność na serwerze wystawionym do sieci, niż np. z urządzenia znajdującego się w sieci lokalnej, które nie ma dostępu do Internetu. Należy jednak pamiętać przy tym, aby nie lekceważyć pozornie nieszkodliwych zakątków naszej sieci – każde takie miejsce może być łakomym kąskiem dla atakujących.

Kontrola wprowadzanych zabezpieczeń

Vulnerability management opiera się o pięć bardzo ważnych etapów, które pozwalają kontrolować poziom bezpieczeństwa.

  1. Wykrywanie luk w zabezpieczeniach
  2. Nadawanie priorytetów w oparciu o wagę podatności
  3. Raportowanie
  4. Łatanie podatności
  5. Sprawdzenie poprawności wprowadzonych zmian

Każdy z tych punktów jest konieczny do poprawnego zarządzania podatnościami.

Źródło: https://pixabay.com/pl/photos/oko-informacja-technologia-cyfrowy-3374462/

Podsumowanie

Vulnerability management jest tematem, który wymaga stałych nakładów pracy. Nie wolno lekceważyć zarządzania podatnościami – może mieć to tragiczne konsekwencje.

Naiwnym jest mówienie, że cokolwiek jest w pełni bezpieczne – jednak można zrobić wiele, aby wyeliminować jak najwięcej jak najpoważniejszych zagrożeń. Należy pamiętać o tym, że liczba podatności najprawdopodobniej będzie stale rosnąć.

Pisał dla Was Oskar Klimczuk.

Przypisy i źródła

1 https://courses.minnalearn.com/pl/courses/cybersecurity/what-is-cybersecurity/evaluating-risk/

2 https://learn.microsoft.com/en-us/security-updates/securitybulletins/1998/ms98-002

3 Stan na grudzień 2023 🙂

Jak przydatny był ten Artykuł

Kliknij gwiazdke by zagłosować

Średni / 5. Liczba głosów

Doceń naszą prace

Przepraszam że ten post nie był dla Ciebie przydatny

Popraw ten post!

Napisz mi co mogę poprawić