În utilitarul , utilizat pentru a organiza executarea comenzilor în numele altor utilizatori, (), care permite executarea de comenzi cu privilegii de root, în cazul în care în configurația sudoers există reguli în care, în secțiunea de verificare a identificatorului utilizatorului, după cuvântul cheie de permisie „ALL”, există o interdicție explicită de a rula ca root („... (ALL, !root) ...”). În configurațiile standard în distribuțiile vulnerabilitatea nu se manifestă.
În cazul în care în sudoers există reguli permise, dar extrem de rar întâlnite în practică, care permit executarea unei anumite comenzi sub UID-ul oricărui utilizator, cu excepția root, un atacator, care are autoritatea de a executa această comandă, poate ocoli restricția stabilită și poate executa comanda cu privilegii de root. Pentru a trece peste restricție, este suficient să încerce să execute comanda specificată în configurări cu UID „-1” sau „4294967295”, ceea ce va duce la executarea acesteia cu UID 0.
De exemplu, dacă în configurare există o regulă care oferă oricărui utilizator dreptul de a executa programul /usr/bin/id sub orice UID:
myhost ALL = (ALL, !root) /usr/bin/id
sau o variantă care permite executarea doar de către un anumit utilizator bob:
myhost bob = (ALL, !root) /usr/bin/id
Utilizatorul poate executa „sudo -u ‘#-1’ id” și utilitarul /usr/bin/id va fi lansat cu privilegii de root, în ciuda interdicției explicite din configurări. Problema este cauzată de o neatenție față de valorile speciale „-1” sau „4294967295”, care nu conduc la schimbarea UID-ului, dar deoarece sudo este deja executat ca root, fără schimbarea UID-ului, comanda țintă este, de asemenea, lansată cu privilegii de root.
În distribuțiile SUSE și openSUSE, fără a specifica în regulă „NOPASSWD” vulnerabilitatea , deoarece în sudoers, în mod implicit, este activat modul „Defaults targetpw”, în care se efectuează verificarea UID în baza de date a parolelor, cu afișarea unui prompt de introducere a parolei utilizatorului țintă. Pentru astfel de sisteme, atacul poate fi realizat doar în prezența regulilor de tip:
myhost ALL = (ALL, !root) NOPASSWD: /usr/bin/id
Problema a fost remediată în versiunea . Corecția este, de asemenea, disponibilă sub formă . În distribuțiile vulnerabilitatea a fost deja rezolvată în , , , , și . La momentul redactării acestei știri, problema rămâne nerezolvată în și . Vulnerabilitatea a fost identificată de cercetătorii în securitate de la compania Apple.
Sursa: opennet.ro
