Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book

CVE-2022-0185 – podatność w jądrze Linuksa – eskalacja uprawnień do root

20 stycznia 2022, 19:50 | W biegu | komentarzy 14

Opisywaliśmy niedawno eskalację uprawnień do admina na systemach Windows, do kolekcji podobna podatność w Linuksie:

Badacz wspomina, że ma przykładowe exploity działające na Ubuntu oraz na googlowy COS (Container-Optimized OS):

We currently have created functional LPE exploits against Ubuntu 20.04 and container escape exploits against Google’s hardened COS.

Podatność została wprowadzona w jądrze 5.1-rc1 (2019 rok) i jest załatana w tym patchu.

~Michał Sajdak

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. Rafal

    Patch:

    – if (len > PAGE_SIZE – 2 – size)
    + if (size + len + 2 > PAGE_SIZE)

    na czym polega różnica? ;/

    Odpowiedz
    • Jakub

      W komentarzu w tym commiecie jest to wyjaśnione. W C takie porównanie będzie porównaniem intów bez znaku (unsigned int), co może prowadzić do sytuacji, kiedy warunek jest negatywny przy dużym size i małym len.

      Odpowiedz
    • asdf

      cytując commit z linku do patcha: so a large value of „size” results in a high positive value instead of a negative value as expected

      Czyli przy dużym „size” równanie zjeżdża na minus i przekręca się licznik, natomiast po patchu nie ma tego problemu.

      Odpowiedz
    • PAGE_SIZE z reguły jest 4096, size jest typu unsigned int, więc całe „PAGE_SIZE – 2 – size” będzie też działaniem typu unsigned int i przy size równym 4095 lub większym zamiast zejść poniżej zera, wystrzeli w kosmos do 4 miliardów (integer underflow). Wyjdzie z tego coś w stylu „len > 4294967295”, więc nie przerwie działania funkcji po przekroczeniu PAGE_SIZE, natomiast przy dodawaniu się nie przekręci i prawidłowo przerwie działanie.

      Odpowiedz
    • Daniel

      Masz objaśnienie powyżej na tej samej stronie po angielsku…

      Odpowiedz
    • adrb

      To jest odejmowanie bez znaku, wiec jak wynik „PAGE_SIZE – 2 – size” wyjdzie poniżej zera, to jest traktowany jako duża liczba dodania.

      btw:
      Moderacja widzę bez poczucia humoru nie przepościła mojego „exploita” ;)

      Odpowiedz
    • Piotr

      Jest napisane powyżej:
      The „PAGE_SIZE – 2 – size” calculation in legacy_parse_param() is an unsigned type so a large value of „size” results in a high positive value instead of a negative value as expected.

      Zresztą zgadłęm to bez sprawdzania — jeden z częstszych błędów — jeśli ktoś słabo rozumie artmetykę bitową :)

      Odpowiedz
    • Etam

      Pewnie porównanie unsignedi i int dla jak size +2 jest większy od page size to się pewnie przekręcał unsigned i nie była to prawda po zamianie nie będzie takiego przypadku

      Odpowiedz
    • Robert

      Odpowiedź jest w zamieszczonym linku do patcha:
      The „PAGE_SIZE – 2 – size” calculation in legacy_parse_param() is an unsigned type so a large value of „size” results in a high positive value instead of a negative value as expected.

      Odpowiedz
  2. Potrzebuje CAP_SYS_ADMIN do działania, czyli wymaga włączonych namespace dla użytkowników.

    Odpowiedz
  3. Tomasz21

    Ubuntu; nie jest od dawna Linuxem….
    Proszę nie bełtać w głowach czytelnikom.
    pozdrawiam.

    Odpowiedz
    • jb

      Dlaczego?

      Odpowiedz
    • Pingwinek

      Jeden jest tylko linux i to Arch Linux :P

      A tak na serio, to Ubuntu już dawno zatraciło pierwotne założenia Linuxa. Linux miał być systemem dającym użytkownikowi pełną kontrolę nad każdym aspektem jego działania. Każdy proces, każdy wysłany pakiet danych, każdy wyświetlony piksel mógł podlegać kontroli użytkownika.

      Niestety Ubuntu idzie w stronę Win/iOS – coraz więcej funkcjonalności działa sama sobie bez kontroli użytkownika, a co gorsza użytkownik nawet gdyby chciał, to tej kontroli już nie uzyska. Oczywiście chodzi o „komfort użytkowania” dla przeciętnego zjadacza chleba, który osiąga się kosztem ograniczenia prywatności i zachowania „władzy” nad własnym urządzeniem. Tylko, że wtedy dla laika Win/iOS będzie lepszym rozwiązaniem.

      Z Archa (i pochodnych) spokojnie korzystają również ludzie nietechniczni, chociaż muszą czasem pogrzebać na forach jak podłączyć telewizor do komputera. Cóż… coś za coś.

      Odpowiedz
    • Ubuntu szpieguje

      Troche a’propos:
      jakis czas temu musialem cos sprawdzic i podgladalem ruch ze swiezo zainstalowanego Ubuntu.

      Zauwazylem, ze mimo mojej nieaktywnosci regularnie wysyla pakiety do odleglego hosta o nic nie mowiacej nazwie. Zaniepokoilo mnie to. Przyjrzalem sie zawartosci pakietow i okazalo sie, ze kabluje do jakiegos ukrytego w chmurze serwisu firmy Ubuntu (NIE w domenie zwiazanej z Ubuntu).

      Oczywiscie NIE pytal podczas instalacji o zgode ani nie znalazlem normalnego sposobu wylaczenia tego szpiegowania.

      Odpowiedz

Odpowiedz