O vulnerabilitate în Docker, care permite ieșirea din container

În instrumentele de gestionare a containerelor Linux izolate Docker a fost identificată vulnerabilitate (CVE-2018-15664), care, în anumite circumstanțe, permite accesul la mediu-hosta din container, în cazul în care se pot rula imagini proprii în sistem sau există acces la containerul executabil. Problema se manifestă în toate versiunile Docker și rămâne nerezolvată (provizii pentru un patch au fost oferite, dar nu au fost încă acceptate patch, care implementează suspendarea funcționării containerului în timpul operațiunilor cu sistemul de fișiere).

Vulnerabilitatea permite extragerea fișierelor din container într-o parte arbitrară a sistemului de fișiere al gazdelor, executând comanda „docker cp”. Extragerea fișierelor se face cu privilegii de root, ceea ce permite citirea sau scrierea oricăror fișiere în mediu-hosta, suficient pentru a obține controlul asupra sistemului gazdă (de exemplu, se poate rescrie /etc/shadow).

Atacul poate fi efectuat doar în momentul în care administratorul execută comanda „docker cp” pentru a copia fișiere în container sau din acesta. Astfel, atacatorul trebuie să convingă cumva administratorul Docker de necesitatea de a efectua această operație și să anticipeze calea utilizată în timpul copierii. Pe de altă parte, atacul poate fi efectuat, de exemplu, prin furnizarea de către serviciile cloud a unor metode de copiere a fișierelor de configurare în container, construite cu ajutorul comenzii „docker cp”.

Problema este cauzată de o lipse de implementare în utilizarea funcției FollowSymlinkInScope, care calculează calea absolută în sistemul de fișiere principal pe baza căii relative, având în vedere amplasarea containerului. În timpul executării comenzii „docker cp” apare o stare de condiție de cursă, în care calea este deja verificată, dar operația nu a fost încă executată. Deoarece copierea se face în contextul sistemului de fișiere principal al sistemului gazdă, în intervalul respectiv de timp se poate înlocui linkul cu o altă cale și iniția copia de date într-un loc arbitrar din sistemul de fișiere din afara containerului.

Întrucât fereastra temporară de apariție a stării de cursă este foarte limitată în prototipul pregătit expoitului În timpul operațiunilor de copiere din container, s-a reușit realizarea unei atacuri de succes în mai puțin de 1% din cazuri prin înlocuirea ciclică a legăturii simbolice din calea utilizată în operațiunea de copiere (atacul a fost realizat după aproximativ 10 secunde de încercări continue de a copia un fișier cu comanda „docker cp”).

În timpul operațiunii de copiere în container, se poate realiza un atac repetabil prin suprascrierea fișierului în sistemul gazdă după câteva iterații. Posibilitatea atacului este legată de faptul că, la copierea în container, se aplică conceptul „chrootarchive”, conform căruia procesul archive.go extrage arhiva nu în chroot-ul rădăcinii containerului, ci în chroot-ul directorului părinte al căii destinate, controlată de atacator și nu oprește în același timp executarea containerului (chroot-ul este folosit ca semn pentru exploatarea stării de cursă).

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster