Dirty Pipe: luka umożliwiająca nadpisanie danych

Niedawno pojawiły się wiadomości zidentyfikowano lukę w jądrze Linuksa i który jest już skatalogowany pod numerem CVE-2022-0847 i który nazwali jako „Brudna rura”.

Ta luka została nazwana „Dirty Pipe”pozwala nadpisać zawartość cache strony dla dowolnego pliku, w tym plików ustawionych jako tylko do odczytu, otwartych z flagą O_RDONLY lub znajdujących się w systemach plików zamontowanych tylko do odczytu.

Od strony praktycznej podatność może być używany do wstrzykiwania kodu do dowolnych procesów lub uszkodzonych danych w otwartych plikach. Na przykład, możesz zmienić zawartość pliku Author_keys dla procesu sshd.

O brudnej rurze

Jest podobny do krytycznej luki Brudna KROWA zidentyfikowane w 2016 r., a Dirty Pipe jest wymieniana jako na tym samym poziomie co Dirty COW pod względem niebezpieczeństwa, ale ten jest znacznie łatwiejszy w obsłudze.

Brudna rura została zidentyfikowana podczas analizy reklamacji dotyczących okresowych uszkodzeń archiwów pobrane przez sieć w systemie pobierającym skompresowane pliki z serwera logującego (37 uszkodzeń w ciągu 3 miesięcy na załadowanym systemie), które zostały przygotowane za pomocą operacji splice() i nienazwanych potoków.

Słaby punkt manifestuje się od wersji jądra Linuksa 5.8, wydany w sierpniu 2020 r.

Patrząc z innej strony, możemy powiedzieć, że jest obecny w Debianie 11, ale nie wpływa na jądro podstawowe w Ubuntu 20.04 LTS, podczas gdy dla jąder RHEL 8.xi openSUSE/SUSE 15, które są oryginalnie oparte na starych gałęziach, ale jest to możliwe że zmiana, która powoduje problem, została im przekazana (nie ma jeszcze dokładnych danych).

Podatność wynika z braku inicjalizacji wartości "buf->flags" w kodzie funkcji copy_page_to_iter_pipe() i push_pipe(), mimo że pamięć nie jest czyszczona, gdy struktura jest alokowana, oraz z pewnymi manipulacjami z nienazwanymi potoki, "buf->flagi" mogą zawierać wartość z innej operacji. Dzięki tej funkcji nieuprzywilejowany użytkownik lokalny może uzyskać wygląd wartości PIPE_BUF_FLAG_CAN_MERGE we fladze, co pozwoli mu nadpisać dane w pamięci podręcznej strony, po prostu zapisując nowe dane w specjalnie przygotowanym potoku nienazwanym.

za atak można to zrobić, potrzebujesz pliku docelowego, który musi być czytelny a ponieważ prawa dostępu nie są sprawdzane podczas zapisywania do potoku, można dokonać zamiany w pamięci podręcznej stron, nawet dla plików znajdujących się na partycjach tylko do odczytu (na przykład dla plików c CD-ROM).

Dzięki temu, po wymianie informacji w pamięci podręcznej strony, proces odczytując dane z pliku, nie otrzyma danych rzeczywistych, lecz zastąpione.

Wspomina się, że operacja Dirty Pipe sprowadza się do stworzenia nienazwanej rury i wypełnienia jej dowolnymi danymi aby osiągnąć ustawienie flagi PIPE_BUF_FLAG_CAN_MERGE na wszystkich powiązanych z nią strukturach pierścieniowych.

Dane są następnie odczytywane z potoku, ale flaga pozostaje ustawiona dla wszystkich wystąpień struktury pipe_buffer w strukturach pierścieniowych pipe_inode_info. Następnie wykonywane jest wywołanie splice() w celu odczytania danych z pliku docelowego do potoku nienazwanego, zaczynając od wymaganego przesunięcia. Podczas zapisywania danych do tego nienazwanego potoku flaga PIPE_BUF_FLAG_CAN_MERGE nadpisze dane w pamięci podręcznej stron zamiast tworzyć nową instancję struktury pipe_buffer.

W końcu Jeśli chcesz dowiedzieć się więcej na ten temat, możesz sprawdzić szczegóły w oryginalnej notatce W poniższym linku.

Również, jeśli jesteś zainteresowany móc śledzić lub wiedzieć o publikacji aktualizacji pakietów w głównych dystrybucjach, możesz to zrobić z tych stron: DebianSUSEUbuntuRHELFedoraGentooArchLinuksa.

Wspomniano, że proponowana poprawka podatności jest dostępna w Linux Kernel w wersjach 5.16.11, 5.15.25 i 5.10.102, a poprawka jest również zawarta w jądrze używanym na platformie Android.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: AB Internet Networks 2008 SL
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.