Root-sårbarhed i sudo, der påvirker Linux Mint og Elementary OS

I værktøjet sudo, der anvendes til at organisere udførelse af kommandoer på vegne af andre brugere, opdaget sårbarhed (CVE-2019-18634), der muliggør opgradering af privilegier i systemet til root-bruger. Problemet opstår fra udgivelsen af sudo 1.7.1, kun ved brug af indstillingen «pwfeedback» i filen /etc/sudoers, som som standard er deaktiveret, men aktiveret i nogle distributioner som Linux Mint og Elementary OS. Problemet er løst i udgivelsen sudo 1.8.31, offentliggjort for få timer siden. I distributionerne er sårbarheden stadig ubehandlet.

Indstillingen «pwfeedback» aktiverer visningen af tegnet «*» efter hvert indtastet tegn, når man indtaster adgangskode. På grund af fejlen implementeringen af funktionen getln(), defineret i filen tgetpass.c, kan en for stor streng med adgangskoden, der sendes via standard input (stdin), under visse betingelser ikke passe ind i den tildelte buffer og overskrive andre data på stakken. Overskrivningen opstår under udførelsen af sudo-kode med root-rettigheder.

Problemet er, at når der anvendes specialtegn ^U (rensningslinje) under indtastning og ved en fejloprindelse, nulstiller koden, der er ansvarlig for at renses de viste tegn «*», de tilgængelige bufferstørrelsesdata, men returnerer ikke til den oprindelige værdi af pointeren til den nuværende position i bufferen. En anden faktor, der gør udnyttelse muligt, er fraværet af automatisk deaktivering af «pwfeedback»-tilstand, når data ikke kommer fra terminalen, men gennem indgangsstrømmen (denne mangel giver betingelser for at forårsage skrivefejl, f.eks. på systemer med ensrettede anonyme rør fejlen opstår ved forsøg på at skrive forbi enden af røret til læsning).

Da en angriber kan kontrollere overskrivning af data på stakken fuldstændigt, er det ikke vanskeligt at oprette et exploit, der muliggør opgradering af privilegier til root-bruger. Problemet kan udnyttes af enhver bruger, uanset rettigheder til at bruge sudo og specifikke brugerindstillinger i sudoers. For at blokere problemet skal man sikre sig, at der ikke er nogen indstilling for «pwfeedback» i /etc/sudoers, og deaktivere den hvis nødvendigt («Defaults !pwfeedback»). For at kontrollere, om problemet er til stede, kan følgende kode køres:

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

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster