Opublikowano poprawki do X.Org Server 21.1.12 oraz komponentu DDX (Device-Dependent X) xwayland 23.2.5, który umożliwia uruchamianie X.Org Server w celu realizacji aplikacji X11 w środowiskach opartych na Wayland. W nowej wersji X.Org Server usunięto 4 luki bezpieczeństwa. Jedna z luk może być wykorzystana do podniesienia uprawnień w systemach, w których serwer X działa z uprawnieniami roota, a także do zdalnego wykonania kodu w konfiguracjach, w których dostęp uzyskuje się poprzez przekierowanie sesji X11 za pomocą SSH.
Pozostałe trzy luki mogą prowadzić do wycieku zawartości pamięci serwera lub do awaryjnego zakończenia pracy. Te trzy luki są wykorzystywane przez wykorzystanie na stronie klienta innego porządku bajtów niż w serwerze. W związku z tym w nowym wydaniu wprowadzono możliwość blokowania połączeń klientów z systemów o innym porządku bajtów. Aby to wyłączyć, można użyć parametru konfiguracyjnego „AllowByteSwappedClients” lub opcji wiersza poleceń „+byteswappedclients”.
Zmiana wartości domyślnej pozwala zabezpieczyć się przed potencjalnie nieujawnionymi lukami, które manipulują porządkiem bajtów. Istota takich luk polega na tym, że zmiana porządku bajtów dla wartości o określonym rozmiarze prowadzi do ich błędnej interpretacji i do odczytu lub zapisu do pamięci oczywiście większej wielkości niż wskazywany bufor.
Na razie domyślnie zachowana jest obsługa klientów z innym porządkiem bajtów, mimo że w praktyce konwersja porządku bajtów w ostatnim czasie jest niezwykle rzadko stosowana, ponieważ stacje robocze, na których uruchamiany jest serwer X, są zazwyczaj wyposażone w procesory o porządku bajtów little-endian (od najmłodszego do najstarszego bajtu) i połączenie z nimi klientów X o porządku big-endian, takich jak platforma s390x (IBM zSystems), jest dużą rzadkością.
Zidentyfikowane problemy:
- CVE-2024-31080, CVE-2024-31081, CVE-2024-31082 — odczyt danych z obszaru poza buforem poprzez manipulację funkcjami ProcXIGetSelectedEvents, ProcXIPassiveGrabDevice oraz ProcAppleDRICreatePixmap, które wykorzystują pole o rozmiarze pomijającym porządek bajtów w wartości przekazanej przez klienta. W związku z tym, gdy występują różnice w porządku bajtów między klientem a serwerem, funkcje te zwracają klientowi więcej danych. Pierwsze dwa problemy pojawiają się od wydania xorg-server-1.7.0 (2009 rok), a trzeci — od xorg-server-1.15.0 (2012 rok).
- CVE-2024-31083 — dostęp do już zwolnionej pamięci (User-after-free) w funkcji ProcRenderAddGlyphs, która wywołuje funkcję AllocateGlyph() w celu przechowania nowych glifów przekazanych przez klienta. Funkcja AllocateGlyph() zwraca nowy glif z zerowym licznikiem referencji (refcount=0), a ponowne wskazanie glifu nie prowadzi do zwiększenia licznika referencji, przez co tablica glyph_new może zawierać kilka wpisów wskazujących na jeden glif bez licznika referencji. Przy zwalnianiu pamięci przez funkcję ProcRenderAddGlyphs() przydzielonej dla glifu, w tablicy pozostaje i może być używany dodatkowy wskaźnik na glif, pamięć dla którego została już zwolniona. Problem manifestuje się w X.Org Server i nie dotyczy xwayland.
Źródło: opennet.ru
