CVE-2022-4139 zostało upublicznione dzisiaj jako problem bezpieczeństwa sterownika graficznego jądra i915, który dotyczy wszystkich kart graficznych Gen12 — od zintegrowanej grafiki Tigerlake po najnowszą grafikę Raptor Lake, a także kod Meteor Lake w fazie rozwoju oraz dyskretne procesory graficzne DG2/Alchemik i arktyczny dźwięk.
Firma Intel ujawniła CVE-2022-4139 jako nieprawidłowy problem z opróżnianiem GPU TLB w sterowniku graficznym jądra systemu Linux. W niektórych przypadkach bufor translacji (TLB) w ogóle nie jest opróżniany. Przynajmniej może dojść do przypadkowego uszkodzenia pamięci lub wycieku danych, podczas gdy nie ustalono jeszcze, czy określona pamięć może być ukierunkowana na dotknięte nią wersje jądra Linuksa do tego momentu. Uważa się, że problem dotyczy wszystkich wersji od Linuksa 5.4 do dzisiejszych najnowszych wersji jądra w przypadku korzystania ze zintegrowanej/dyskretnej grafiki Intel Gen12. To jednak oznacza problem ze sterownikiem Intela, a nie sam problem sprzętowy.
ujawnienie listy oss-sec z notatek firmy Intel:
W sterowniku jądra i915 wykryto nieprawidłowy kod strumienia TLB GPU.
W niektórych przypadkach (sprzęt Gen12 z określonymi typami silnika) TLB silnika nie jest w ogóle przepłukiwany. W zależności od tego, czy GPU działa za aktywnym IOMMU, istnieją dwa możliwe scenariusze, które mogą się zdarzyć z powodu nieaktualnego mapowania TLB: 1. Bez IOMMU-GPU może nadal uzyskiwać dostęp do pamięci fizycznej, która może być już przypisana przez system operacyjny do innego procesu. 2. Z IOMMU-GPU może uzyskać dostęp do dowolnej pamięci, jeśli złośliwy proces jest w stanie utworzyć/ponownie wykorzystać niezbędne mapowania IOMMU.
Obecnie nie wiadomo, czy określona pamięć może być celem ataków, ale znana jest możliwość przypadkowego uszkodzenia pamięci lub wycieku danych.
Dotyczy to wszystkich zintegrowanych i dyskretnych procesorów graficznych Intel Gen12, w tym Tiger Lake, Rocket Lake, Alder Lake, DG1, Raptor Lake, DG2, Arctic Sound, Meteor Lake. Poprawka została już opracowana i polega na naprawieniu metody zapisu do określonych rejestrów.
Linus Torvalds właśnie połączył te pięć wierszy kodu w celu złagodzenia unieważnienia TLB grafiki Intel Gen12 dla silników wideo i obliczeniowych.
drm/i915: naprawiono unieważnianie TLB dla silników wideo i obliczeniowych Gen12
W przypadku silników wideo i obliczeniowych Gen12 rejestry TLB_INV są maskowane-aby zmodyfikować jeden bit, odpowiedni bit w górnej połowie rejestru musi być włączona, w przeciwnym razie nic się nie stanie.
Ta mała łatka powinna zostać w krótkim czasie przeniesiona z powrotem do stabilnej serii Linuksa.