Windows w wersji 8 i wyższych posiada nowo odkrytą słabość, która czyni ASLR bezużytecznym. ASLR (Address Space Layout Randomization) tłumaczony jest jako mechanizm losowego generowania lokalizacji alokacji pamięci wirtualnej. Mówiąc jaśniej, zaimplementowany już w Windows Vista mechanizm używa losowego rozmieszczania kodu procesów, by zapobiegać atakom związanym z naruszeniem pamięci, np. przepełnieniom bufora. Okazuje się, że ASLR nie został poprawnie zaimplementowany w Windows 8 i Windows 10.
Podstawowym zarzutem kierowanym przeciw ASLR w następcach Visty i Siódemki jest to, że nie wykonuje swojego podstawowego zadania, jakim jest randomizacja przestrzeni adresowej. Mechanizm stał się więc bezużyteczny. Odkrycie opisano na stronie instytutu CERT. Z raportu wynika, że Windows 8 wprowadził zmiany w implementacji ASLR. By uzyskać entropię, wymagane jest włączenie działającego "od dołu do góry" systemowego ASLR. Narzędzia, które włączają systemowy ASLR bez ustawienia oddolnego ASLR, nie będą mogły we właściwy sposób randomizować plików wykonywalnych. W taki sposób działa zarówno EMET (Zestaw narzędzi rozszerzonego środowiska ograniczającego ryzyko), jak i Windows Defender Exploit Guard. Choć ten drugi posiada możliwość włączenia obu rodzajów ASLR, opcja "Włączone domyślnie" w graficznym interfejsie użytkownika nie odzwierciedla właściwej wartości w rejestrze. W rezultacie następować będzie relokacja programów, ale zawsze do tych samych adresów - także po ponownym uruchomieniu komputera i w innych systemach. W przypadku Windows 7 relokacja będzie prowadziła do innego adresu po każdym nowym restarcie.
Actually, with Windows 7 and EMET System-wide ASLR, the loaded address for eqnedt32.exe is different on every reboot. But with Windows 10 with either EMET or WDEG, the base for eqnedt32.exe is 0x10000 EVERY TIME.
— Will Dormann (@wdormann) 15 listopada 2017
Conclusion: Win10 cannot be enforce ASLR as well as Win7! pic.twitter.com/Jp10nqk1NQ
Dobra wiadomość jest taka, że błąd można naprawić samodzielnie. Sposób przedstawił jego odkrywca, Will Dormann. Mamy tu do czynienia z edycją rejestru, dlatego metodę stosujemy na własną odpowiedzialność:
- Tworzymy plik tekstowy o następującej treści: Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\kernel]
- Zapisujemy go z rozszerzeniem .reg
- Otwieramy Edytor rejestru i klikamy Plik > Importuj
- Wybieramy utworzony przed chwilą plik .reg.
“MitigationOptions”=hex:00,01,01,00,00,00,00,00,00,00,00,00,00,00,00,00
Powyżej opisana metoda może stanowić rozwiązanie tymczasowe, nim Microsoft wypuści oficjalną łatkę. Firma nie odniosła się jeszcze do ujawnionych informacji.