W tym tygodniu pojawiło się kilka rozwiązań różnych problemów z jądrem Linuksa, ale odkryto również kilka innych, z których Wanpeng Li niedawno odkrył dwie odmowy usługi (DOS) w jądrze Linuksa.
Z którym to umożliwia lokalnym atakującym użycie pustego wskaźnika do odniesienia się do błędu w celu wyzwolenia stanu DOS.
Pierwsza luka, z numerem CVE-2018-19406 dotyczącym typowych luk i zagrożeń, Istnieje w funkcji jądra Linux kvm_pv_send_ipi, która jest zdefiniowana w pliku arch / x86 / kvm / lapic.c.
Luka CVE-2018-19406 istnieje w jądrze Linuksa 4.19.2, umożliwienie napastnikowi użycia skomplikowanych wywołań systemowych na nienaprawionych urządzeniach w celu osiągnięcia stanu DOS. Przyczyną tego problemu jest nieprawidłowe zainicjowanie zaawansowanego programowalnego kontrolera przerwań (APIC).
Wanpeng Li napisał:
„Powodem jest to, że mapa apic nie została jeszcze zainicjowana, przypadek testowy aktywuje interfejs pv_send_ipi przez vmcall, co powoduje, że kvm-> arch.apic_map nie jest przywoływany. „Ta poprawka rozwiązuje ten problem, sprawdzając, czy mapa apic ma wartość NULL, czy nie, i natychmiast, jeśli tak”.
Druga luka wykryta przez Wanpeng Li ogranicza się do sytuacji, w których osoba atakująca może fizycznie uzyskać dostęp do urządzenia.
Ten problem ma numer CVE-2018-19407 w krajowej bazie danych luk w zabezpieczeniach i pojawia się w funkcji vcpu_scan_ioapic w arch / x86 / kvm / x86.c w jądrze Linux 4.19.2, umożliwiając lokalnym użytkownikom odchylenie typu „odmowa usługi” (wskaźnik NULL) i BUG) przez zaprojektowane wywołania systemowe, które osiągają sytuację, w której ioapic nie jest inicjowany.
Kolejna luka w zabezpieczeniach jądra Linuksa CVE-2018-18955
Ponadto również w ciągu tego tygodnia wykryto lukę (CVE-2018-18955) w kodzie tłumaczenia uid / gid z przestrzeni nazw użytkownika.
Do głównego zestawu identyfikatorów, który Umożliwia nieuprzywilejowanemu użytkownikowi z uprawnieniami administratora w izolowanym kontenerze (CAP_SYS_ADMIN) ominięcie ograniczeń bezpieczeństwa i dostęp do zasobów spoza przestrzeni nazw bieżącego identyfikatora.
Na przykład, gdy używasz współużytkowanego systemu plików w kontenerze i środowisku hosta, możesz odczytać zawartość pliku / etc / shadow w głównym środowisku poprzez bezpośrednie odwołanie się do i-node.
Luka występuje w dystrybucjach korzystających z jądra 4.15 i nowszych wersjach, na przykład w Ubuntu 18.04 i Ubuntu 18.10, Arch Linux i Fedorze (jądro 4.19.2 z poprawką jest już dostępne w Arch i Fedorze).
Nie ma to wpływu na RHEL i SUSE. W systemach Debian i Red Hat Enterprise Linux obsługa przestrzeni użytkownika nie jest domyślnie włączona, ale jest zawarta w Ubuntu i Fedorze.
Luka jest spowodowana błędem w kodzie jądra Linux 4.15, wprowadzonym w październiku ubiegłego roku.
Problem został rozwiązany w wersjach 4.18.19, 4.19.2 i 4.20-rc2.
Słaby punkt Jest obecny w funkcji map_write () zdefiniowanej w pliku jądra /user_namespace.c, i jest to spowodowane nieprawidłowym przetwarzaniem zagnieżdżonych przestrzeni identyfikatorów użytkowników, które używają więcej niż 5 zakresów UID lub GID.
W tych warunkach translacja identyfikatorów uid / gid z przestrzeni nazw do jądra (mapa do przodu) działa poprawnie, ale nie jest wykonywana podczas konwersji odwrotnej (odwrotna mapa, z jądra do przestrzeni identyfikatorów).
Powstaje sytuacja, w której identyfikator użytkownika 0 (root) jest poprawnie odwzorowywany na identyfikator 0 w jądrze podczas konwersji w przód, ale nie odzwierciedla rzeczywistej sytuacji podczas odwrotnej transformacji używanej w testach inode_owner_or_capable () i privileged_wrt_inode_uidgid ().
Dlatego podczas uzyskiwania dostępu do i-węzła jądro uważa, że użytkownik ma odpowiednie uprawnienia, mimo że identyfikator 0 nie jest używany z głównego zestawu identyfikatorów użytkowników, ale z oddzielnej przestrzeni nazw.