Root-sårbarhet i sudo, som påverkar Linux Mint och Elementary OS

I verktyget sudo, som används för att organisera utförande av kommandon å andra användares vägnar, upptäcktes sårbarhet (CVE-2019-18634), vilket gör att användare kan höja sina privilegier i systemet till root-användare. Problemet uppstår från version 1.7.1 av sudo endast när alternativet «pwfeedback» används i filen /etc/sudoers, vilket är inaktiverat som standard men aktiverat i vissa distributioner, såsom Linux Mint och Elementary OS. Problemet är åtgärdat i versionen sudo 1.8.31, som publicerades för några timmar sedan. På distributionerna kvarstår sårbarheten fortfarande ofixad.

Alternativet «pwfeedback» inkluderar att visa tecknet «*» efter varje inmatat tecken vid inmatning av lösenord. På grund av fel implementeringen av funktionen getln(), definierad i filen tgetpass.c, kan en för stor sträng med lösenord som matas in via standardindata (stdin) under vissa förhållanden inte få plats i den allokerade bufferten och skriva över andra data i stacken. Överflödet uppstår under utförandet av sudo-kod med root-rättigheter.

Kärnan i problemet är att när en speciell tecken ^U (rensa raden) används under inmatning och skrivoperationen misslyckas, nollställer koden som ansvarar för att rensa de utmatade tecknen «*» informationen om den tillgängliga buffertstorleken, men återställer inte pekaren på den aktuella positionen i bufferten till sitt ursprungliga värde. En annan bidragande faktor till utnyttjandet är avsaknaden av automatisk avstängning av alternativet «pwfeedback» när data tas emot inte från terminalen utan via indataflödet (denna brist möjliggör förhållanden för skrivfel, till exempel på system med enkelriktade namnlösa kanaler felet inträffar vid försök att skriva förbi slutet av kanalen för läsning).

Eftersom angriparen kan ha full kontroll över överlappningen av data i stacken är det inte svårt att skapa ett exploit för att höja sina privilegier till root-användare. Problemet kan utnyttjas av vilken användare som helst, oavsett rättigheter för att använda sudo och förekomsten av användarspecifika inställningar i sudoers. För att blockera problemet bör man säkerställa att det inte finns något i /etc/sudoers för att aktivera «pwfeedback» och inaktivera det om nödvändigt («Defaults !pwfeedback»). För att kontrollera förekomsten av problemet kan följande kod köras:

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

Källa: opennet.ru

Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar 🔥 Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster