Wreszcie koniec! Właśnie wydano ostatnie aktualizacje dla Windows XP
Po niemal osiemnastu latach od premiery, systemy operacyjne oparte o Windows XP (2600.xpclient) utraciły wszystkie formy obsługi technicznej. Dziś wydano ostatnie aktualizacje dla produktu Windows Embedded 2009 POSReady. Przyjmuje się, że wszystkie dotychczasowe aktualizacje dla POSReady w praktyce pasują również do innych odmian xpclient – Home Edition oraz Professional.
09.04.2019 | aktual.: 04.07.2019 23:34
Aktualizacje poza licencją
Uważni czytelnicy zapewne pamiętają, że system Windows XP utracił wsparcie już w kwietniu 2014 roku, zresztą po wielu przesunięciach terminu. Jednakże, dla zagorzałych fanów „ikspeka”, którzy dość liberalnie podchodzili do kwestii licencjonowania i obostrzeń EULA, istniała droga dalszego otrzymywania łatek. Było to możliwe, bo w roku 2009 Microsoft nie ukończył jeszcze w pełni prac nad komponentyzacją systemu i obniżeniem jego wymagań sprzętowych, w konsekwencji czego był zmuszony do wydania poprzedniej bazy kodowej jako system przeznaczony na (słabej mocy) urządzenia dedykowane, jak bankomaty, panele kasjerskie itd. W ten sposób powstał system Windows Embedded 2009 POSReady, zaopatrzony w nowy instalator, ale w praktyce złożony z tego samego kodu, co Windows XP Service Pack 3. [img=POSReady2009]Mechanizm Windows Update, odpowiadający za profilowanie oprogramowania pod kątem wymaganych aktualizacji, okazał się niezwykle pobieżny w procesie dokonywania detekcji rodzaju Windows XP. Prędko okazało się, że podobieństwo między Windows XP Professional Service Pack 3 a systemem 2009 POSReady jest tak duże, że do rozróżnienia ich wykorzystywany jest tylko jeden klucz w Rejestrze. Dodanie go ręcznie pozwalało skutecznie zmylić Agenta Windows Update (wuauclt.exe) w kwestii tego, na jakim systemie wyszukiwane są łatki. W ten sposób możliwe było (i dalej jest) otrzymanie aktualizacji dla wariantów Media Center Edition oraz POSReady, posiadając wariant Home Edition lub Professional.
Taki eksperyment jest oczywiście naruszeniem licencji. Microsoft wykrył nagły wzrost żądań aktualizacji dla systemu Embedded, słusznie założył brak spontanicznej materializacji setek tysięcy bankomatów i wydał oświadczenie, że niniejszy hack jest wysoce niezalecany, ponieważ serwuje aktualizacje nieprzetestowane na instalacjach klienckich i nie pokrywa w pełni wymagań bezpieczeństwa dla systemów domowych. To oczywiście prawda. Łatki dla XP Pro zawsze były testowane pod kątem niepsucia aplikacji użytkowych i scenariuszy czysto konsumenckich. A od owego momentu zaprzestano gwarantowania, że nowy fix nie zepsuje przy okazji obsługi kamer wideo, Internetowej Gry Warcaby i Pieska Wyszukiwania. Testy ograniczono (zapewne) do zapewnienia stabilnej platformy dla aplikacji, bo taki był planowany scenariusz użycia wariantu POSReady.
Trudne życie wiekowego systemu
Naturalnie, adresatom niniejszego apelu to nie przeszkadzało. Przez wiele lat aktualizacje istotnie nic nie psuły. A to, czy na pewno okazywały się dostarczać mniejszy poziom bezpieczeństwa, jest dyskusyjne. Trudno przytoczyć z pamięci scenariusz, w którym wprowadzana łatka dostarcza ochronę tylko dla scenariuszy „wbudowanych”, ale nie konsumenckich. Co nie oznacza, że to niemożliwe. Całkiem prawdopodobne, że (to fikcyjny przykład) błąd w programie Movie Maker zostałby załatany tylko na poziomie kodeka i biblioteki DLL, ale nie samego programu. Wtedy powstrzymanoby złośliwe użycie API, ale sam program pozostałby wrażliwy. Mowa o takich właśnie wariantach. Jest jednak wysoce prawdopodobnym, że gdyby XP wciąż otrzymywał aktualizacje, to byłyby one identyczne z POSReady. Tak było wcześniej. Więc obawa o niepełne bezpieczeństwo jest jednak raczej na wyrost. Zresztą XP i tak jest dziurawy jak sito i niewiele trzeba, żeby się przez niego dziś przedrzeć.
Zdarzały się jednak awarie. W zeszłym roku jedna z aktualizacji (KB4056615) uszkodziła działanie Instalatora Windows. Instalacje pakietów MSI kończyły się niepowodzeniem, zgłaszając dziwne błędy w nieudokumentowanych miejscach. Próżno było szukać jakichkolwiek informacji na temat takich problemów w notach wydawniczych, tych bowiem nie wydawano dla POSReady. Niezbyt rozsądne byłoby też pytanie na forach Microsoftu, oznaczało to bowiem jawne przyznanie się do stosowania „podrasowanej” wersji systemu.
Zresztą, mimo krótkiego i eleganckiego triku (żadnych cracków!) na otrzymywanie aktualizacji, samo wyszukanie ich przez Agenta Windows Update graniczyło z cudem. Łatki dla POSReady (oraz dla XP) nigdy nie były bowiem kumulatywne. Bardzo rzadko wydawano pakiety zbiorcze rollup, nie wydano też „pożegnalnej” paczki w 2014 roku. Aktualizacje dla systemów starszych generacji (2000, XP i 2003, ale Vista i 7 początkowo też) agregowano wyłącznie w postaci pakietów Service Pack, a nawet one nie zawierały wszystkich wydanych hotfiksów. Paczki takie, jak przeglądarka XPS, profile ICM lub kodek Windows Photo zawsze wydawano oddzielnie.
Oznacza to, że liczba permutacji możliwych zainstalowanych zbiorów aktualizacji była olbrzymia. Dlatego na systemie SP3, ze wszystkimi wydanymi aktualizacjami opcjonalnymi i pełnym zbiorem aktualizacji krytycznych wydanych aż do kwietnia 2014, Agent Windows Update nierzadko „mielił” długie godziny zanim wykreślił listę pasujących łatek dla POSReady. Czasem trwało to np. dwie godziny, a czasem znacznie, znacznie więcej. Wystarczyło, by danego miesiąca wydano aktualizację podmieniającą nieco bardziej wrażliwy plik w łańcuszku zastąpień (zaczynającym się przecież aż w 2008 roku!). Wtedy wyszukiwanie aktualizacji na nowo zaczynało zajmować nawet kilka tygodni! W przypadku systemu Windows Vista, pierwsze wyszukanie aktualizacji na komputerze z Core 2 Duo T7300 trwa 33 dni.
Sztuka dla sztuki
Z upływem czasu, nie tylko Microsoft wycofał wsparcie dla Windows XP. Uczyniła tak również większość projektów aplikacji użytkowych, a przede wszystkim przeglądarek internetowych. Rozwój HTML5 być może ostatnio nieco zwolnił, ale wciąż istnieje ryzyko, że najnowsze strony internetowe niedługo po prostu przestaną się poprawnie rysować w czymkolwiek, co działa na Windows XP. Nie wspominając o tym, że API Usług Kryptograficznych wbudowane w system nie obsługuje nowych szyfrów, a te stare są powoli wycofywane z użycia...
Wiemy jednak dobrze, że nigdy nie zabraknie „fanatyków ikspeka”, którzy uparcie pozostaną przy tej platformie jeszcze przez długi czas. W zasadzie każdy system operacyjny ma grupę swojej oddanej gwardii. Dosłownie każdy. Fani klasycznego Mac OS, systemu gorszego chyba pod każdym względem od wersji X, do tego stopnia nie chcieli dać mu odejść, że stworzyli własny fork Mozilli, działający na Mac OS. Nowe wersje programu wydawano aż do 2014 roku, kilkanaście lat (!) po premierze OS X 10.0. Podobnie sprawa ma się z systemem Haiku, implementacją antycznego systemu BeOS, co samo w sobie, z racji głębokich ograniczeń architekturalnych, jest z definicji orką na ugorze (wymagana zgodność z GCC 2.95! Dzisiaj!).
Z XP jest jednak inaczej. Po pierwsze, system nie osiągnął jeszcze rozkładu porównywalnego choć trochę z Mac OS 9. Pod spodem kolorowego pulpitu znajduje się bowiem względnie nowoczesny system NT, choć w bardzo starej wersji. Niektórzy jego najgłośniejsi użytkownicy nie chcą się przenieść w czasie podczas nostalgicznej wyprawy ani zestawić środowiska zgodności z jakimś nieobsługiwanym oprogramowaniem. Traktują XP jako pełnoprawne narzędzie pracy, co jest w dużym stopniu zaklinaniem rzeczywistości, nieodmiennym szczególnie od religijnego natchnienia ewangelistów Windows Phone.
Co jest w środku?
Nie trzeba czekać trzech tygodni, aż Agent Windows Update rozwiąże listę zależności i dostarczy nam aktualizacje. Da się je pobrać ręcznie z Katalogu Windows Update. Paczki nie są kumulatywne, więc wydano ich starym zwyczajem kilkanaście (ściślej 14). Ich numery notatek to:
- KB4494528
- KB4493435
- KB4495022
- KB4487990
- KB4493794
- KB4493793
- KB4493795
- KB4493927
- KB4493796
- KB4493797
- KB4494059
- KB4493790
- KB4493563
- KB4491443
Co jest w środku? Zajrzenie do środka jest trudniejsze, niż kiedyś, bo wszystkie aktualizacje stosują kompresję SFX, ale możliwe jest ich ręczne wyekstrahowanie lub... przejrzenie pliku z manifestem. Na szczęście większość z nich ma porządne opracowania w Microsoft Knowledge Base i co prawda nie oferuje linków bezpośrednio prowadzących do opisów, to po dłuższym polowaniu można wykopać detale na portalu Microsoft Security Response Center. Dzięki temu wiemy, że powyższe aktualizacje łatają kolejno:
- Instalator Windows (nieprawidłowe instalacje)
- Internet Explorer (aktualizacje zabezpieczeń dla dziur, między innymi CVE-2019-0752(https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0752)
- Podatności CVE-2019-0802 i CVE-2019-0849 w podsystemie GDI Plus (co ciekawe, problem występuje też(https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0802) na Windows 10)
- Strefy czasowe
- Podatność CVE-2019-0851(https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0851) w module Jet. Dotyczy również Windows 10
- Podatność CVE-2019-0877(https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0877) w module Jet. Dotyczy również Windows 10
- Podatność CVE-2019-0671(https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0671) w silniku ODBC dla baz danych Access. Ponownie, istnieje też w Windows 10
- Podatność CVE-2019-0848(https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0848) w module jądra Win32k (znowu!). Jakimś cudem, identyczna podatność także istnieje w najnowszym Windows 10
- Podatność CVE-2019-0847(https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0847) w module Jet - ale inna! Dotyczy również Windows 10
- Podatność CVE-2019-0846(https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0846) w module Jet - ale większa! Impakt oceniony na 7.8 w skali CVSS. Dotyczy również Windows 10, ponieważ oczywiście że tak
- Podatność CVE-2019-0845(https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0845) w mechanizmie aktualizacji OLE (ASP, ActiveX). Dotyczy również Windows 10, nawet bez Internet Explorera
- Podatność CVE-2019-0792(https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0792) w bibliotece MSXML3 Core Services (już rozumiecie dlaczego do tego komponentu wydano 14 Service Packów?). Dotyczy również Windows 10
- Podatność CVE-2019-0842(https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0842) w silniku skryptowym Visual Basic Script. Dotyczy również Windows 10, bowiem tam również jest obecny ten sam silnik skryptowy
- Podatność CVE-2019-0856(https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0856) w Głównej Bibliotetce NT (ntdll.dll). Dotyczy również Windows 10, wszystkich poprzednich Windowsów oraz bezpulpitowych instalacji typu Core
Przerażającym jest, że poza pierwszą, wszystkie niniejsze błędy są obecne również w świeżutkim Windows 10 w wersji 1903. Są oczywiście łatane w inny sposób innymi aktualizacjami, ale każda wymieniona podatność CVE, załatana w POSReady (a więc XP) znajduje się również w najnowszym systemie z Redmond. Najnowsza Dziesiątka otrzymała w dodatku o wiele więcej aktualizacji, powstaje więc pytanie, który system jest tak naprawdę mniej bezpieczny?
To oczywiście złośliwe pytanie, ponieważ Windows 10, nawet posiadający takie same dziury, o wiele bardziej utrudnia ich wykorzystanie. Z drugiej jednak strony, najwyraźniej pod maską wcale nie zachodzą aż takie rewolucje, jak można by podejrzewać. A przynajmniej nie wszędzie. Warto także wykluczyć z niniejszych rozważań dziury w mechanizmach legacy, powstałych w latach dziewięćdziesiątych, jak Visual Basic, Access, Jet i ActiveX.
Pożegnajmy więc Windows XP. Ostatnią wersją owego systemu, wydanego 24 sierpnia 2001, jest numer 2600.7682, zbudowany 19 marca 2019 roku. Do osiemnastki zabrakło pięciu miesięcy. I pomyśleć, że śmiano się na przełomie wieków, gdy Microsoft uporządkował swój kalendarz wsparcia i jawnie wyraził anulowanie supportu dla Windows 1.0 wraz z grudniem 2001. „Przecież nikt nie używa jednego systemu przez piętnaście lat!”. Czyżby?