Vulnerabilitate în runc, care permite scăparea din containerele Docker și Kubernetes

În instrumentarul pentru lansarea containerelor izolate runc, folosit în Docker și Kubernetes, a fost găsită o vulnerabilitate CVE-2024-21626, care permite accesul la sistemul de fișiere al mediu gazdă dintr-un container izolat. În timpul atacului, un atacator poate suprascrie anumite fișiere executabile în mediul gazdă și astfel poate executa codul său în afara containerului. În runtime-urile crun și youki, care utilizează runc, precum și în LXC, problema nu apare. Vulnerabilitatea a fost remediată în versiunea runc 1.1.12.

În cazul utilizării instrumentelor Docker sau Kubernetes, atacul poate fi realizat prin pregătirea unei imagini de container special concepute, după instalarea și lansarea căreia din container se poate accesa FS extern. La utilizarea Docker, există posibilitatea exploatării printr-un Dockerfile elaborat special. Vulnerabilitatea poate fi, de asemenea, exploatată în cazul lansării proceselor în container folosind comanda „runc exec”, prin legarea directorului de lucru la spațiul de nume al mediului gazdă.

Vulnerabilitatea este cauzată de scurgerea descriptorilor de fișiere interni. Înainte de a rula codul în interiorul containerului, runc închide toți descriptorii de fișiere folosind flagul O_CLOEXEC. Cu toate acestea, după executarea ulterioară a funcției setcwd(), rămâne un descriptor de fișier deschis, care indică directorul de lucru și continuă să fie accesibil după lansarea containerului. Sunt propuse mai multe scenarii de bază de atac asupra mediului gazdă, folosind descriptorul de fișier rămas.

De exemplu, atacatorul poate specifica în imaginea containerului parametrul process.cwd, care indică „/proc/self/fd/7/”, ceea ce va conduce la legarea directorului de lucru pentru procesul pid1 în container, aflat în spațiul de montare al mediului gazdă. Astfel, în imaginea containerului se poate configura executarea „/proc/self/fd/7/../../../../bin/bash” și prin rularea unui script shell se poate suprascrie conținutul „/proc/self/exe”, care face referire la copia gazdei /bin/bash.

O altă variantă de atac permite unui atacator, restricționat în interiorul unui container, să acceseze catalogul mediului gazdă, dacă în containerul specificat rulează procese cu privilegii prin comanda „runc exec” cu opțiunea „—cwd”. Atacatorul poate substitui calea procesului care este lansat cu un link simbolic, indicând către „/proc/self/fd/7/” și poate obține acces la „/proc/$exec_pid/cwd” pentru a accesa FS-ul de pe gazdă. De asemenea, atacatorul poate reuși să suprascrie fișierele executabile din mediul gazdă, prin organizarea lansării unui fișier executabil din mediul gazdă („/proc/self/fd/7/../../../../bin/bash”) cu urmare a reîncărcării fișierului „/proc/$pid/exe”, care face referire la fișierul lansat.

În plus, în componentele instrumentelor Docker au fost identificate încă cinci vulnerabilități:

  • CVE-2024-23651 — o stare de competiție în pachetul BuildKit, folosit în Docker pentru a transforma codul sursă în artefacte de construire. Vulnerabilitatea este cauzată de utilizarea, în etapele de construire executate în paralel, a unei singure puncte de montare comune cu cache („—mount=type=cache,source=”), ceea ce permite, în timpul procesării unui Dockerfile pregătit special, accesul din containerul de construire la fișierele din mediul gazdă. Vulnerabilitatea a fost remediată în BuildKit 0.12.5.
  • CVE-2024-23652 — o eroare la ștergerea fișierelor goale create pentru punctul de montare atunci când se folosește opțiunea „—mount”, permite ștergerea unui fișier din afara containerului în timpul procesării unui Dockerfile pregătit special. Vulnerabilitatea a fost remediată în BuildKit 0.12.5.
  • CVE-2024-23653 — o eroare în implementarea API-ului în BuildKit permite obținerea execuției unui container cu privilegii ridicate, indiferent de starea configurării security.insecure. Vulnerabilitatea a fost remediată în BuildKit 0.12.5.
  • CVE-2024-23650 — un client sau frontend rău intenționat al BuildKit poate provoca o închidere neașteptată a procesului de fundal BuildKit. Vulnerabilitatea a fost remediată în BuildKit 0.12.5.
  • CVE-2024-24557 — posibilitatea de a contamina cache-ul în Moby, componenta pentru construirea sistemelor de izolare a containerelor specializate. În timpul procesării unei imagini de container preparate special, se poate obține plasarea în cache a unor date care pot fi folosite în etapele următoare de construire. Vulnerabilitatea a fost remediată în Moby 25.0.2 și 24.0.9.

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