Dziura Windows Metafile kończy 20 lat. Wyrządziła wiele szkód

Niedawno minęło 20 lat od opublikowania bardzo poważnej podatności CVE-2005-4560, pozwalającej na "hakowanie Windowsa obrazkiem". Dziura w GDI, umożliwiająca wykonanie kodu podczas wyświetlania pliku WMF, przez kilka tygodni wyrządziła wiele szkód.

Windows Metafile
Windows Metafile
Źródło zdjęć: © PHOTOMOSH, dobreprogramy | Kamil Dudek

Potocznie zwana "dziurą WMF-ową" lub "MICE" (Metafile Image Code Execution), podatność dawała dość spektakularne efekty, od samego początku służąc do pobierania trojanów. Portale IT często umieszczały krótkie filmy FLV demonstrujące uruchamanie dziesiątek procesów w tle po wyświetleniu pliku WMF.

Media straszyły także, że dziura znajduje się w systemie od wersji Windows 3.0 i możliwe, że jest backdoorem. Informacje te prędko stały się bardzo popularne, choć stanowiły nadużycie i nadinterpretację. Nie pomagało też to, że Microsoft wydawał się nie rozumieć istoty problemu i błędnie dokumentował jego impakt, w biuletynie MS06-001.

Antyczne formaty

Jak tłumaczy Steve Gibson, problem dotyczy obsługi funkcji SETABORTPROC w systemach z rodziny Windows NT. Ponieważ plik WMF nie jest obrazkiem rastrowym (piksele), tylko zbiorem instrukcji rysujących, w okolicach roku 1991 (na fali ówczesnej mody) zadecydowano, że należy uczynić z niego platformę programistyczną. Dzięki temu WMF wzbogacił się o możliwość wołania zewnętrznego kodu w specyficznych okolicznościach.

Udokumentowane działanie znane z Windows 3.x/9x mówiło wprost, że zewnętrzny kod ma się znajdować w aplikacji. Jest tak i dziś. Ale kilka lat po stworzeniu formatu, na potrzeby "nowoczesnego" i "bezpiecznego" systemu Windows NT usunięto ograniczenie dotyczące lokalizacji kodu. Dzięki temu, SETABORTPROC mogło wołać procedurę zawartą w samym pliku WMF, czyniąc go nośnikiem arbitralnego kodu wykonywalnego.

Kiepska jakość informacji

Dlaczego zdecydowano się uczynić systemy NT mniej bezpiecznymi niż Windows 95 - nie wiadomo, ale było to pożywką dla hipotez o "backdoorach" w systemie. Popularyzatorem tej tezy stał się niezamierzenie Leo Laporte i jego program Security Now. Wyjaśnienie sprawy było dodatkowo utrudniane przez fatalną komunikację po stronie Microsoftu.

Misja AI
Misja AI© Cyfrowi Bezpieczni

Informowano na przykład, że podatność istnieje także w Windows 9x, ale jest trudniejsza do wykorzystania lub że istnieją "środki zaradcze". W praktyce chodziło o to, że Windows 9x zachowywał się zgodnie z dokumentacją, a Windows NT i nowsze wprost umożliwiały wykonywanie kodu z poziomu pliku. W Windows 3.x było to niemożliwe z innych powodów.

Poprawki i workaroundy

Microsoft opublikował poprawkę 9 dni po ogłoszeniu podatności, 5 stycznia 2006, choć była gotowa już 31 grudnia. Poprawkę KB912919 otrzymały Windows 2000, XP, 2003 oraz… wersja Beta 1 systemu Windows Vista. Zastąpiono ją nową implementacją GDI w kwietniu 2007. Początkowo zaproponowano środek zaradczy w postaci wyłączenia miniaturek obrazów w Eksploratorze. W zależności od źródła, ostrzegano też, że ponieważ Internet Explorer potrafi wyświetlać WMF, wystarczy osadzić grafikę na stronie, a wirus uruchomi się sam.

Przestępcy prędko przekonali się, że to nieprawda. Internet Explorer był świadom zagrożenia i nie wykonywał arbitralnego kodu w ramach SETABORTPROC. Nie wyjaśniając dlaczego reszta systemu nie wdrożyła zbliżonego zabezpieczenia, Microsoft ogłosił, że IE sam w siebie jest pod tym względem bezpieczny. Dlatego przestępcy zaczęli serwować pliki WMF jako plik do pobrania, a nie element osadzony. Sposób ten był popularny przez wiele miesięcy roku 2006.

Podatność WMF odkryto niemal równo po poprzedniej głośnej dziurze w obsłudze grafiki, czyli CVE-2004-1049. Umożliwiała ona wykonanie zdalnego kodu kursorem lub ikoną. I tu już Internet Explorer zdecydowanie był podatny. Problem był na tyle niemożliwy do rozwiązania, że Microsoft po prostu dorzucił aplikację pracującą w tle, patchującą funkcję LoadImage. Problemy tego typu są już dziś melodią przeszłości. Nowoczesne formaty są zazwyczaj bezpieczniejsze. Co innego Notatnik...

Kamil J. Dudek, współpracownik redakcji dobreprogramy.pl

Programy

Zobacz więcej

Wybrane dla Ciebie

Komentarze (2)