W świetle nadchodzących zmian związanych z wchodzącym Cyber Resilience Act organizacje kładą coraz większy nacisk na sprawdzanie i rozwiązywanie CVE (Common Vulnerability and Exposures). Jeśli budujesz swoje obrazy Linuxa korzystając z Yocto to możesz skorzystać z wbudowanych mechanizmów pozwalających na sprawdzenie bazy NIST (National Institute of Standards and Technology) i wykrycie które CVE dotyczą aplikacji w twojej dystrybucji.
Włączenie cve-check w Yocto
Samo włączenie sprawdzania CVE w Yocto jest bardzo proste. Wystarczy, że do swojego pliku local.conf dodasz następującą linię:
INHERIT+="cve-check"
a następnie zbudujesz paczkę lub obraz komendą bitbake. Poza standardową procedurą budowania dodany zostanie jeden task- do_cve_check, który pobierze bazę danych o CVE ze strony NIST, a następnie sprawdzi wersje twoich aplikacji w bazie.
Efektem tego będzie plik z listą CVE. W Yocto 3.1 (Dunfell) był to zwykły plik tekstowy, a w Yocto 4.0 (Kirkstone) dodano również odpowiednik tego raportu w formacie JSON.
Jak łatać CVE w Yocto?
Opcja 1: Aktualizowanie meta warstw
Najprostszym sposobem naprawy luk jest aktualizacja meta warstw (np. meta-openembedded, meta-oe, poky). W wielu przypadkach nowe wersje warstw zawierają poprawki na CVE i ich aktualizacja może rozwiązać problem. Jednak aktualizacja całej warstwy może wprowadzić zmiany w innych pakietach, co wymaga testów kompatybilności.
Opcja 2: korzystanie z patchy
Gdy aktualizacja meta warstw nie jest możliwa lub pożądana, można ręcznie dodawać patche naprawiające konkretne podatności. W Yocto można to zrobić poprzez dodanie patchy do katalogu files/ w warstwie BSP i modyfikację SRC_URI w pliku recipe.
Opcja 3: allowlisting
Jeśli dany CVE nie stanowi realnego zagrożenia w kontekście projektu, można go dodać do allowlisty, aby uniknąć fałszywych alarmów. Aby to zrobić w Dunfell, można dodać numer CVE do pliku cve-check-exclude.txt.
W Kirkstone…
TODO
Minusy korzystania z bazy NIST
Baza NIST zawiera wiele wpisów, ale nie zawsze odzwierciedla rzeczywisty poziom ryzyka dla konkretnego projektu. Może też zawierać opóźnione aktualizacje, co powoduje, że niektóre podatności mogą być zgłaszane jako aktywne, mimo że są już załatane w upstreamie.
W lutym 2024 rozwiązywanie CVE przez NIST znacznie zwolniło i taki stan utrzymał się przez około 3 miesiące. Instytut nie wytłumaczył co było powodem tej zmiany zachowania.
Z kolei w grudniu 2024 znacznie zwolniła prędkość pobierania bazy NIST przy użyciu API- pobranie jednej bazy trwało czasem nawet ponad 24h.
Dlatego też warto pamiętać, że NIST i jego NVD (National Vulnerability Database) nie jest jedynym miejscem, gdzie mamy do czynienia z listą vulnerabilities. Alternatywą może być baza MITRE, wewnętrzna baza BluckDuck i inne.
Co dalej z tymi CVE?
Korzystanie z BlackDuck
TODO

Dodaj komentarz