10 lipca 2002 roku Microsoft opublikował informacje o luce w
procesie instalacji SQL Server. Błąd dotyczy zarówno Microsoft SQL Server 7.0,
MSDE 1.0, jak i SQL Server 2000.
Podczas instalacji zarówno SQL Server, jak i poprawek,
informacje wprowadzane do programu instalacyjnego są gromadzone w pliku
setup.iss, który następnie mnożna wykorzystać do szybkiego zainstalowania
pakietu na innym komputerze (instalacja bezobsługowa). W zależności od trybu
działania SQL Server, podczas instalacji podawane są:
Obie informacje są zapisywane w pliku setup.iss, który nie
jest automatycznie kasowany, gdy instalacja zostanie zakończona. Dodatkowo, w
przypadku SQL Server 7.0 bez wgranego Service Pack 4, hasło zapisywane jest
"czystym tekstem" (W przypadku SQL Server 2000 SP1 czy SP2, a także SQL Server
7.0 SP4 jest kodowane).
Jednak w każdym przypadku użytkownik może uzyskać
dostęp do pliku setup.iss.
Czynniki osłabiające podatność na atak:
- Luka może być wykorzystana tylko przez tego, kto już ma prawa
zalogowania się na serwer.
- Odkrycie hasła administratora sa jest możliwe tylko wtedy, gdy
serwer działa w trybie mieszanym (Mixed Mode). W przypadku tych klientów, którzy wykorzystują
zalecane uwierzytelnianie w oparciu o Windows (Windows Authentication Mode)
możliwe jest odkrycie hasła logowania do domeny, wykorzystywanego przy
uruchamianiu serwisu SQL - i to tylko wtedy, gdy zostało podane podczas
instalacji (w wielu przypadkach nie jest to konieczne).
- Hasła przechowywane w pliku setup.iss są statyczne i nie są
aktualizowane po zmianie.
- W przypadku SQL 2000, setup.iss jest umieszczany w katalogu, do którego
ma dostęp administrator i ew. użytkownik który instalował SQL Server.
Identyfikator
CVE-CAN-2002-0643
Niektóre częściej zadawane pytania
Dlaczego błąd nie dotyczy MSDE 2000?
SQL Server 7.0, MSDE 1.0, i SQL Server 2000 wykorzystują
ten sam mechanizm instalacji, a MSDE 2000 - inny.
Jeżeli chcę usunąć ręcznie pliki, gdzie je znajdę?
Plik do bezobsługowej instalacji (setup.iss), może być
znaleziony w następujących katalogach:
-
SQL Server 7.0 i MSDE 1.0: Plik znajduje się w katalogu %windir%
(na przykład "C:\Winnt" w Windows 2000).
-
SQL Server 2000: Plik jest umieszczany w podkatalogu "install"
głównego foldera SQL Server (na przykład "C:\Program Files\Microsoft
SQL Server\mssql\install").
Plik log tworzony przez pierwotną wersję SQL Server ma nazwę sqlstp.log. W
przypadku Service Pack jest to sqlspX.log (gdzie X jest numerem Service Pack).
Domyślnie pliki są umieszczane w następujących katalogach:
- SQL Server 7.0 i MSDE 1.0: Plik jest umieszczany w %windir%\temp
(np. "C:\Winnt\temp").
- SQL Server 2000: Plik jest umieszczany w katalogu %windir% (np. "C:\Winnt").
Co robi narzędzie KillPwd ?
Narzędzie KillPwd to udoskonalona wersja programu omawianego w
MS00-035. Przeszukuje pliki log/setup.iss które pozostały po instalacji Microsoft SQL Server
i w przypadku gdy znajdziue jakieś hasło (obojętne - zakodowane czy nie) -
kasuje go. Domyślnie nie kasuje hasła z setup.iss utworzonego przez instalację SQL Server 2000,
ponieważ jest on umieszczany w takim katalogu, do którego ma dostęp tylko
administrator.
Nie jestem pewien, czy w systemie występuje ta luka.
Można uruchamiać narzędzie KillPwd?
Tak, narzędzie KillPwd usuwa omyłkowo pozostawione informacje o hasłach -
nic złego się nie dzieje jeżeli nie odnajdzie takich plików.
Lokalizacja poprawek
Narzędzie KillPwd, usuwające pozostawione pliki log z hasłem może być
ściągnięte z poniższego adresu:
Można je uruchamiać w przypadku posiadania:
Poprawka nie zależy od wersji językowej produktu.
Odpowiedni mechanizm zostanie dołączony do SP3 dla SQL Server 2000. W
przypadku SQL Server 7.0 nie są planowane kolejne Service Pack.
Po instalacji poprawki nie jest konieczny restart serwera.
Microsoft
dziękuje Cesar Cerrudo za
zgłoszenie błędu, co pozwoliło nam lepiej chronić klientów.