Niebezpieczne błędy eskalacji przywilejów znaleziono w linuksowym menedżerze pakietów Snap

Eksperci znaleźli łatwą do wykorzystania lukę w Snap, uniwersalnym systemie pakowania i dystrybucji aplikacji stworzonym dla Ubuntu, ale dostępnym na wielu dystrybucjach Linuksa. Dziura pozwala nisko uprzywilejowanemu użytkownikowi na wykonanie złośliwego kodu jako root, najwyższe konto administracyjne w Linuksie.

Niebezpieczne błędy eskalacji przywilejów znaleziono w linuksowym menedżerze pakietów Snap

Thinkstock

Luka, oznaczona jako CVE-2021-44731, jest częścią serii błędów, które badacze z firmy Qualys znaleźli w różnych komponentach Linuksa podczas badania bezpieczeństwa Snapa. Ta ostatnia, wraz z osobną, oznaczoną jako CVE-2021-44730, znajduje się w snap-confine, narzędziu odpowiedzialnym za tworzenie sandboxów dla aplikacji Snap.

Czym jest Snap?

Snap to menedżer pakietów dla systemów linuksowych, który został opracowany przez firmę Canonical, stojącą za popularną dystrybucją desktopową i serwerową Ubuntu. Umożliwia on pakowanie i dystrybucję niezależnych aplikacji zwanych „snapami”, które działają wewnątrz kontenera z ograniczeniami, zapewniając konfigurowalny poziom bezpieczeństwa.

Zobacz również:

  • Ta inicjatywa ma ułatwić firmom zadanie wdrażania systemów AI
  • Palo Alto wzywa pilnie użytkowników jej zapór sieciowych, aby jak najszybciej zaktualizowali zarządzające nimi oprogramowanie

Jako samodzielne aplikacje Snap nie mają zewnętrznych zależności, co pozwala im na pracę międzyplatformową i międzydystrybucyjną. Tradycyjnie, każda główna dystrybucja Linuksa utrzymuje swoje własne repozytorium i menedżera oprogramowania. Debian ma DEB, Ubuntu ma PPA, Fedora i Red Hat mają RPM, Arch Linux ma Pacmana, i tak dalej. Wszystkie te systemy pobierają pożądany pakiet wraz z wszystkimi innymi zależnościami jako osobne pakiety. Z drugiej strony snapy są dostarczane w pakiecie ze wszystkimi potrzebnymi zależnościami, dzięki czemu są uniwersalnie wdrażalne na wszystkich systemach Linux wyposażonych w usługę Snap.

Snap jest domyślnie dostarczany w Ubuntu i kilku dystrybucjach Linuksa i jest dostępny jako opcja w wielu innych, w tym tych głównych. Jest on używany do dystrybucji nie tylko aplikacji desktopowych, ale także chmurowych i IoT.

Snap confinement - czyli funkcja izolacji - ma trzy poziomy zabezpieczeń, przy czym tryb Strict jest używany przez większość aplikacji. W tym trybie, aplikacje muszą zażądać dostępu do plików, innych procesów lub sieci. Nie różni się to od modelu piaskownicy aplikacji i uprawnień z mobilnych systemów operacyjnych, takich jak Android.

Ponieważ piaskownica aplikacji jest jedną z kluczowych funkcji Snapa, każda luka pozwalająca na ucieczkę z tej izolacji i przejęcie kontroli nad systemem hosta jest uważana za bardzo poważną.

Błędy powodujące eskalację przywilejów

Badacze Qualys nazwali swoje dwie luki w snap-confine „Oh Snap! More Lemmings", ponieważ są one analogiczne do innej dziury w Snapie, odkrytą w 2019 roku i nazwaną Dirty Sock. Od czasu Dirty Sock, Snap widział dokładny audyt bezpieczeństwa przeprowadzony przez zespół bezpieczeństwa SUSE i ogólnie jest zaprogramowany bardzo defensywnie, wykorzystując wiele funkcji bezpieczeństwa jądra, takich jak profile AppArmor, filtry seccomp i przestrzenie nazw mount.

„Prawie porzuciliśmy nasz audyt po kilku dniach” - stwierdzili badacze Qualys w swoim raporcie, dodając, że „odkrycie i wykorzystanie luki w snap-confine było niezwykle trudne (zwłaszcza w domyślnej instalacji Ubuntu)”.

Niemniej jednak, zespół zauważył kilka pomniejszych błędów i postanowił przeć do przodu. Zaowocowało to odkryciem dwóch podatności na eskalację przywilejów: CVE-2021-44730, atak na hardlink, który jest możliwy do wykorzystania tylko w nie-domyślnych konfiguracjach, a mianowicie gdy kernel's fs.protected_hardlinks ma wartość 0; oraz CVE-2021-44731, warunek wyścigu, który jest możliwy do wykorzystania w domyślnych instalacjach Ubuntu Desktop i prawie domyślnych instalacjach Ubuntu Server.

„Ten warunek wyścigu otwiera świat możliwości: Wewnątrz przestrzeni nazw montowania snapa (do której możemy wejść przez sam snap-confine), możemy zamontować na /tmp zapisywalny na całym świecie, nieklejący się katalog, lub możemy zamontować na /tmp dowolną inną część systemu plików” - twierdzą analitycy Qualysa. „Możemy niezawodnie wygrać ten warunek wyścigu, monitorując /tmp/snap.lxd za pomocą inotify, przypinając nasz exploit i snap-confine do tego samego CPU za pomocą sched_setaffinity(), oraz obniżając priorytet planowania snap-confine za pomocą setpriority() i sched_setscheduler()”.

W procesie badania tych dziur, badacze Qualys odkryli również błędy w innych powiązanych bibliotekach i komponentach, z których korzysta Snap: Nieautoryzowane odmontowania w libmount util-linuxa (CVE-2021-3996 i CVE-2021-3995); nieoczekiwana wartość zwracana z realpath() glibc (CVE-2021-3998); przepełnienie/niedopełnienie bufora off-by-one w getcwd() glibc (CVE-2021-3999); niekontrolowana rekurencja w systemd's systemd-tmpfiles (CVE-2021-3997). Te błędy zostały załatane w tych komponentach na początku tego roku.

Ubuntu wydało łaty dla CVE-2021-44731 i CVE-2021-44730 dla większości wspieranych przez siebie edycji Linuksa, z wyjątkiem 16.04 ESM (Extended Security Maintenance), która wciąż czeka na poprawki. Obie luki są oceniane jako wysoce poważne.

Źródło: CSO

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200