Vulnerabilitat a Docker que permet escapar del contenidor

A Toolkit per a la gestió de contenidors Docker Linux aïllats identificat vulnerabilitat (CVE-2018-15664), que, sota un conjunt determinat de circumstàncies, us permet accedir a l'entorn amfitrió des d'un contenidor si teniu la possibilitat de llançar les vostres imatges al sistema o amb accés a un contenidor en execució. El problema apareix a totes les versions de Docker i no s'ha solucionat (proposat, però encara no acceptat, pegat, que implementa la suspensió del contenidor mentre es realitza operacions amb l'FS).

La vulnerabilitat permet extreure fitxers d'un contenidor a una part arbitrària del sistema de fitxers del sistema amfitrió quan s'executa l'ordre "docker cp". L'extracció de fitxers es realitza amb drets d'arrel, la qual cosa permet llegir o escriure qualsevol fitxer a l'entorn amfitrió, la qual cosa és suficient per obtenir el control del sistema amfitrió (per exemple, podeu sobreescriure /etc/shadow).

L'atac només es pot dur a terme quan l'administrador executa l'ordre "docker cp" per copiar fitxers cap o des del contenidor. Per tant, l'atacant ha de convèncer d'alguna manera l'administrador de Docker de la necessitat de realitzar aquesta operació i predir el camí utilitzat en copiar. D'altra banda, es pot dur a terme un atac, per exemple, quan els serveis al núvol proporcionen eines per copiar fitxers de configuració en un contenidor, creat mitjançant l'ordre "docker cp".

El problema és causat per un error en l'aplicació de la funció FollowSymlinkInScope, que calcula el camí absolut al sistema de fitxers principal en funció del camí relatiu, tenint en compte la ubicació del contenidor. Mentre s'executa l'ordre "docker cp", una ordre a curt termini condició de carrera, en què ja s'ha verificat el camí, però encara no s'ha fet l'operació. Com que la còpia es realitza en el context del sistema de fitxers principal del sistema amfitrió, en un període de temps especificat, podeu aconseguir substituir l'enllaç per un altre camí i iniciar la còpia de dades a una ubicació arbitrària del sistema de fitxers fora del contenidor.

Atès que la finestra de temps per a que es produeixi una condició de carrera és molt limitada en un preparat explotar el prototip Quan es realitzaven operacions de còpia des d'un contenidor, era possible aconseguir un atac amb èxit en menys de l'1% dels casos en substituir cíclicament un enllaç simbòlic en el camí utilitzat en l'operació de còpia (l'atac amb èxit es va dur a terme després d'uns 10 segons d'intents). per copiar contínuament el fitxer en bucle amb l'ordre "docker cp").

En realitzar una operació de còpia en un contenidor, podeu aconseguir un atac de sobreescritura de fitxers repetible al sistema amfitrió en poques iteracions. La possibilitat d'atac es deu al fet que quan es copia en un contenidor, s'utilitza el concepte "chrootarchive", segons el qual el procés archive.go extreu l'arxiu no al chroot de l'arrel del contenidor, sinó al chroot del directori pare de la ruta de destinació, controlat per l'atacant, i no atura l'execució del contenidor (chroot s'utilitza com a senyal per explotar les condicions de carrera).

Font: opennet.ru

Afegeix comentari