I værktøjet
"pwfeedback"-indstillingen muliggør visning af "*"-tegnet efter hvert indtastet tegn, når der indtastes en adgangskode. På grund af
Essensen af problemet er, at når du bruger specialtegnet ^U (line clearing) under input, og hvis skriveoperationen mislykkes, nulstiller koden, der er ansvarlig for at rydde output "*" tegnene, dataene på den tilgængelige bufferstørrelse, men ikke returner markøren til startværdiens nuværende position i bufferen. En anden faktor, der bidrager til udnyttelsen, er manglen på automatisk deaktivering af "pwfeedback"-tilstanden, når data ikke kommer fra terminalen, men gennem inputstrømmen (denne fejl gør det muligt at skabe betingelser for, at en registreringsfejl kan opstå, for eksempel på systemer med ensrettet
Da en angriber har fuldstændig kontrol over dataoverskrivning på stakken, er det ikke svært at skabe en udnyttelse, der giver ham mulighed for at eskalere sine privilegier til root. Problemet kan udnyttes af enhver bruger, uanset sudo-tilladelser eller brugerspecifikke indstillinger i sudoers. For at blokere problemet, skal du sørge for, at der ikke er nogen "pwfeedback"-indstilling i /etc/sudoers, og om nødvendigt deaktivere den ("Standard !pwfeedback"). For at kontrollere, om der er et problem, kan du køre koden:
$ perl -e ‘print((“A” x 100 . “\x{00}”) x 50)’ | sudo -S id
Adgangskode: Segmenteringsfejl
Kilde: opennet.ru