Vulnerabilitatea în Docker care vă permite să evadați din container

În Setul de instrumente pentru gestionarea containerelor Docker Linux izolate identificat vulnerabilitate (CVE-2018-15664), care, într-un anumit set de circumstanțe, vă permite să accesați mediul gazdă dintr-un container dacă aveți posibilitatea de a vă lansa imaginile în sistem sau cu acces la un container care rulează. Problema apare în toate versiunile de Docker și rămâne nerezolvată (propus, dar încă neacceptat, plasture, care implementează suspendarea containerului în timpul efectuării operațiunilor cu FS).

Vulnerabilitatea permite extragerea fișierelor dintr-un container într-o parte arbitrară a sistemului de fișiere al sistemului gazdă atunci când se execută comanda „docker cp”. Extragerea fișierelor se realizează cu drepturi root, ceea ce face posibilă citirea sau scrierea oricăror fișiere în mediul gazdă, ceea ce este suficient pentru a obține controlul asupra sistemului gazdă (de exemplu, puteți suprascrie /etc/shadow).

Atacul poate fi efectuat numai atunci când administratorul execută comanda „docker cp” pentru a copia fișiere în sau din container. Astfel, atacatorul trebuie să convingă cumva administratorul Docker de necesitatea efectuării acestei operațiuni și să prezică calea folosită la copiere. Pe de altă parte, un atac poate fi efectuat, de exemplu, atunci când serviciile cloud oferă instrumente pentru copierea fișierelor de configurare într-un container, construit folosind comanda „docker cp”.

Problema este cauzată de un defect în aplicarea funcției UrmărițiSymlinkInScope, care calculează calea absolută în sistemul de fișiere principal pe baza căii relative, ținând cont de plasarea containerului. În timpul executării comenzii „docker cp”, un lucru pe termen scurt starea de cursă, în care calea a fost deja verificată, dar operația nu a fost încă efectuată. Deoarece copiarea se efectuează în contextul sistemului de fișiere principal al sistemului gazdă, într-o anumită perioadă de timp, puteți reuși să înlocuiți legătura cu o altă cale și să inițiați copierea datelor într-o locație arbitrară din sistemul de fișiere în afara recipient.

Întrucât fereastra de timp pentru care să apară o condiție de cursă este foarte limitată într-o pregătire exploatează prototipul La efectuarea operațiunilor de copiere dintr-un container, a fost posibil să se realizeze un atac cu succes în mai puțin de 1% din cazuri când se înlocuiește ciclic o legătură simbolică în calea utilizată în operația de copiere (atacul cu succes a fost efectuat după aproximativ 10 secunde de încercări pentru a copia continuu fișierul într-o buclă cu comanda „docker cp”).

Efectuând o operație de copiere într-un container, puteți realiza un atac repetabil de suprascriere a fișierelor asupra sistemului gazdă în doar câteva iterații. Posibilitatea atacului se datorează faptului că la copierea într-un container se folosește conceptul „chrootarchive”, conform căruia procesul archive.go extrage arhiva nu în chroot-ul rădăcinii containerului, ci în chroot-ul rădăcinii containerului. directorul părinte al căii țintă, controlat de atacator și nu oprește execuția containerului (chroot este folosit ca semn pentru a exploata condițiile de cursă).

Sursa: opennet.ru

Adauga un comentariu