sudo root sårbarhet som påverkar Linux Mint och Elementary OS

I verktyget sudo, används för att organisera exekveringen av kommandon på uppdrag av andra användare, identifieras sårbarhet (CVE-2019-18634), vilket låter dig öka dina privilegier i systemet till rotanvändaren. Problemet dyker bara upp sedan sudo 1.7.1 släpptes när du använder alternativet "pwfeedback" i filen /etc/sudoers, som är inaktiverat som standard men aktiverat på vissa distributioner som Linux Mint och Elementary OS. Problem fixat i release sudo 1.8.31, publicerad för några timmar sedan. Sårbarheten förblir ofixad i distributionspaket.

Alternativet "pwfeedback" möjliggör visning av tecknet "*" efter varje inmatat tecken när du anger ett lösenord. Därför att Fel Vid implementeringen av getln()-funktionen, definierad i tgetpass.c-filen, kan en för stor lösenordssträng som skickas via standardinmatningsströmmen (stdin) under vissa förhållanden inte passa in i den tilldelade bufferten och skriva över annan data i stacken. Överflödet inträffar när du kör sudo-kod som root.

Kärnan i problemet är att när man använder specialtecknet ^U (radrensning) under inmatning och om skrivoperationen misslyckas, återställer koden som är ansvarig för att rensa utdatatecknen "*" data på den tillgängliga buffertstorleken, men inte returnera pekaren till det initiala värdet aktuell position i bufferten. En annan faktor som bidrar till exploateringen är avsaknaden av automatisk inaktivering av "pwfeedback"-läget när data inte kommer från terminalen utan via ingångsströmmen (denna brist gör det möjligt att skapa förutsättningar för ett inspelningsfel att uppstå, till exempel på system med enkelriktad namnlösa kanaler ett fel uppstår när man försöker skriva till slutet av en läskanal).

Eftersom en angripare har fullständig kontroll över dataöverskrivning på stacken är det inte svårt att skapa en exploatering som gör att han kan eskalera sina privilegier till root. Problemet kan utnyttjas av alla användare, oavsett sudo-behörigheter eller användarspecifika inställningar i sudoers. För att blockera problemet bör du se till att det inte finns någon "pwfeedback"-inställning i /etc/sudoers och, om nödvändigt, inaktivera den ("Defaults !pwfeedback"). För att kontrollera om det finns ett problem kan du köra koden:

$ perl -e 'print(("A" x 100 . "\x{00}") x 50)' | sudo -S id
Lösenord: Segmenteringsfel

Källa: opennet.ru

Lägg en kommentar