Znaczna część problemów Windows związanych z bezpieczeństwem, sprowadza się do jednej konkluzji: większość ludzi korzystających z tego systemu, na co dzień robi to używając konta z uprawnieniami administratora.
Znaczna część problemów Windows związanych z bezpieczeństwem, sprowadza się do jednej konkluzji: większość ludzi korzystających z tego systemu, na co dzień robi to używając konta z uprawnieniami administratora. Jakie są tego konsekwencje? Konto takie ma praktycznie władzę absolutną w systemie. Może instalować programy i dodawać urządzenia, modyfikować rejestr, uaktualniać sterowniki, tworzyć i modyfikować konta użytkowników i robić jeszcze wiele innych rzeczy, które mają kluczowe znaczenie dla bezpieczeństwa, integralności i stabilności całego systemu.
Z jednej strony, posługiwanie się takim kontem jest bardzo wygodne. Patrząc jednak z perspektywy bezpieczeństwa, to niemalże katastrofa. Do przeglądania zasobów Internetu, odbierania, czytania i wysyłania poczty, czy też korzystania z programów IM, z całą pewnością nie jest nam potrzebna władza w jaką uzbrojone jest takie konto. Dodatkowo ogromnie wzrasta ryzyko infekcji systemu, gdyż każdy kawałek malware, który nieświadomie uruchomimy (np. odwiedzając stronę zawierającą szkodliwy kod, lub otwierając maila), zostanie wykonany właśnie w kontekście konta na którym pracujemy. Logicznym wyborem w obliczu takiego zagrożenia wydaje się być korzystanie z LUA (Limited User Account – ograniczonego konta użytkownika), jednak w starszych od Visty wersjach systemu Windows, taka próba może skończyć się zszarganymi nerwami i częstą wymianą klawiatury, której funkcjonalność skutecznie ograniczy zbyt częsty kontakt z naszym czołem. Jest to spowodowane tym, że poprzednie systemy nie były tworzone w sposób, który umożliwiałby wygodne wykonywanie często nawet podstawowych czynności na ograniczonym koncie. Korzystając z LUA nie możemy np. przejrzeć systemowego kalendarza, zmienić strefy czasowej, uruchamiać wielu programów bez uprzedniej modyfikacji praw NTFS i edycji rejestru, bądź też dokonywać edycji ustawień w panelu zarządzania energią.
Przed powstaniem Windows Vista, nie było natywnego rozwiązania, dzięki któremu korzystając ze standardowego konta, można by w prosty sposób, niejako z marszu, podnieść swoje uprawnienia. Często jedynym wyjściem pozostawało posłużenie się poleceniem „Run As”, skorzystaniem z szybkiego przełączania użytkowników (które w środowisku domenowym jest wyłączone) lub w ostateczności całkowitym wylogowaniem się użytkownika i ponownym logowaniem na konto z wyższymi uprawnieniami. W wyniku tego, podstawowym kontem z którego korzysta zdecydowana większość użytkowników obecnych wersji systemu Windows, jest właśnie konto administratora.
W odróżnieniu od starszych systemów, Vista eliminuje potrzebę korzystania z uprawnień administracyjnych podczas wykonywania codziennych, często wręcz banalnych czynności. Co ważniejsze, posiada także prosty i bezpieczny mechanizm umożliwiający dużo bardziej komfortową i efektywną pracę na koncie standardowego użytkownika. Mowa tu oczywiście o UAC, czyli User Account Control (Kontrola Konta Użytkownika), który jest odpowiedzią Microsoftu na wyżej wymienione przypadłości.
UAC
Generalnie, podstawowym zadaniem UAC, jest zmniejszenie pola ataku oraz pomoc w zapobieganiu i informowaniu nas o próbach nieautoryzowanych zmian w systemie, które bez naszej wiedzy mogłyby zostać wprowadzone przez wszelkiego rodzaju malware.
Złośliwe oprogramowanie próbujące zainfekować nasz system poprzez np. strony internetowe, najczęściej stara się to robić w sposób jak najbardziej dyskretny. W Viście, osiągnięcie tej dyskrecji nie będzie już takie proste. Każda próba modyfikacji ustawień mających wpływ na działanie systemu, będzie zgłaszana przez UAC i to my będziemy decydować czy na taką modyfikację wyrażamy zgodę.
UAC w istotny sposób przyczynia się więc do zwiększenia bezpieczeństwa pracy tak na koncie standardowego użytkownika jak i na kontach należących do grupy administratorów. W końcu będziemy mogli pracować jako „Standard user” bez większego stresu, a w przypadkach gdy wyższe uprawnienia okażą się niezbędne, system sam nas o tym poinformuje, umożliwiając jednocześnie w bardzo prosty sposób ich uzyskanie przy pomocy choćby i jednego kliknięcia.
W Windows Vista spotkamy się z dwoma typami kont użytkowników. „Administrator users” i “Standard users”. Podstawową różnicą między nimi jest poziom dostępu konta „Standard users” do kluczowych, chronionych obszarów systemu. Chodzi tu między innymi o kontrolę dostępu do%systemroot%, %programfiles% , rejestru (HKEY_LOCAL_MACHINE), instalacji usług i w ogóle dokonywania zmian, których zakres działania wykracza poza środowisko użytkownika.
Jako że u podstaw Visty leży idea „Trustworthy Computing”, UAC zmienia w znaczący sposób obsługę kont użytkowników. Dodatkowy poziom zabezpieczenia zakłada, że WSZYSTKIE konta działają z uprawnieniami Standard User, włącznie z członkami grupy Administrators. Wyjątek stanowi tutaj wbudowane konto Administratora, które jednak standardowo jest wyłączone. Zbędne więc staną się protezy typu DropMyRights czy RunAsAdminExplorer.
Podczas logowania, administratorowi przyznawane są dwa żetony dostępu (access token). „Full administrator access token”, który w dalszej fazie logowania jest ukrywany i “standard user access token”. Z tego drugiego usunięte są informacje świadczące o przynależności konta do grupy Administrators, czego wynikiem jest uruchomienie całej powłoki (explorer.exe) właśnie w kontekście konta „Standard User”. W przypadku gdy do komputera loguje się właściciel konta standardowego, generowany jest tylko jeden żeton i mowa tu oczywiście o „Standard user access token”. Poniższy obrazek (rys. 1) ilustruje różnicę w procesie logowania poszczególnych typów kont.
Rys. 1 – Proces logowania
W zależności od typu konta z którego w danym momencie korzystamy, UAC proponuje podwyższenie uprawnień w nieco odmienny sposób.
W przypadku gdy będziemy zalogowani jako Administrator w trybie „Administrator Approval Mode” i zajdzie potrzeba wykonania zadań wymagających uprawnień administracyjnych, UAC przedstawi administratorowi „Consent Prompt” (rys. 2.1), który po wyrażeniu naszej zgody, zezwoli na kontynuację zadania z pełnym żetonem administratora (Full administrator access token).
Rys 2.1 – Consent Promt
W sytuacji gdy zalogowane konto nie należy do grupy Administrators, UAC przedstawi użytkownikowi „User Account Control Prompt” (rys. 2.2), w którym będzie on miał możliwość wyboru jednego z kont (w przypadku istnienia większej ich ilości) Administratorów i podania hasła.
Rys. 2.2 - User Account Control Prompt
Jeżeli komputer jest członkiem domeny, dodatkowo dostępna będzie opcja pozwalająca nam na podanie poświadczeń konta domenowego (rys. 2.3).
Rys 2.3 - User Account Control Prompt (domena)
Dzięki temu rozwiązaniu uzyskujemy pewność, że użytkownik nie dokona przypadkowych i niezamierzonych zmian w systemie. Wykluczamy też możliwość prób cichej instalacji malware, który niezauważenie mógłby wykorzystać uprawnienia administratora i zagnieździć się w systemie.
Secure Desktop
Dodatkowym zabezpieczeniem procesu podwyższania uprawnień jest tryb „Secure Desktop” (rys. 3). Do jego powstania przyczyniły się co najmniej dwa czynniki. Po pierwsze, bez niego istniało dużo większe prawdopodobieństwo spoofingu i prób imitacji UAC przez malware. Po drugie, w sytuacji gdy na pulpicie pootwieranych jest wiele różnych okien, prawdopodobny stawał się scenariusz, w którym pytanie o podwyższenie uprawnień po prostu umknęło by naszej uwadze i moglibyśmy założyć, iż konkretne zadanie zostało wykonane bez pytania o zgodę z naszej strony. W momencie uruchomienia programu żądającego dostępu do tokena administratora, użytkownik zostaje przełączony w tryb „Secure Desktop”, następnie generowana jest bitmapa pulpitu użytkownika (przymglona), a jedynym aktywnym oknem jest okno UAC. Dopóki sobie z nim nie poradzimy (poprzez akceptację bądź anulowanie), nie będziemy w stanie wykonać żadnej innej operacji. Z „Secure Desktop” mogą kontaktować się jedynie procesy systemowe, więc potencjalny malware nie ma do niego dostępu. Dzięki temu mechanizmowi, okna proponujące nam podwyższenie uprawnień, nie mogą być kontrolowane przez żadną aplikację uruchomioną w kontekście użytkownika. Po rozprawieniu się z oknem UAC, następuje wyjście z trybu „Secure Desktop” i powrót do poprzedniego pulpitu.

Rys. 3 – Secure Desktop
Tarcza
W Windows Vista, elementy systemu, które wymagają żetonu administratora, oznaczone są ikoną tarczy (rys. 4.1 i 4.2).
Rys. 4.1 – Ikona tarczy (okno konfiguracji daty i czasu)
Na przykładzie powyższego screena widzimy, że do zmiany strefy czasowej nie potrzeba uprawnień administratora. Jednak sytuacja zmieni się gdy np. kliknięciem wyrazimy chęć edycji daty lub czasu.
Rys. 4.2 – Ikona tarczy (opcje bezpieczeństwa w Panelu Sterowania)
Oznacza to, że próba kliknięcia opcji przy której widnieje wspomniana ikona, uruchomi opisaną wcześniej procedurę podwyższenia uprawnień (rys. 5).
Rys. 5 – Consent Prompt
Przykłady czynności, które wywołają okno kontroli konta użytkownika, to między innymi:
- zmiana daty i czasu
- instalacja i deinstalacja aplikacji
- konfiguracja Kontroli Rodzicielskiej
- instalacja kontrolek ActiveX
- dodawanie, usuwanie i modyfikacja kont innych użytkowników
- kopiowanie i przenoszenie plików do Program Files lub katalogu Windows
- instalacja nowych sterowników urządzeń
- konfiguracja firewalla
- etc.
Istnieje kilka typów komunikatów, którymi może posłużyć się UAC. Użyte w nich kolory są dla nas istotną wskazówką mającą za zadanie dostarczyć nam dodatkowych informacji.
Windows potrzebuje zgody, aby kontynuować. Niebiesko/zielone tło oznacza, że mamy do czynienia z wewnętrzną aplikacją Windows, np. apletami z Panelu Sterowania.
Program potrzebuje zgody, aby kontynuować. Szare tło i złota tarcza oznaczają program podpisany ważnym certyfikatem, któremu ufa nasz komputer.
Niezidentyfikowany program chce uzyskać dostęp do tego komputera. Żółte tło i żółta tarcza oznaczają, że program nie jest podpisany żadnym certyfikatem, lub certyfikatem, który nie jest zaufany.
Ten program został zablokowany. Czerwone tło i czerwona tarcza oznaczają, że program jest zablokowany. Powodem może być na przykład blokada poprzez GPO lub fakt, że podpis aplikacji pochodzi od zablokowanego wydawcy.
Registry and file virtualization
Zatrważająca wręcz ilość programów potrzebuje konta administratora, aby móc się poprawnie zainstalować. Co gorsze, wiele z tych aplikacji, podczas prób uruchomienia ich na koncie zwykłego użytkownika, w ogóle nie startuje lub ma poważne problemy z poprawnym działaniem. Spowodowane jest to najczęściej błędami na etapie tworzenia tych programów. Przykładowym problemem może być próba zapisu przez aplikację uruchomioną z żetonem standardowego użytkownika, do obszarów chronionych systemu. (np. %windir% lub %ProgramFiles%). Innym, często spotykanym błędem programistycznym, to umieszczanie wartości specyficznych dla użytkownika w gałęzi rejestru HKLM\software.... Powstawaniu tego typu błędów sprzyja fakt, że programiści tworzą swoje aplikacje (a testerzy następnie je testują), korzystając z konta Administratora, przez co nie są one zauważane i eliminowane przed udostępnieniem programu użytkownikom.
Aby złagodzić lub całkiem usunąć problemy związane z takimi aplikacjami, Windows Vista korzysta z „registry and file virtualization”. Kiedy program instalowany przez użytkownika standardowego podejmie próbę zapisu np. do „C:\Program Files”, to z punktu widzenia samego programu próba zakończy się sukcesem, podczas gdy tak naprawdę, operacje odczytu i zapisu zostaną przez system przekierowane do profilu użytkownika. Po zakończeniu instalacji, nie znajdziemy katalogu z naszym programem w „C:\Program Files\NaszProgram”, zostanie on bowiem utworzony w profilu konta, w kontekście którego uruchomiliśmy proces instalacji: „C:\Users\uzytkownik\AppData\Local\VirtualStore\Program Files\NaszProgram”.
„Registry and file virtualization” pozwala więc kontom standardowym korzystać ze starszych, bądź źle napisanych aplikacji, które do poprawnego działania wymagają praw zapisu w obszarach chronionych systemu. Dlatego „Virtualization” nie jest aplikowana w sytuacjach gdy program korzysta z podwyższonych uprawnień i tym samym jest w posiadaniu „full administrator access token”.
Microsoft stworzył i udostępnił narzędzia, których zadaniem jest pomoc w testowaniu kompatybilności, stabilności i bezpieczeństwa programów w zderzeniu z mechanizmem UAC. Programy takie jak Standard User Analyzer czy Microsoft Application Compatibility Toolkit (ACT) V5.0 , pomagają między innymi zdiagnozować problemy, które mogłyby uniemożliwić poprawną pracę aplikacji na koncie “Standard user”.
Wypada jeszcze nadmienić, że „Registry and file virtualization” nie jest wspierane w aplikacjach 64-bitowych. Od nich wymaga się już pełnej zgodności z UAC.
Kontrola zachowania UAC
Oczywiście w razie potrzeby, Vista pozwala nam na scentralizowaną kontrolę zachowania UAC. Możemy to robić przy pomocy GPO (Computer Configuration -> Windows Settings -> Security Settings -> Local Policies -> Security Options) lub bardziej bezpośrednio (secpol.msc).
Rys. 6 – opcje konfiguracyjne UAC w Zasadach Zabezpieczeń
Do dyspozycji mamy dziewięć opcji, których konfiguracja może w znacznym stopniu wpłynąć na sposób w jaki UAC będzie się z nami komunikował.
1. User Account Control: Admin Approval Mode for Built-in Administrator account.
Możliwe są dwa ustawienia:
- Enabled. Wbudowane konto administratora będzie działało w trybie „Admin Approval Mode”.
- Disabled. Administrator zawsze korzysta z pełnego żetonu administratora (full administrator access token).
2. User Account Control: Behavior of the elevation prompt for administrators in Admin Approval Mode.
Możliwe są trzy ustawienia:
- No prompt. Podwyższenie uprawnień będzie akceptowane automatycznie i w tle, bez próby uzyskania zgody ze strony administratora. Z oczywistych powodów nie jest to zalecane ustawienie.
- Prompt for consent. Administrator zostanie poinformowany o próbie skorzystania z pełnego żetonu w trybie „Admin Approval Mode” standardowym oknem tego trybu (consent prompt – rys. 5), a więc dającym mu możliwość wyboru akceptacji lub anulowania operacji.
- Prompt for credentials. W odpowiednim momencie UAC przedstawi administratorowi w trybie „Admin Approval Mode” okno „User Account Control Prompt” (rys. 2.3) umożliwiające wprowadzenie poświadczeń konta administratora. Jeżeli będą one prawidłowe, to operacja uzyska pełny access token i będzie mogła kontynuować działanie.
Standardowe ustawienie: Prompt for consent.
3. User Account Control: Behavior of the elevation prompt for standard users.
Możliwe sa dwa ustawienia:
- No prompt. Standardowemu użytkownikowi nie zostanie przedstawione żadne okno umożliwające mu podwyższenie uprawnień w przypadku próby wykonania czynności wymagającej praw administratora. Pomimo tego wciąż może on skorzystać z opcji Run as administrator.
- Prompt for Credentials. Operacja wymagająca żetonu administratora poinformuje o tym użytkownika oknem umożliwiającym mu wprowadzenie odpowiednich poświadczeń, niezbędnych do kontynuacji zadania.
Standardowe ustawienie: Prompt for credentials (użytkownicy domowi), No prompt (domena).
4. User Account Control: Detect application installations and prompt for elevation.
Możliwe są dwa ustawienia:
- Enabled. Po wykryciu przez UAC próby instalacji programu, użytkownik otrzymuje możliwość wprowadzenia poświadczeń administratora.
- Disabled. Próba instalacji aplikacji przez użytkownika nie powiedzie się. Standardowe ustawienie: Enabled (użytkownicy domowi), Disabled (domena).
5. User Account Control: Only elevate executables that are signed and validated.
Możliwe są dwa ustawienia:
- Enabled. Tylko podpisane aplikacje mają prawo żądać podwyższenia uprawnień.
- Disabled. Wszystkie aplikacje moga korzystać z mechanizmu podwyższania uprawnień.
Standardowe ustawienie: Disabled
6. User Account Control: Only elevate UIAccess applications that are installed in secure locations.
Możliwe są dwa ustawienia:
- Enabled. Aplikacje deklarujące chęć startu na poziomie „UIAccess integrity” (np. Poprzez zaznaczenie w swoim manifeście UIAccess=true) muszą znajdować się w bezpiecznej lokalizacji. Za takie uważane są %Programfiles% lub %windir%.
- Disabled. Sprawdzanie lokalizacji pliku wykonywalnego nie jest przeprowadzane i aplikacja może uruchomić się z „UIAccess integrity” również wówczas gdy znajduje się poza wyżej wymienionymi miejscami.
Standardowe ustawienie: Enabled
7. User Account Control: Run all administrators in Admin Approval Mode.
Możliwe są dwa ustawienia:
- Enabled. Oba typy kont (administrator i standard user) mają możliwość podniesienia swoich uprawnień w sytuacjach tego wymagających.
- Disabled. UAC jest praktycznie wyłączony. Security Center Visty będzie nam o tym przypominało podczas każdego logowania (rys. 9). „Admin Approval Mode” i wszystkie ustawienia dotyczące UAC są wyłączone.
Standardowe ustawienie: Enabled
8. User Account Control: Switch to the secure desktop when prompting for elevation.
Możliwe są dwa ustawienia:
- Enabled. Okna UAC wyświetlane są na „Bezpiecznym Pulpicie” (Secure Desktop) z którym kontaktować mogą się jedynie procesy systemowe, co eliminuje zagrożenie spoofingu komunikatów UAC przez malware.
- Disabled. Okna UAC wyświetlane są bezpośrednio na pulpicie zalogowanego użytkownika.
Standardowe ustawienie: Enabled
9. User Account Control: Virtualize file and registry write failures to per-user locations.
Możliwe są dwa ustawienia:
- Enabled. Działa przekierowanie nieudanych prób zapisu w lokacjach %ProgramFiles%; %Windir%; %Windir%\system32; i HKLM\Software\.... do VirtualStore w profilu standardowego użytkownika.
- Disabled. Przekierowanie nie działa i wyżej wymienione próby zapisu, zakończą się niepowodzeniem.
Standardowe ustawienie: Enabled
Wyłączenie UAC
Możemy to zrobić w Panelu Sterowania (rys. 7), konfigurując ustawienie nr. 7 (User Account Control: Run all administrators in Admin Approval Mode) lub przy pomocy msconfig (rys. 8).
Rys. 7 – Okno kontroli UAC w Panelu Sterowania
Rys. 8 – UAC w msconfig
Pamiętajmy o tym, że wyłączając UAC, pozbawiamy się ochrony jaką zapewnia nam ten mechanizm. Wszyscy administratorzy automatycznie logują się z pełnym żetonem dostępu. Nie działa „registry and file virtualization”. Można powiedzieć, że cofamy się niemalże do standardów Windows XP. Musimy zdawać sobie sprawę z faktu, że brak UAC, to bardzo poważne obniżenie bezpieczeństwa całego systemu.
Windows Vista będzie nam o tym przypominać przy każdym logowaniu do systemu w którym User Account Control zostanie wyłączony (rys. 9)
Rys. 9 – Alert po wyłączeniu UAC
Podsumowanie
User Account Control jest tylko jedną z wielu nowości, które zaserwuje nam nowy system Microsoftu. Jest to chyba jednak jedna z najważniejszych zmian. Do biegu o zapewnienie jak największego bezpieczeństwa w trakcie pracy z systemami operacyjnymi wystartowano już wiele lat temu i z cała pewnością nie można powiedzieć, że dotarto do mety. Jednak mechanizmy proponowane przez UAC, to zdecydowanie krok w dobrym kierunku. Zapewnia on podniesiony poziom bezpieczeństwa, poprzez zmianę sposobu w jaki użytkownik i aplikacje korzystają z systemu. Gwarantując bardziej komfortową i bezpieczną pracę na ograniczonych kontach, tak dla zwykłych użytkowników, jak i dla administratorów, UAC sprawia, że automatycznie stajemy się znacznie mniej podatni na wszelakiego rodzaju zagrożenia ze strony szeroko pojętego malware. Z drugiej strony, nie zapominajmy o tym, iż to głównie czas weryfikuje poziom bezpieczeństwa nowych rozwiązań. Pozostaje jedynie liczyć na to, że dla Windows Vista weryfikacja ta wypadnie jak najbardziej pozytywnie.
Autor: Dariusz Kiszkiel (dakota)
Spis treści
Artykuł autorstwa Czytelnika portalu opublikowany w ramach konkursu Windows Vista jest szybka, a Ty?. Nie odpowiadamy za prezentowane treści.