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.

“Wysłałem to znalezisko to moich znajomych w zespole” - mały błąd, pewnie z rozpędu ;-).
@Adam: dziekuje za wylapanie bledu. Chwilami jezyki naprawde mi sie myla …