Vulnerabilitatea rădăcină locală în setul de instrumente de gestionare a pachetelor Snap

Qualys a identificat două vulnerabilități (CVE-2021-44731, CVE-2021-44730) în utilitarul snap-confine, care este livrat cu flag-ul root SUID și este apelat de procesul snapd pentru a crea un mediu executabil pentru aplicațiile livrate în pachete snap autonome. Vulnerabilitățile permit unui utilizator local, neprivilegiat, să execute cod cu privilegii de root pe sistem. Problemele sunt remediate în actualizarea de astăzi a pachetului snapd pentru Ubuntu 21.10, 20.04 și 18.04.

Prima vulnerabilitate (CVE-2021-44730) permite un atac prin manipulare hard link, dar necesită dezactivarea protecției hard link a sistemului (setarea sysctl fs.protected_hardlinks la 0). Problema este cauzată de verificarea incorectă a locației fișierelor executabile ale programelor de ajutor snap-update-ns și snap-discard-ns rulate ca root. Calea către aceste fișiere a fost calculată în funcția sc_open_snapd_tool() pe baza propriei căi de la /proc/self/exe, care vă permite să creați o legătură rigidă pentru a snap-confine în directorul dvs. și să plasați propriile versiuni ale snap- update-ns și snap- utilitare din acest director discard-ns. După ce rulează printr-o legătură hard, snap-confine cu drepturi root va lansa fișierele snap-update-ns și snap-discard-ns din directorul curent, înlocuite de atacator.

A doua vulnerabilitate este cauzată de o condiție de concurență și poate fi exploatată în configurație Ubuntu Desktop în mod implicit. Pentru ca exploatarea să funcționeze cu succes în Ubuntu Serverul necesită o opțiune la instalarea unuia dintre pachetele din secțiunea „Snap-uri recomandate pentru server”. O condiție de concurență apare în funcția setup_private_mount(), care este apelată la pregătirea spațiului de nume al punctului de montare pentru un pachet snap. Această funcție creează un director temporar „/tmp/snap.$SNAP_NAME/tmp” sau folosește unul existent pentru a lega directoarele de montare pentru pachetul snap.

Deoarece numele directorului temporar este previzibil, un atacator își poate înlocui conținutul cu o legătură simbolică după verificarea proprietarului, dar înainte de a apela apelul de sistem de montare. De exemplu, puteți crea un link simbolic „/tmp/snap.lxd/tmp” în directorul /tmp/snap.lxd care indică către un director arbitrar, iar un apel la mount() va urma linkul simbolic și va monta directorul în snap namespace. Într-un mod similar, vă puteți monta conținutul în /var/lib și, prin înlocuirea /var/lib/snapd/mount/snap.snap-store.user-fstab, organizați montarea directorului dvs. /etc în spațiul de nume al pachetul snap pentru a organiza încărcarea bibliotecii dvs. cu drepturi root prin înlocuirea /etc/ld.so.preload.

Se observă că crearea unui exploit s-a dovedit a fi o sarcină non-trivială, deoarece utilitarul snap-confine este scris în Go folosind tehnici de programare securizate, are protecție bazată pe profiluri AppArmor, filtrează apelurile de sistem pe baza mecanismului seccomp și utilizează spațiul de nume de montare pentru izolare. Cu toate acestea, cercetătorii au reușit să pregătească un exploit de lucru pentru a obține drepturi de root asupra sistemului. Codul de exploatare va fi publicat în câteva săptămâni după ce utilizatorii instalează actualizările furnizate.

Sursa: opennet.ru

Cumpărați găzduire de încredere pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără găzduire web fiabilă cu protecție DDoS, servere VPS VDS | ProHoster