Złośliwy plik RAR pokonał Windows Defendera, bo Microsoft źle skopiował kod

Windows Defender chroni przed wirusami na równi z najlepszymiproduktami firm trzecich – chwaliłsię niedawno Microsoft. Kto jednak uchroni przed atakamizłośliwego oprogramowania samego Windows Defendera? Po raz kolejnyokazałosię, że silnik antywirusowy wykorzystywany obecnie wewszystkich ochronnych narzędziach Microsoftu pozwala na zdalneuruchomienie złośliwego kodu, i to z ogromnymi uprawnieniamiLocalSystem.Wystarczy podesłać odpowiednio spreparowany plik RAR.

Archiwa na komputerze z depositphotos
Archiwa na komputerze z depositphotos

05.04.2018 14:07

Firma z Redmond ma sporo szczęścia, ze zagrożenie to odkryłsłynny haker Halvar Flake (Thomas Dullien), pracujący dla Google, anie dla np. chińskiej mafii. Co robi antywirus, gdy napotka plikarchiwum? Oczywiście próbuje go rozpakować, wykorzystującwbudowane w swój silnik mechanizmy obsługi poszczególnychformatów. Wewnątrz mpengine.dll (biblioteki używanej MicrosoftMalware Protection Engine) znajdziemy m.in. taki mechanizm dlaogromnie popularnego formatu RAR.

Jeśli silnik antywirusowy Microsoftu jest w wersji wcześniejszejniż 1.1.14700.5, to wówczas podstawiając mu uzłośliwiony plikRAR do przeskanowania możemy doprowadzić do uszkodzenia pamięci iuruchomienia własnego kodu z uprawnieniami LocalSystem samegoantywirusa– jeszcze wyższymi niż uprawnienia administratora.

Kto jest winien tej podatności? Tu historia robi się naprawdęciekawa. Firma z Redmond po prostu wzięła kod źródłowy zestarszej wersji (4.2.4) dearchiwizera unrar,rozprowadzanego na niewolnejale zarazem freeware’owej licencji rosyjskiego producenta. Kod tenzostał sforkowany, a następnie zmodyfikowany i dopasowany dosilnika antywirusowego.

This is amazing, Windows Defender used the open source unrar code, but changed all the signed ints to unsigned for some reason, breaking the code. @halvarflake noticed and got it fixed. Remote SYSTEM memory corruption ?? https://t.co/gsx9ZMk1Hz

— Tavis Ormandy (@taviso) April 4, 2018Przy okazji jednak popełnio dziwny błąd: wszystkiestałoprzecinkowe zmienne z bitem znaku (signed) zostałyprzekształcone w zmienne stałoprzecinkowe bez bitu znaku(unsigned). Jako pokazał Halvar Flake, przy arytmetycznychporównaniach rozmiarów danych pozwala to na przekroczeniezalokowanego bufora i w konsekwencji uszkodzenie pamięci przezmpengine.dll.

Udostępniona poza normalnym cyklem wydawniczym łatka napodatność CVE-2018-0986usuwa to zagrożenie. Na plus Microsoftowi należy zaliczyć to, żełatka została przygotowana w rekordowym czasie. Sęk w tym, że niejest to pierwsza tego typu wpadka. Poprzednie oglądaliśmy w majui czerwcuzeszłego roku – i z czasem pojawiło się korzystające z nichmalware. Dlatego mamy nadzieję, że już pobraliście poprawkę zWindows Update: wersję jak to Microsoft nazywa, „aparatu”, możnasprawdzić w Windows Defender Security Center – powinna być równaco najmniej 1.1.14700.5.

Programy

Zobacz więcej
Wybrane dla Ciebie
Komentarze (83)