I verktyget
Alternativet "pwfeedback" möjliggör visning av tecknet "*" efter varje inmatat tecken när du anger ett lösenord. Därför att
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
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