BlueKeep

BlueKeep  este o vulnerabilitate a computerului din implementarea Microsoft Remote Desktop Protocol care permite executarea de cod de la distanță . BlueKeep afectează toate versiunile neactualizate de Windows din linia Windows NT , de la Windows 2000 la Windows Server 2008 R2 și Windows 7 . În septembrie 2019, exploit- ul BlueKeep a fost făcut disponibil public ca parte a proiectului Metasploit [1] .

Potrivit NSA și Microsoft , BlueKeep are potențialul de a fi exploatat de viermi de computer , Microsoft afirmând, pe baza unei estimări de 1 milion de dispozitive vulnerabile, că un astfel de atac ar putea fi la o scară comparabilă cu atacurile EternalBlue precum NotPetya și WannaCry. [2] [3] [2] [3] [4] .

Vulnerabilitatea a fost evidențiată de CVE -ID CVE-2019-0708 [5] .

Scurtă descriere

Vulnerabilitatea BlueKeep a fost descoperită în implementarea protocolului RDP în unele versiuni ale sistemului de operare Windows în mai 2019. RDP este un protocol proprietar care oferă acces de la distanță la computerele care rulează Windows. BlueKeep nu are nimic de-a face cu mecanismul protocolului în sine și afectează doar implementarea acestuia. În special, vulnerabilitatea afectează partea din cod responsabilă cu gestionarea așa-numitelor canale virtuale . RDP utilizează diferite circuite virtuale pentru a transporta diferite tipuri de date. De exemplu, canalul „rdpsnd” transmite audio, în timp ce canalul „cliprdr” este folosit pentru a transmite conținutul clipboard-ului . Circuite virtuale suplimentare pot fi utilizate pentru a oferi extensii ale protocolului RDP la nivelul aplicației utilizator. În Windows 2000 , erau disponibile doar 32 de canale virtuale statice și, prin urmare, pentru a evita această limitare, a fost propus mecanismul canalelor virtuale dinamice, care permite transmiterea mai multor canale dinamice într-unul static. Canalele statice sunt create atunci când o sesiune RDP este creată și există până când aceasta este închisă, în timp ce canalele dinamice pot fi create și șterse la cererea clientului. De asemenea, spre deosebire de canalele statice, care sunt numerotate cu un număr întreg de la 0 la 31, canalele dinamice sunt identificate prin numele șirului lor . Windows leagă numele canalelor dinamice la numerele canalelor statice în funcțiile _IcaBindVirtualChannels și _IcaRebindVirtualChannels conținute în driverul termdd.sys [6] .

În mod implicit, RDP rezervă numărul 31 pentru un circuit virtual intern, nedirecționat de utilizator, numit „MS_T120”. Cu toate acestea, driverul nu verifică existența unui canal virtual personalizat cu același nume. Astfel, un atacator poate crea un alt canal dinamic numit „MS_T120” și îl poate lega de un canal static cu un număr diferit. În acest caz, un pointer către o instanță deja existentă a canalului dinamic „MS_T120” va fi asociat cu noul număr. Când canalul creat de atacator este închis, memoria este eliberată , după care indicatorul suspendat către canalul „MS_T120” asociat cu numărul 31 rămâne în sistem, ceea ce poate duce la erori de acces la memorie [6] . Situația este agravată de faptul că crearea de canale virtuale dinamice poate avea loc înaintea etapei de autentificare a utilizatorului , ceea ce permite ca BlueKeep să fie folosit de viermii informatici . Această problemă este parțial rezolvată prin utilizarea Network Level Authentication (NLA) , care a apărut în Windows Vista  , o opțiune a protocolului RDP care necesită autentificarea utilizatorului înainte de stabilirea unei conexiuni [7] .

Microsoft a lansat o actualizare de securitate (inclusiv pentru mai multe versiuni de Windows a căror perioadă de suport a ajuns la sfârșit, în special pentru Windows XP ) pe 14 mai 2019 [4] . Versiunea corectată a driverului termdd.sys nu permite alocarea altor numere decât 31 unui canal numit „MS_T120”.

Numele „BlueKeep” pentru această vulnerabilitate a fost dat de expertul în securitate informatică Kevin Beaumont în postarea sa pe Twitter .

Istorie

BlueKeep a fost menționat pentru prima dată de Centrul Național de Securitate Cibernetică din Marea Britanie [8] , raportul Microsoft a fost lansat pe 14 mai 2019 împreună cu o actualizare de securitate care remediază această vulnerabilitate. Ulterior, pe 4 iunie 2019, NSA și-a emis avizul de securitate [3] .

În aceeași zi în care a fost lansat avizul NSA, o echipă de cercetători de la centrul de informații CERT a raportat o altă vulnerabilitate legată de protocolul RDP în Windows 10 May 2019 Update și Windows Server 2019 . În special, cercetătorii au remarcat faptul că acreditările de autentificare la nivel de rețea sunt stocate în cache pe sistemul client, iar utilizatorul își poate reaccesa automat conexiunea RDP dacă se întrerupe. Microsoft a respins această vulnerabilitate ca fiind un comportament intenționat, argumentând că poate fi dezactivată folosind mecanismul Politicii de grup [9] .

Începând cu iunie 2019, au fost depuse mai multe PoC -uri de lucru pentru a exploata această vulnerabilitate. În special, McAfee [6] și Sophos [10] [11] și-au prezentat versiunile . Pe 22 iulie 2019, în cadrul conferinței au fost prezentate mai multe informații despre BlueKeep de către un vorbitor de la o companie chineză de securitate a informațiilor [12] . Pe 25 iulie 2019, experții au declarat că o versiune comercială a exploit- ului ar fi putut fi disponibilă la acel moment [13] .

Pe 13 august 2019, a fost raportat DejaBlue , un nou grup de vulnerabilități legate de BlueKeep. Pe lângă versiunile mai vechi de Windows, DejaBlue a fost afectat și de versiunile mai noi ale sistemului de operare până la Windows 10 [14] .

Pe 6 septembrie 2019, un exploit pentru vulnerabilitatea BlueKeep ca parte a Metasploit [1] a apărut în domeniul public . Cu toate acestea, versiunea inițială a exploit-ului sa dovedit a fi extrem de nesigură din cauza apariției frecvente a unei erori BSoD . O versiune revizuită a devenit disponibilă mai târziu [15] .

Pe 2 noiembrie 2019, a fost raportat primul atac masiv al hackerilor BlueKeep legat de criptomoneda Monero [ 16] [17] . Pe 8 noiembrie 2019, Microsoft a confirmat atacul și a îndemnat utilizatorii să își actualizeze versiunile de Windows cât mai curând posibil [18] .

Mecanism

Atacul DoS

Cel mai simplu mod de a exploata vulnerabilitatea BlueKeep este implementarea unui atac DoS pe baza acesteia. Când un client se conectează, pe server este creat automat un canal „MS_T120” asociat cu numărul static 31. Utilizând MCS Connect Initial PDU cu cererea GCC Conference Create Request RDP, clientul poate crea canale dinamice suplimentare la alegere, în timp ce serverul returnează numărul de canale statice asociate în mesajul de răspuns RDP. Deoarece această solicitare are loc înainte de pasul de autentificare a utilizatorului , atacatorul nu trebuie să aibă un cont în sistem pentru a efectua cu succes atacul. Dacă clientul specifică „MS_T120” în lista de canale, serverul, apelând din nou funcția _IcaBindVirtualChannels , va lega o instanță existentă a structurii canalului la un număr diferit de 31. Când sesiunea se termină, serverul va elibera mai întâi memorie alocată la închiderea canalului creat de atacator, după care va încerca să elibereze aceeași memorie în sine atunci când încearcă să închidă canalul numărul 31. Astfel, există o dublă eliberare de memorie în interiorul driverului termdd.sys . Deoarece eroarea apare în spațiul kernelului , blochează sistemul de operare într-un BSoD [19] [20] .

Atacul RCE

Mult mai periculoasă este utilizarea BlueKeep pentru executarea codului de la distanță (RCE) . Structurile de date cu informații despre canalele dinamice sunt stocate în pool-ul nepaginat . Memoria pentru mesajele stocate în coada de canale este, de asemenea, alocată în pool-ul nepaginat. Memoria alocată unui anumit mesaj este eliberată numai atunci când este citită de pe canal, adică dacă canalul nu este citit, atunci memoria va fi eliberată doar în momentul în care conexiunea este închisă [21] .

Pentru a efectua RCE, un atacator trebuie să realoce și să suprascrie memoria la adresa la care se afla structura canalului „MS_T120” înainte ca memoria să fie eliberată. Pentru a efectua execuția codului rău intenționat, este suficient să schimbați valoarea pointerului către tabelul de metode virtuale din această structură la valoarea dorită. Această sarcină este mult facilitată de absența unui mecanism de prevenire a executării datelor (DEP) în pool-ul nepaginat în versiunile de Windows anterioare Windows 7 . Aceasta înseamnă că codul rău intenționat poate fi plasat la aceeași adresă ca tabelul de metode virtuale false. Atât schimbarea pointerului, cât și plasarea directă a codului rău intenționat se pot face prin mecanismul menționat mai sus de trimitere a mesajelor pe un canal care nu va fi citit din [21] .

Metode de apărare

Note

  1. 12 Goodin , Dan . Exploatare pentru bug-ul Windows BlueKeep care poate fi wormable eliberat în sălbăticie - Modulul Metasploit nu este la fel de rafinat ca exploitul EternalBlue. Totuși, este puternic. , Ars Technica  (6 septembrie 2019). Arhivat din original pe 27 noiembrie 2019. Preluat la 28 noiembrie 2019.
  2. Warren, Tom Microsoft avertizează despre exploatare majoră de securitate Windows, asemănătoare WannaCry, lansează corecții XP . The Verge (14 mai 2014). Preluat la 28 noiembrie 2019. Arhivat din original la 2 septembrie 2019.
  3. 1 2 Cimpanu, Cătălin Chiar și NSA îi îndeamnă pe utilizatorii Windows să patcheze BlueKeep (CVE-2019-0708) . ZDNet . Preluat la 28 noiembrie 2019. Arhivat din original la 6 septembrie 2019.
  4. 12 Goodin , Dan . Microsoft imploră practic utilizatorii de Windows să remedieze defectul BlueKeep , Ars Technica  (31 mai 2019). Arhivat din original pe 22 iulie 2019. Preluat la 28 noiembrie 2019.
  5. Există o vulnerabilitate de execuție a codului de la distanță în Serviciile Desktop la distanță, cunoscută anterior ca Servicii terminale, atunci când un atacator neautentificat se conectează la sistemul țintă folosind RDP și trimite solicitări special concepute, denumită „Vulnerabilitatea la executarea codului la distanță a serviciilor de desktop la distanță”. . Consultat la 28 noiembrie 2019. Arhivat din original pe 9 noiembrie 2019.
  6. 1 2 3 4 5 6 RDP înseamnă „Really DO Patch!” – Înțelegerea vulnerabilității Wormable RDP CVE-2019-0708 (link indisponibil) . Bloguri McAfee (21 mai 2019). Preluat la 18 noiembrie 2019. Arhivat din original la 21 mai 2019. 
  7. 1 2 Preveniți un vierme prin actualizarea Serviciilor Desktop la distanță (CVE-2019-0708)' . Consultat la 30 noiembrie 2019. Arhivat din original la 1 decembrie 2019.
  8. Microsoft . Ghid de actualizare de securitate - Mulțumiri, mai 2019 . Microsoft (mai 2019). Preluat la 28 noiembrie 2019. Arhivat din original la 23 noiembrie 2019.
  9. Microsoft respinge noul „bug” Windows RDP ca caracteristică . Naked Security (6 iunie 2019). Preluat la 28 noiembrie 2019. Arhivat din original la 17 decembrie 2019.
  10. Stockley, Mark . Exploatarea RDP BlueKeep arată de ce într-adevăr trebuie să corectați , NakedSecurity.com  (1 iulie 2019). Arhivat din original pe 7 decembrie 2019. Preluat la 28 noiembrie 2019.
  11. Personal. CVE-2019-0708: Vulnerabilitatea de execuție a codului de la distanță Servicii Desktop la distanță (cunoscută ca BlueKeep) - Buletin de asistență tehnică . Sophos (29 mai 2019). Consultat la 28 noiembrie 2019. Arhivat din original la 3 iulie 2019.
  12. Goodin, Dan . Șansele de exploatare BlueKeep distructivă cresc cu un nou explicator postat online - Slide-urile oferă cea mai detaliată documentație tehnică disponibilă public văzută până acum. , Ars Technica  (22 iulie 2019). Arhivat din original pe 8 noiembrie 2019. Preluat la 28 noiembrie 2019.
  13. Cimpanu, Cătălin . Compania americană care vinde exploatare BlueKeep cu arme - O exploatare pentru o vulnerabilitate despre care Microsoft se temea că ar putea declanșa următorul WannaCry este acum vândută comercial. , ZDNet  (25 iulie 2019). Arhivat din original pe 8 noiembrie 2019. Preluat la 25 noiembrie 2019.
  14. Greenberg, Andy . DejaBlue: Noile bug-uri în stil BlueKeep reînnoiesc riscul unui vierme Windows , prin cablu  (13 august 2019). Arhivat din original pe 13 aprilie 2021. Preluat la 28 noiembrie 2019.
  15. Cimpanu, Cătălin . Exploatarea BlueKeep pentru a obține o remediere pentru problema sa BSOD , ZDNet  (11 noiembrie 2019). Arhivat din original pe 18 noiembrie 2019. Preluat la 28 noiembrie 2019.
  16. Greenberg, Andy . Primul hacking în masă BlueKeep este în sfârșit aici, dar nu vă panicați - După luni de avertismente, a sosit primul atac de succes care folosește vulnerabilitatea BlueKeep a Microsoft - dar nu este atât de rău pe cât ar fi putut fi. , prin cablu  (2 noiembrie 2019). Arhivat din original pe 2 decembrie 2019. Preluat la 28 noiembrie 2019.
  17. Immanni, Manikanta . Primul hacking în masă BlueKeep este în sfârșit aici, dar nu vă panicați - După luni de avertismente, a sosit primul atac de succes care folosește vulnerabilitatea BlueKeep a Microsoft - dar nu este atât de rău pe cât ar fi putut fi.  (2 noiembrie 2019). Arhivat din original pe 3 noiembrie 2019. Preluat la 28 noiembrie 2019.
  18. Microsoft lucrează cu cercetători pentru a detecta și a proteja împotriva noilor exploit-uri RDP , Microsoft  (7 noiembrie 2019). Arhivat din original pe 23 noiembrie 2019. Preluat la 28 noiembrie 2019.
  19. 12 Analiza CVE - 2019-0708 (BlueKeep) . MalwareTech (31 mai 2019). Consultat la 29 noiembrie 2019. Arhivat din original la 17 septembrie 2019.
  20. BlueKeep Exploit Analysis . Mediu (18 septembrie 2019). Preluat la 29 noiembrie 2019. Arhivat din original la 27 noiembrie 2019.
  21. 12 BlueKeep : O călătorie de la DoS la RCE (CVE-2019-0708) . MalwareTech (6 septembrie 2019). Consultat la 29 noiembrie 2019. Arhivat din original pe 28 noiembrie 2019.
  22. Stockley, Mark . RDP expus: lupii deja la ușa ta , Sophos  (17 iulie 2019). Arhivat din original pe 18 octombrie 2019. Preluat la 28 noiembrie 2019.

Link -uri