Krytyczna luka, którą odkryto na serwerze DNS w systemie Microsoft Windows, od prawie dwóch dekad, mogła być wykorzystywana do uzyskania uprawnień administratora domeny i przejęcia całej infrastruktury IT w firmach.


Poważny bug w DNS

Na Kapitanie Hack’u dużo piszemy o bezpieczeństwie DNS. Poświęciliśmy temu nawet osobna kampanię Atakowanie DNS. Tym razem problem jest naprawdę poważny, bo sklasyfikowany na 10/10. Lukę odkryli badacze z firmy CheckPoint i otrzymała identyfikator śledzenia CVE-2020-1350 oraz nazwę SIGRed. Dotyczy możliwości wykonania zdalnie kodu i wpływa na system Windows Server w wersjach od 2003 do 2019.

Ciekawostką jest to, że odkryty bug jest idealny do wykorzystania przez cyberprzestępców, co oznacza, że napisany pod exploit może się automatycznie rozprzestrzeniać na wrażliwe maszyny w sieci bez interakcji z użytkownikiem. Ta cecha stawia go w tej samej kategorii ryzyka, co EternalBlue w Server Message Block (SMB) i BlueKeep w Remote Desktop Protocol (RDP).


Na czym polega odkryta luka?

Pisząc w bardzo dużym skrócie (cały raport możecie przeczytać tutaj.)

Badacze z Check Point odkryli lukę w implementacji DNS Microsoftu, którą można wykorzystać, gdy serwer analizuje przychodzące zapytanie lub odpowiedź na przesłane żądanie. A konkretniej, źródło znajduje się w funkcji SigWireRead programu dns.exe (widoczna jako „dns.exe! SigWireRead” w debuggerze). To od niej pochodzi skrócona nazwa opisywanej dziury. Badacze odkryli błąd dotyczący przepełnienia liczb całkowitych, które prowadzi do przepełnienia bufora na stosie pamięci podczas zwracania odpowiedzi serwera DNS na zapytania SIG.

Na swoim blogu technicznym naukowcy szczegółowo opisali, w jaki sposób mogli wykorzystać lukę w docelowym serwerze DNS, odpowiadając na jedno ze swoich wysłanych zapytań z odpowiedzią SIG wystarczająco dużą, aby wywołać błąd.

Osoba atakująca wykorzystująca SIGRed nie musi znajdować się w tej samej sieci co docelowy serwer DNS, ponieważ dane DNS mogą być przenoszone przez połączenie TCP obsługiwane przez Windows DNS.
Serwer docelowy przeanalizuje dane jako zapytanie DNS, nawet jeśli jest ono spakowane jako ładunek w HTTP.


Exploitacja

Exploitacja jest możliwa nawet w przeglądarkach, takich jak Internet Explorer i Microsoft Edge, które zezwalają na żądania do portu 53 używanego przez DNS. Google Chrome i Mozilla Firefox nie zezwalają na żądania HTTP do tego portu.


Demo z exploitacji DNS

Poniżej zamieszczamy demo wykonane przez specjalistów z CheckPoint, na którym ilustrują użycie przeglądarki jako wektora powodującego awarię wewnętrznego serwera DNS postawionego na systemie Windows.
Zalecamy wyłączenie dźwięku, chyba że lubicie „eksperymentalną muzykę” 🙂


Jak sobie radzić z problemem?

Microsoft wypuścił już łatkę niwelującą problem, dostępną tutaj i nie jest mu znany przypadek, aby ktoś jej wcześniej użył w środowiskach klientów.

Dla Firm, które obecnie nie mogą zastosować poprawki, Microsoft zaleca zmodyfikowanie rejestru w celu złagodzenia problemu. Zmiana zadziała po ponownym uruchomieniu usługi DNS:

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ DNS \ Parameters
DWORD = TcpReceivePacketSize
Wartość = 0xFF00

Powyższe można wprowadzić dwoma poleceniami z linii komend odpalając je na uprawnieniach administratora:

reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters” /v “TcpReceivePacketSize” /t REG_DWORD /d 0xFF00 /f

net stop DNS && net start DNS


Po zastosowaniu poprawki administratorzy powinni przywrócić zmiany w rejestrze do stanu pierwotnego, usuwając wartość klucza TcpReceivePacketSize i jego dane.

Więcej o bezpieczeństwie DNS dowiesz się tutaj. Zapraszamy do odwiedzenia naszych portalach społecznościowych LinkedIn oraz Facebook. Linki poniżej.

Podziel się z innymi tym artykułem!