()

Wstęp

CVE to dość często używany skrót w świecie podatności. Pochodzi od angielskiego Common Vulnerabilities and Exposures – dosłownie można to przetłumaczyć jako Powszechne Podatności i Ekspozycje [na zagrożenia].

Celem CVE jest opisanie i skatalogowanie każdej podatności w systemach informatycznych, dzięki czemu można nadać jej konkretny numer – czyli CVE ID.

Źródło: https://pixabay.com/pl/photos/bezpiecze%C5%84stwo-alarm-monitor-cyber-5043368/

Czym jest CVE ID?

CVE ID to identyfikator CVE. Składa się on z trzech elementów:

  • Przedrostka CVE;
  • Roku wykrycia podatności;
  • Numeru podatności, który jest unikalnym ciągiem cyfr. Obecnie może mieć on nawet 7 cyfr, lecz do 2014 było to limitowane do czterech.

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

Przykład: CVE-2021-44228 – znane popularnie jako Log4shell – krytyczna podatność w Log4j odkryta w 2021 roku, która umożliwiała zdalne wykonanie kodu (RCE).

Dzięki opisaniu każdej podatności za pomocą jednego identyfikatora, przypisanego na stałe do podatności, można wymieniać się informacjami o nich, jak i wdrażać poprawki bądź aktualizacje, które łatają daną podatność.

Identyfikatory CVE są nadawane już od 1999 roku. Jest ich już 223 313 (stan na 4 stycznia 2024 r.) Można to zobaczyć na oficjalnej stronie projektu, czyli cve.org.

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

O tym, kto odpowiada za tworzenie CVE, dość dobrze mówi stopka strony:

CVE is sponsored by the U.S. Department of Homeland Security (DHS) Cybersecurity and Infrastructure Security Agency (CISA). Copyright © 1999-2024, The MITRE Corporation.

Można z niej wyczytać, że za utrzymywanie CVE odpowiada dobrze znane bezpiecznikom MITRE – twórcy MITRE ATT&CK. Należy również zaznaczyć, że projekt wspierany jest przez Departament Bezpieczeństwa Krajowego USA (DHS) i amerykańską Agencję ds. Cyberbezpieczeństwa i Bezpieczeństwa Infrastruktury (CISA).

Więcej o mapowaniu ataków hakerskich można przeczytać tutaj.

Źródła informacji o CVE

Oto lista kilku źródeł informacji w oparciu o wyszukiwanie z użyciem danego CVE ID:

  • Oficjalne strony projektu: cve.org i cve.mitre.org (starsza wersja)
  • Narodowa baza podatności (NVD – National Vulnerability Database), tworzona przez amerykański NIST (National Institute of Standards and Technology): nvd.nist.gov (bardzo dobre i praktyczne źródło informacji o podatnościach)
  • CVE Details
  • Google – czasami warto po prostu wpisać numer podatności i trochę poszperać 🙂

CVSS, czyli odpowiedź na pytanie: A poważna ta podatność?

To oczywiste, ale warte podkreślenia: nie każda podatność jest krytyczna. Podatności mają różny wpływ na system bądź aplikacje i wymagają rozmaitych warunków, aby być wykorzystane przez atakujących.

Przykładowo – jeśli mamy podatność, która może zostać wykorzystana przez dowolne urządzenie z Internetu, będzie to o wiele większe zagrożenie niż wykorzystanie tej samej podatności, która wymaga wcześniejszego uwierzytelnienia się w systemie.

Aby ujednolicić wagę podatności dla danego środowiska, w 2005 roku wcielono w życie CVSS (ang. Common Vulnerability Scoring System). CVSS pozwala na nadawanie podatnościom konkretnych wag, dzięki czemu można przydzielić danej luce bezpieczeństwa konkretną liczbę z przedziału 0 do 10 w oparciu o odpowiednie parametry. Obecnie najnowszą wersją CVSS jest CVSS 4.0, lecz powszechnie stosowane jest CVSS 3.0 i 3.1. Wersja 4.0 została wydana pod koniec 2023 roku.

Tak prezentuje się wykres odnośnie CVSS dla podatności:

Źródło: https://www.cvedetails.com/cvss-score-distribution.php

Obliczanie numeru CVSS jest dość skomplikowane i składa się z poniższych elementów (dla CVSS w wersji 3):

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

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).

Za powyższymi parametrami stoi królowa nauk – matematyka. Tak wygląda wycinek z wyliczeń:

Ź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

CVSS jest dość dobrze opisany na angielskiej Wikipedii: link.

Więc po co mi to CVE i CVSS?

Odpowiedź jest dość logiczna – skatalogowanie podatności i nadanie jej odpowiedniej wagi pozwala na dalsze działanie.

Gdyby nie CVE ID, trudno byłoby rozmawiać o podatnościach – czasem kilka numerów CVE może dotyczyć bardzo podobnych luk w oprogramowaniu. Gdyby nie CVSS, nie byłoby możliwości wskazania, jak poważna jest dana luka. Zupełnie inne zachowanie będzie wymagane dla krytycznej podatności w porównaniu dla podatności, która jest możliwa do wykorzystania w bardzo specyficznych warunkach.

Kto może nadawać CVE ID?

Numery mogą nadawać CNA, czyli CVE Numbering Authorities. Obecnie jest to ponad 355 organizacji z 39 krajów.

Najwięcej organizacji pochodzi z USA – dokładnie 189. Na drugim miejscu znajduje się Chińska Republika Ludowa z 20 organizacjami. Ostatnie miejsce na podium zajmują Niemcy z 14 organizacjami. Pełna lista organizacji dostępna jest tutaj.

Od sierpnia 2023 roku CERT Polska może nadawać numery CVE. Jest to jedyna polska organizacja z takimi uprawnieniami. Jeżeli chcemy zgłosić podatność, można zrobić to tutaj.

Źródło: https://www.cve.org/assets/cvePartnersMap-HQkqPJ6_.png

W procesie zgłaszania podatności ważne jest również to, aby nie publikować informacji o niej w Internecie. Dotyczy to przede wszystkim PoC (ang. Proof of Concept – potwierdzenie, że faktycznie taka podatność istnieje) i exploitów. Może to spowodować efekt odwrotny od zamierzonego – atakujący mogą wykorzystać podatność, zanim zostanie załatana przez dostawcę oprogramowania. CERT Polska pisze o tym dość jasno:


„Prosimy o nie publikowanie informacji o podatności przed zakończeniem procesu jej obsługi. Jeśli Zgłaszający planuje takie działania, prosimy o informację wyprzedzającą.”źródło

Przykładowe CVE wraz z krótkim opisem

  • CVE-2017-0144 – podatność w SMBv1, która była wykorzystywana przy WannaCry – jednym z większych ataków w historii. Wykorzystywał ją EternalBlue, exploit opracowany przez NSA.
    CVSS (wersja 3): 8.1 (wysoka)
  • CVE-2019-0708 (BlueKeep) – podatność w RDP (protokół odpowiedzialny za zdalny pulpit), która pozwala na zdalne wykonanie kodu (RCE) nieuwierzytelnionym użytkownikom.
    CVSS (wersja 3): 9.8 (krytyczna)
  • CVE-2016-5195 (Dirty Cow) – bardzo nietypowa podatność, obecna w linuksowym kernelu od września 2007. Jej pierwsze wykorzystanie zostało odnotowane dopiero w październiku 2016 roku, czyli 9 lat później. Podatność dotyczyła mechanizmu kopiowania przy zapisie (ang. copy-on-write – inaczej COW). Pozwala ona na eskalację uprawnień do poziomu roota. Nie zostawiała po sobie logów w systemie.
    CVSS (wersja 3): 7.8 (wysoka)

CVE dla atakujących – praktyczne zastosowanie

Na podstawie kilku przykładów odpowiem na dość ważne pytanie: Czy CVE mają zastosowanie w atakach?

Exploit-DB

Jeśli istnieje publiczny exploit, zapewne można go wyszukać za pomocą CVE. Dla przykładu odwiedziłem stronę exploit-db.com, gdzie jest taka możliwość. W polu wyszukiwania wpisałem CVE-2017-8759.

Podatność ma dość duże CVSS – 7.8 (w wersji 3).

Źródło: https://nvd.nist.gov/vuln/detail/cve-2017-8759

Po wyszukaniu tego numeru podatności, na stronie ukazał się jeden wynik:

Po kliknięciu w niego, pokazała się krótka notka. Kluczowa jest jednak pierwsza linijka:

„Source: https://github.com/Voulnet/CVE-2017-8759-Exploit-sample

Po kliknięciu w link, zostałem przekierowany do strony na GitHubie o poniższej zawartości:

Jeśli autor nie kłamie, jest to exploit wykorzystujący wskazaną przeze mnie podatność.

Metasploit

Metasploit to narzędzie, które jest bardzo przydatne podczas ataków z korzystaniem konkretnych podatności, ponieważ zawiera on bazę eksploitów i pozwala na łatwe podtrzymanie komunikacji między podatnym urządzeniem a atakującym. Metasploit pozwala na wyszukiwanie exploitów za pomocą CVE. Aby uruchomić konsolę Metasploit, należy użyć polecenia msfconsole.

Polecam otwierać i zamykać msfconsole – można trafić ciekawe obrazki, tak jak tę krowę 🙂


Jeśli poszukamy po CVE ID przypisanym do EternalBlue, znajdziemy gotowy exploit:

Znajdziemy również exploit opracowany na JetBrains TeamCity z 2023 roku:

Kolejny przykład – CVE-2020-0646, podatność w SharePoint:

Oczywiście, nie wolno tych exploitów używać w przypadku, jeśli nie mamy na to pisemnej zgody – grozi za to do 2 lat więzienia (Art. 267 Kodeksu Karnego).

Shodan

Shodan nazywany jest Google Internetu. W uproszczeniu, jest on bazą urządzeń widocznych z Internetu. Shodan udostępnia filtr vuln, dzięki któremu można wyszukiwać podatności za pomocą CVE ID. Dostęp do tego filtru mają wybrane pakiety komercyjne, jak i osoby posiadające dostęp akademicki. Jeśli masz mail w domenie swojej uczelni, który posiada .edu – warto taki dostęp uzyskać 🙂

Shodan nie pozwala jednak na wyszukiwanie po wszystkich numerach CVE. Przykładowo, dla wspomnianego już wielokrotnie CVE-2017-0144 nie zwróci żadnych wyników:

Co innego jednak dla CVE-2021-34473 – krytycznej podatności w Microsoft Exchange Server:

Źródło: https://nvd.nist.gov/vuln/detail/cve-2021-34473

Źródło: https://www.shodan.io/search?query=vuln%3Acve-2021-34473

Shodan zwrócił dokładnie 4500 wyników. Należy jednak mieć na uwadze, że prawdopodobnie wiele z nich to tzw. honeypoty, czyli przynęty dla atakujących.

WAŻNE!!! Podobnie jak w przypadku Metasploita, za wykorzystanie takiej podatności grozi nam odpowiedzialność karna.

Podsumowanie

CVE ID to bardzo ważny element zwiększania bezpieczeństwa w cyberprzestrzeni. Dzięki identyfikatorom podatności można mówić o nich w sposób, który będzie zrozumiały dla osób zajmujących się tym tematem.

Oczywiście, uczenie się numerów CVE na pamięć nie jest konieczne – najważniejsze, aby być odpornym na zagrożenia, które za nimi stoją 🙂

Pisał dla Was Oskar Klimczuk.

Źródła

CVSS – https://en.wikipedia.org/wiki/Common_Vulnerability_Scoring_System#

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ć