Vulnerabilitatea sudo root care afectează Linux Mint și Elementary OS

În utilitate sudo, folosit pentru a organiza executarea comenzilor în numele altor utilizatori, identificat vulnerabilitate (CVE-2019-18634), care vă permite să vă măriți privilegiile în sistem către utilizatorul root. Problema apare doar de la lansarea sudo 1.7.1 când se folosește opțiunea „pwfeedback” din fișierul /etc/sudoers, care este dezactivată implicit, dar activată pe unele distribuții precum Linux Mint și Elementary OS. Problemă remediată în lansare sudo 1.8.31, publicat acum câteva ore. Vulnerabilitatea rămâne neremediată în kiturile de distribuție.

Opțiunea „pwfeedback” permite afișarea caracterului „*” după fiecare caracter introdus la introducerea unei parole. Din cauza Erori În implementarea funcției getln(), definită în fișierul tgetpass.c, un șir de parolă prea mare transmis prin fluxul de intrare standard (stdin) în anumite condiții poate să nu se potrivească în buffer-ul alocat și să suprascrie alte date din stivă. Depășirea are loc la rularea codului sudo ca root.

Esența problemei este că, atunci când se folosește caracterul special ^U (ștergerea liniei) în timpul introducerii și dacă operația de scriere eșuează, codul responsabil pentru ștergerea caracterelor „*” de ieșire resetează datele la dimensiunea bufferului disponibil, dar nu returnează indicatorul la poziția curentă a valorii inițiale din buffer. Un alt factor care contribuie la exploatare este lipsa dezactivării automate a modului „pwfeedback” atunci când datele sosesc nu de la terminal, ci prin fluxul de intrare (acest defect permite crearea condițiilor pentru ca o eroare de înregistrare să apară, de exemplu, pe sisteme cu unidirecțional canale fără nume apare o eroare atunci când încercați să scrieți la sfârșitul unui canal de citire).

Deoarece un atacator are control complet asupra suprascrierii datelor de pe stivă, nu este dificil să creeze un exploit care să-i permită să-și escaladeze privilegiile la root. Problema poate fi exploatată de orice utilizator, indiferent de permisiunile sudo sau setările specifice utilizatorului din sudoers. Pentru a bloca problema, ar trebui să vă asigurați că nu există nicio setare „pwfeedback” în /etc/sudoers și, dacă este necesar, să o dezactivați („Valori implicite !pwfeedback”). Pentru a verifica dacă există o problemă, puteți rula codul:

$ perl -e ‘print((„A” x 100 . „\x{00}”) x 50)’ | sudo -S id
Parola: Eroare de segmentare

Sursa: opennet.ru

Adauga un comentariu