Dlaczego „nodev” w / etc / fstab jest tak ważny? W jaki sposób można wykorzystywać urządzenia postaci do hakowania?


19

Uczę się o bezpieczeństwie Linuksa i staram się zrozumieć, dlaczego pamięć USB z urządzeniem postaci jest potencjalnie niebezpieczna.

Jeśli mam pamięć USB z plikiem wykonywalnym bash z ustawionym rootem setuid, niebezpieczeństwo jest oczywiste: każdy, kto ma taką pamięć USB, może uzyskać uprawnienia root'a na moim komputerze, jeśli mam taki wpis

/dev/sdb1 /media/usbstick auto defaults 0 0

w moim /etc/fstabponieważ defaultszawiera suid.

Ale co z urządzeniami postaci? Jak mogę użyć urządzenia postaci do uzyskania uprawnień roota lub zepsucia rzeczy, jeśli pamięć USB z urządzeniem postaci zostanie zamontowana za pomocą devlub defaults?

Odpowiedzi:


31

Ponieważ dostęp do urządzenia bazowego jest domyślnie kontrolowany tylko przez uprawnienia do plików, więc jeśli pamięć USB zawiera system plików POSIX z zapisywalnym na świecie węzłem urządzenia odpowiadającym rzeczywistemu urządzeniu w systemie, możesz użyć tego węzła urządzenia, aby uzyskać dostęp do odpowiedniego urządzenie jako „zwykły” użytkownik. Wyobraź sobie urządzenie odpowiadające jednemu z urządzeń audio, twoją kamerę internetową /dev/sda(która jest raczej urządzeniem blokowym niż urządzeniem znakowym, ale argument jest taki sam) ...

Oto przykład, aby wyjaśnić. Powiedz, że chcesz uzyskać dostęp /dev/sda(wtedy możesz praktycznie zrobić wszystko, co chcesz z zawartością dysku, w tym posadzić program, który pozwoli ci się stać root; jest to urządzenie blokowe, ale problem jest taki sam z urządzeniami znakowymi). W systemie docelowym ls -l /dev/sdapokazuje

brw-rw----  1 root disk      8,   0 Sep  8 11:25 sda

Oznacza to, że /dev/sdajest to urządzenie blokowe ( bna początku linii), z główną liczbą 8 i podrzędną liczbą 0 ( 8, 0w środku linii). Urządzenie jest dostępne tylko dla root(odczyt / zapis) i członków diskgrupy (również odczyt / zapis).

Teraz wyobraź sobie, że w tym systemie nie możesz się stać, rootale z jakiegoś powodu możesz montować pamięci USB jako użytkownik bez nodev. W innym systemie, w którym jesteś root, możesz utworzyć odpowiedni specjalny plik na kluczu USB:

mknod -m 666 usersda b 8 0

Spowoduje to utworzenie specjalnego pliku o nazwie usersda, do odczytu i zapisu przez wszystkich.

Zamontuj klucz w systemie docelowym i hej presto, możesz używać usersdaurządzenia w taki sam sposób /dev/sda, ale bez ograniczeń dostępu ...

(Będzie to działać nawet w przypadku zaszyfrowanych systemów plików, o ile masz dostęp do odszyfrowanego urządzenia mapującego: utwórz urządzenie pasujące do odpowiedniego /dev/mapperwpisu.)


Które brzmi interesująco! Ale nie jestem pewien, czy to rozumiem. Urządzenie to plik, do którego dostęp można uzyskać za pośrednictwem i-węzłów. Fałszywe urządzenie na mojej pamięci USB miałoby inny i-węzeł, a zatem byłoby to inne urządzenie, prawda?
rosix,

7
Urządzenie jest plikiem specjalnym, o numerze głównym i dodatkowym; możesz je zobaczyć, jeśli tak ls -l /dev, to dwie liczby, które pojawiają się zamiast rozmiaru pliku. Jądro dopasowuje specjalny plik urządzenia ze sterownikiem używającym tych liczb, dzięki czemu można mieć wiele plików wskazujących ten sam sterownik jądra i urządzenie. Pliki specjalne są tworzone przy użyciu mknod.
Stephen Kitt,

Należy pamiętać, że /dev/tty*urządzenia są urządzeniami znakowymi, a intruz uzyskujący pełny dostęp do odczytu / zapisu do sesji terminalu i / lub konsoli systemowej w połączeniu z nadużywaniem funkcji emulatora terminala może pozwolić na wszelkiego rodzaju paskudne sztuczki ...
telcoM

1
@ TheQuark właściwie tak. To jest trochę bardziej ogólne; Powiedziałbym, że „interpretuj” oznacza „traktuj pliki urządzeń jak węzły urządzeń, a nie zwykłe pliki”.
Stephen Kitt

1
@ n00b nie możesz zamontować usersda, ale możesz przynajmniej użyć go do odczytu z dysku podstawowego bez żadnych ograniczeń, a także do zapisu na nim. Możesz łatwo skopiować całą zawartość dysku i za pomocą takich narzędzi, jak debuge2fsnadpisywanie /etc/shadowitp.
Stephen Kitt
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.