sudo root ranjivost koja utiče na Linux Mint i Elementary OS

U uslužnom sudo, koji se koristi za organizaciju izvršavanja naredbi u ime drugih korisnika, identifikovan ranjivost (CVE-2019-18634), što vam omogućava da povećate svoje privilegije u sistemu na root korisnika. Problem se pojavljuje tek od izdanja sudo 1.7.1 kada se koristi opcija “pwfeedback” u datoteci /etc/sudoers, koja je po defaultu onemogućena, ali omogućena na nekim distribucijama kao što su Linux Mint i Elementary OS. Problem je riješen u izdanju sudo 1.8.31, objavljen prije nekoliko sati. Ranjivost ostaje neispravljena u distributivnim kompletima.

Opcija “pwfeedback” omogućava prikaz znaka “*” nakon svakog unesenog znaka prilikom unosa lozinke. Zbog greške U implementaciji getln() funkcije, definirane u datoteci tgetpass.c, prevelik niz lozinke proslijeđen preko standardnog ulaznog toka (stdin) pod određenim uvjetima možda neće stati u dodijeljeni bafer i prepisati druge podatke na steku. Prelivanje se događa kada se sudo kod izvodi kao root.

Suština problema je u tome što kada se koristi specijalni znak ^U (brisanje reda) tokom unosa i ako operacija pisanja ne uspije, kod odgovoran za brisanje izlaznih znakova “*” resetuje podatke o dostupnoj veličini bafera, ali ne vrati pokazivač na početnu vrijednost trenutnu poziciju u baferu. Drugi faktor koji doprinosi eksploataciji je nedostatak automatskog onemogućavanja „pwfeedback“ moda kada podaci ne stižu sa terminala, već putem ulaznog toka (ova mana omogućava stvaranje uslova za pojavu greške u snimanju, na primjer, na sistemima sa jednosmjerno neimenovani kanali dolazi do greške pri pokušaju pisanja do kraja kanala za čitanje).

Budući da napadač ima potpunu kontrolu nad prepisivanjem podataka na steku, nije teško napraviti eksploataciju koja mu omogućava da eskalira svoje privilegije na root. Problem može iskoristiti bilo koji korisnik, bez obzira na sudo dozvole ili korisničke postavke u sudoerima. Da biste blokirali problem, treba da se uverite da nema postavke „pwfeedback“ u /etc/sudoers i, ako je potrebno, onemogućite je („Podrazumevane postavke !pwfeedback“). Da biste provjerili postoji li problem, možete pokrenuti kod:

$ perl -e 'print(("A" x 100 . "\x{00}") x 50)' | sudo -S id
Lozinka: Greška segmentacije

izvor: opennet.ru

Dodajte komentar