UAC i CodeSign

Na trop problemu naprowadził mnie artykuł na blogu Security Response Weblog firmy Symantec. Autorzy zwrócili uwagę na niepożądane zachowanie Windows Vista w przypadku uruchamiania programów, które są podpisane cyfrowo i zmodyfikowane.

Chciałem się przekonać na własne oczy jak to wygląda. Wziąłem więc pod lupę pierwszy lepszy program, który miałem na pulpicie - procexp.exe i sprawdziłem, czy jest podpisany. Był - pieczątka z “01 November 2006 21:07:29″ i informacja: “This digital signature is OK”. Później przy wykorzystaniu darmowego edytora hex xvi32 znalazłem string http://www.sysinternals.com i zamieniłem go na http://ftp.sysinternals.com, co oczywiście zmieniło CRC całego pliku. Efekt był taki, że informacja o certyfikacie uległa zmianie: “The digital signature is not valid”, jednak by się o tym dowiedzieć musiałem kliknąć 4 razy (plik -> Properties -> zakładka Digital Signatures -> kliknąć na certyfikat -> Details).

Uruchomienie tak zmodyfikowanego pliku EXE na komputerze z zainstalowanym Windows Server 2003 nie powoduje wyświetlenia żadnej, ale to zupełnie żadnej informacji ostrzegającej o zmianie pliku czy utracie ważności certyfikatu. Na Windows Vista wyglądało to trochę inaczej.

Przy próbie otwarcia zmodyfikowanego pliku, który nazwałem procexp modified.exe wyświetlane jest ostrzeżenie: User Access Control, An unindentified program wants access to your computer, opcje: Cancel, Allow. Kliknęcie na pole Details ukazuje informacje: procexp modified.exe Unindentified Publisher i ścieżka do pliku.
Czego tu brakuje? Brakuje informacji o tym, że certyfikat, którym ten plik został podpisany jest nieważny. Podobnie Windows Vista zachowuje się w przypadku uruchamiania oprogramowania, które żadnych podpisów nie ma. Czy jest to poważny problem? Nie. Czy jest to problem w ogóle? Jest.

Jedynym rozwiązaniem (a raczej obejściem, które de facto generuje nowe problemy), jakie sugerują także autorzy z Symanteca jest zmiana Local Security Policy o nazwie User Access Control: Only elevate executables that are signed and validated, która to opcja jest domyślnie wyłączona (gdyby było inaczej nie możliwe byłoby uruchamianie programów nie podpisanych, a wymagających praw administratora do poprawnego działania).

Nie trudno sobie wyobrazić wykorzystanie tego “problemu”. Otwiera to dość szerokie pole do popisu dla autorów wirusów i innego oprogramowania typu malware, którzy wykorzystując brak rozróżnienia użytkowników między programem nie podpisanym a zmodyfikowanym mogą wyrządzić dowolną szkodę w systemie.

Wysłałem to znalezisko to do moich znajomych w zespole. Być może rozpocznie to jakąś dyskusję nad zmianą domyślnego zachowania Visty w podobnych przypadkach.

This posting is provided “AS IS” with no warranties, and confers no rights.

2 Responses to “UAC i CodeSign”


  1. Gravatar Icon 1 Adam

    “Wysłałem to znalezisko to moich znajomych w zespole” - mały błąd, pewnie z rozpędu ;-).

  2. Gravatar Icon 2 Michał Osmenda

    @Adam: dziekuje za wylapanie bledu. Chwilami jezyki naprawde mi sie myla …

Leave a Reply




Disclaimer

All postings are provided "AS IS" with no warranties, and confer no rights. This weblog does not represent the thoughts, intentions, plans or strategies of Microsoft or any other company or organization. Because a weblog is intended to provide a semi-permanent point-in-time snapshot, you should not consider out of date posts to reflect current thoughts and opinions.
All rights reserved. Quotations from this blog require author's written approval.
PL: Wszelkie prawa zastrzeżone. Cytaty z tego bloga wymagają pisemnego zezwolenia autora.

Add to Technorati Favorites