Podatności Linux kernel (dm-pcache)
7 znanych podatności CVE w Linux kernel (dm-pcache), przetłumaczonych i ocenionych.
- CVE-2026-80962Nieznane
W jądrze Linux moduł dm-pcache nie waliduje pól geometrii (n_segs i id segmentu) pochodzących z metadanych cache_info na dysku. Funkcja cache_segs_init() iteruje n_segs razy, indeksując tablicę cache->segments[], która ma rozmiar wynikający z geometrii urządzenia. Ponieważ metadane są chronione jedynie CRC z publicznym ziarnem, osoba dostarczająca urządzenie cache (CAP_SYS_ADMIN) może podać zbyt duże n_segs lub identyfikator spoza zakresu, powodując odczyt i zapis poza zakresem. Poprawka odrzuca nieprawidłowe wartości przed użyciem.
- CVE-2026-80961Nieznane
W jądrze Linux moduł dm-pcache nie ogranicza pola key_num w ksecie ani granic wewnątrz segmentu. key_num steruje funkcją cache_kset_crc() i pętlą odtwarzania w cache_replay(), a ponieważ sprawdzane są tylko magic i CRC z publicznym ziarnem, nieprawidłowy key_num może spowodować odczyt poza buforem PCACHE_KSET_KEYS_MAX. Dodatkowo przesunięcie i długość klucza w cache_key_decode() są przyjmowane bez weryfikacji, co pozwala na odczyt poza segmentem i wyciek danych do przestrzeni użytkownika. Poprawka dodaje walidację key_num i granic klucza.
- CVE-2026-80960Nieznane
W jądrze Linux moduł dm-pcache nie waliduje pola seg_num pochodzącego z superbloku chronionego tylko crc32c. seg_num określa rozmiar tablicy cache->segments[] i jest używany do ograniczania identyfikatorów segmentów, ale nigdy nie jest sprawdzany względem rozmiaru urządzenia. Osoba dostarczająca urządzenie cache (CAP_SYS_ADMIN) może podać zbyt duże seg_num, co prowadzi do zapisu poza zakresem (memset 12 KiB) w pamięci jądra podczas ładowania tabeli. Poprawka odrzuca seg_num równy zero, większy niż urządzenie może pomieścić lub większy niż PCACHE_CACHE_SEGS_MAX.
- CVE-2026-80959Nieznane
W jądrze Linux moduł dm-pcache nie ogranicza przesunięcia seg_off w funkcji cache_pos_decode(), która pobiera zapisane wartości key_tail i dirty_tail z urządzenia cache. Wartość seg_off równa lub większa niż rozmiar danych segmentu (data_size), kontrolowana przez osobę dostarczającą urządzenie (CAP_SYS_ADMIN), powoduje odczyt poza segmentem. Poprawka odrzuca zdekodowane seg_off, które nie jest mniejsze niż data_size segmentu.
- CVE-2026-80958Nieznane
W jądrze Linux moduł dm-pcache w funkcji cache_replay(), wątku zapisu zwrotnego i wątku GC ogranicza długość odczytu tail-kset przez PCACHE_SEG_SIZE - seg_off, czyli surowy rozmiar segmentu, a nie region danych. Odczyt tail blisko końca segmentu wykracza poza dane segmentu do następującego obszaru kontrolnego. Poprawka ogranicza odczyt do cache_seg_remain(), czyli regionu danych.
- CVE-2026-80957Nieznane
W jądrze Linux moduł dm-pcache w funkcji cache_replay() podąża za łańcuchem last-kset z metadanych przez next_cache_seg_id bez wywołania cond_resched(). Spreparowany łańcuch wskazujący z powrotem na już odwiedzony segment powoduje nieskończoną pętlę odtwarzania. Poprawka ogranicza liczbę przeskoków last-kset do cache->n_segs, ponieważ prawidłowy łańcuch odwiedza każdy segment co najwyżej raz.
- CVE-2026-80956Nieznane
W jądrze Linux moduł dm-pcache w funkcji get_cache_segment() skanuje mapę segmentów do cache->n_segs (fizyczna liczba segmentów urządzenia), ale cache_segs_init() inicjalizuje tylko pierwsze cache_info->n_segs segmentów. Spreparowany obraz z mniejszym cache_info->n_segs pozostawia pozostałe struktury pcache_cache_segment wyzerowane (segment.data == NULL), a alokator może przekazać taki segment do cache_kset_close(), która zapisuje przez wskaźnik data bez sprawdzenia NULL. Poprawka ogranicza wyszukiwanie alokatora do cache_info->n_segs.

