Jak zasada minimalnych uprawnień ogranicza szkody w aplikacjach serwera domowego?

Eva Wong jest Technicznym pisarzem i stałym majsterkowiczem w ZimaSpace. Całe życie geek z pasją do homelabów i oprogramowania open-source, specjalizuje się w tłumaczeniu skomplikowanych koncepcji technicznych na przystępne, praktyczne przewodniki. Eva wierzy, że samodzielne hostowanie powinno być zabawą, a nie czymś onieśmielającym. Poprzez swoje samouczki umożliwia społeczności rozwiewanie tajemnic konfiguracji sprzętu, od budowy pierwszego NAS po opanowanie kontenerów Docker.

Zasada najmniejszych uprawnień ogranicza szkody, zapewniając, że każda aplikacja na serwerze domowym może uzyskiwać dostęp wyłącznie do plików, urządzeń, sieci, sekretów i działań wymaganych przez jej rolę.

Na serwerze hostowanym samodzielnie często działają na jednej maszynie narzędzia multimedialne, menedżery zdjęć, programy do pobierania, pulpity nawigacyjne, bazy danych, usługi inteligentnego domu, agenci AI i zadania tworzenia kopii zapasowych. Izolacja kontenerów nie sprawia automatycznie, że aplikacje są równoważne pod względem uprawnień lub nieszkodliwe: usługa mająca dostęp do gniazda Dockera, szerokich montowań bind, sieci hosta, tożsamości administratora i tokenów administracyjnych może oddziaływać na znacznie więcej niż przeglądarka biblioteki działająca w trybie tylko do odczytu. Poniższe sekcje traktują uprawnienia jako kilka niezależnych wymiarów i pokazują, jak każdy z nich zmienia zakres szkód po przejęciu aplikacji.

Efektywny zestaw uprawnień określa zakres szkód

Luka prowadzi do szerszego incydentu tylko wtedy, gdy przejęty proces może uzyskać dostęp do wartościowych zasobów wykraczających poza jego własne, ściśle określone zadania. Istotne pytanie nie brzmi jedynie, czy doszło do wykonania kodu, lecz do czego ten proces jest uprawniony: co może odczytywać, zmieniać, uruchamiać lub pod kogo może się podszywać.

Zespoły ds. bezpieczeństwa używają terminu zakres szkód, aby opisywać systemy, dane i użytkowników narażonych po wykorzystaniu jednej słabości. Na serwerze domowym uprawnienia decydują o tym, czy incydent zakończy się na bazie danych jednej aplikacji, czy obejmie także rodzinne pliki, kopie zapasowe, kamery i administrację.

Zasada najmniejszych uprawnień jest zatem architektonicznym mechanizmem ograniczania skutków. Nie zapobiega każdemu przejęciu, ale zmniejsza zakres działań możliwych po pomyślnym wykonaniu kodu.

Zakres systemu plików decyduje o tym, jakie dane można odczytać lub zniszczyć

Kontener bez zamontowanych danych domowych nie może za pośrednictwem zwykłego dostępu do systemu plików zaszyfrować archiwum zdjęć. Ten sam obraz z zapisywalnym montowaniem całej puli pamięci masowej może uszkodzić dane, które przetrwają usunięcie kontenera.

Analiza ZimaSpace dotycząca zakresu montowania bind pokazuje, dlaczego dokładna ścieżka hosta, tryb odczytu/zapisu, właściciel i etykiety stają się częścią granicy bezpieczeństwa. Wąska ścieżka multimediów tylko do odczytu oraz zapisywalne montowanie katalogu głównego serwera prowadzą do zasadniczo różnych skutków.

Przydziel osobne zapisywalne lokalizacje na przesyłane pliki, bazy danych, pamięci podręczne i pliki generowane, zamiast udostępniać szeroki katalog nadrzędny. Aplikacja nie powinna otrzymywać dostępu do folderów kopii zapasowych ani niezwiązanych z nią rodzinnych danych tylko dlatego, że cała pamięć masowa znajduje się pod jedną wygodną ścieżką.

Dostęp tylko do odczytu nadal umożliwia ujawnienie danych. Poufne dokumenty i sekrety powinny pozostać niezamontowane, jeśli aplikacja nie musi ich analizować.

Tożsamość inną niż root i możliwości systemowe ograniczają uprawnienia do hosta

Uruchamianie aplikacji jako dedykowany użytkownik ogranicza dostęp za pomocą standardowych reguł UID, GID i systemu plików. Odebranie zbędnych możliwości systemu Linux dodatkowo usuwa wybrane uprawnienia na poziomie jądra, których zwykłe aplikacje nie potrzebują.

Snyk wyjaśnia, że możliwości systemu Linux dzielą uprawnienia podobne do uprawnień root na mniejsze elementy. Usługa, która musi powiązać jeden port, nie potrzebuje szerokich uprawnień do urządzeń, sieci, montowania ani kontroli procesów.

Uruchamianie aplikacji jako użytkownik inny niż root nie zastępuje właściwego zarządzania montowaniami i sekretami. Proces działający bez uprawnień root nadal może modyfikować każdy zamontowany plik, którego właściciel lub uprawnienia grupy zezwalają na zapis.

Tryb uprzywilejowany, urządzenia hosta i gniazdo Dockera należy traktować jako jawne wyjątki administracyjne, ponieważ mogą jednocześnie omijać kilka standardowych warstw izolacji.

Zasięg sieci decyduje o tym, czy aplikacja może przemieszczać się lateralnie

Aplikacja często potrzebuje jednej bazy danych, jednego proxy lub wybranych miejsc docelowych w internecie — nieograniczonego dostępu do każdego kontenera, usługi NAS, kamery, routera i urządzenia domowego.

Wskazówki dotyczące bezpieczeństwa kontenerów wykorzystują segmentację sieci, aby ograniczyć zakres szkód po przejęciu. Oddzielne mosty sieciowe, ograniczenia ruchu wychodzącego, reguły zapory i sieci przeznaczone dla konkretnych usług utrudniają wykrywanie zasobów wewnętrznych i przemieszczanie się lateralne.

Reverse proxy może udostępniać zamierzony interfejs internetowy bez umieszczania aplikacji bezpośrednio w sieci hosta. Bazy danych powinny akceptować połączenia wyłącznie od usług, które z nich korzystają.

Testuj oba kierunki. Zablokowanie dostępu przychodzącego nie uniemożliwia przejętej aplikacji skanowania sieci LAN, przesyłania plików ani wywoływania wewnętrznych interfejsów API, jeśli ścieżki wychodzące pozostają otwarte.

Sekrety i zakresy uprawnień interfejsów API określają możliwe działania następcze

Konto usługi może rozszerzyć skutki przejęcia poza lokalny proces. Tokeny mogą zezwalać na usuwanie chmurowych kopii zapasowych, zmianę DNS, sterowanie urządzeniami inteligentnego domu, wysyłanie wiadomości lub administrowanie innym serwerem.

Zasada minimalnego dostępu dotyczy każdego poświadczenia, a także środowiska uruchomieniowego kontenera. Używaj oddzielnych tożsamości, wąskich zakresów zasobów, uprawnień tylko do odczytu, krótkiego czasu ważności oraz zatwierdzania przez człowieka działań destrukcyjnych.

Nie używaj ponownie tokenu administratora tylko dlatego, że jest to łatwiejsze niż utworzenie poświadczenia przeznaczonego dla aplikacji. Kontener o niskich uprawnieniach z kluczem API o wysokich uprawnieniach nadal ma duży efektywny zakres szkód.

Testuj aplikację tak, jakby jej proces był już przejęty

Sprawdzaj działającą konfigurację, a nie tylko plik Compose: efektywnego użytkownika, grupy, możliwości systemowe, zamontowane ścieżki, dostęp do urządzeń, zmienne środowiskowe, pliki sekretów, sieci, otwarte porty i dostępne interfejsy API.

Wskazówki dotyczące środowiska uruchomieniowego zalecają izolację w środowisku uruchomieniowym, ponieważ samo skanowanie obrazów nie ujawnia wszystkich uprawnień przyznawanych podczas uruchamiania aplikacji. Spróbuj odczytać niezwiązane pliki, połączyć się z sąsiednimi usługami i wykonać operacje zapisu przy użyciu rzeczywistych poświadczeń aplikacji.

Zapisuj uzasadnienie każdego wyjątku i usuwaj dostęp, którego nie wykorzystuje żaden bieżący proces. Narastanie uprawnień występuje, gdy stare montowania, sieci, grupy i tokeny pozostają po zmianie funkcji.

Celem jest przewidywalna granica awarii: przejęcie jednej aplikacji do zdjęć może ujawnić jej katalog i przypisaną bibliotekę, ale nie powinno automatycznie odblokowywać administracji serwerem, domowych kopii zapasowych ani wszystkich pozostałych aplikacji.

Centrum Technologii i Sztucznej Inteligencji

Więcej do przeczytania

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.