En sikkerhetsforsker av GitHub gjort det kjent nylig du har identifisert en sårbarhet (CVE-2020-16125) i GNOME Display Manager (GDM), som er ansvarlig for å vise påloggingsskjermen.
Kombinert med en annen sårbarhet i kontosporingstjenesten (accounts-daemon), problemet lar koden kjøre som root. Sårbarheten er knyttet til feil start av det opprinnelige konfigurasjonsverktøyet hvis det er umulig å få tilgang til kontodemon-tjenesten via DBus.
Om sårbarhet
En uprivilegert bruker kan krasje prosessen med kontodemon eller legg på, hva som vil skape forholdene for at gnome-initial-setup-verktøyet skal kjøres fra GDM, gjennom hvilket en ny bruker kan registrere seg som medlem av sudo-gruppen, det vil si ha muligheten til å kjøre programmer som root.
normalt, GDM kaller gnome-initial-setup for å angi den første brukeren hvis det ikke er noen kontoer i systemet. Bekreftelse av eksistensen av kontoer gjøres ved å kontakte accounts-daemon. Hvis den angitte prosessen mislykkes, antar GDM at kontoene mangler og starter den første konfigurasjonsprosessen.
Forskeren identifiserte to måter å forstyrre daemon-kontoprosessen på- Den første (CVE-2020-16126) skyldes feil tilbakestilling av privilegier og den andre (CVE-2020-16127) feil mens du behandler en ".pam_environment" -fil.
Videre en annen sårbarhet ble funnet i daemon-kontoer (CVE-2018-14036) forårsaket av feil filsti-kontroller og slik at innholdet i vilkårlige filer kan leses på systemet.
Sårbarhetene i accounts-daemon er forårsaket av endringer gjort av Ubuntu-utviklere og vises ikke i hovedkonton-daemon-koden i FreeDesktop-prosjektet og Debian-pakken.
CVE-2020-16127-problemet er til stede i en oppdatering lagt til i Ubuntu som implementerer is_in_pam_environment-funksjonen, som leser innholdet i .pam_environment-filen fra brukerens hjemmekatalog. Hvis du setter en symbolsk kobling til / dev / zero i stedet for denne filen, henger konto-daemon-prosessen på uendelig leseoperasjoner og slutter å svare på forespørsler via DBus.
Det er uvanlig at et sårbarhet i et moderne operativsystem er så enkelt å utnytte. Ved noen anledninger har jeg skrevet tusenvis av kodelinjer for å utnytte en sårbarhet.
De fleste moderne utnyttelser involverer kompliserte triks, for eksempel å bruke et minnekorrupsjonssårbarhet for å forfalske falske gjenstander i dyngen, eller erstatte en fil med en symlink til mikrosekundens presisjon for å utnytte et TOCTOU-sårbarhet.
Så i disse dager er det relativt sjelden å finne et sårbarhet som ikke krever kodingsferdigheter for å utnytte. Jeg tror også sårbarheten er lett å forstå, selv om du ikke har noen forkunnskaper om hvordan Ubuntu fungerer eller har erfaring med sikkerhetsforskning.
CVE-2020-16126 sårbarhet er forårsaket av en annen oppdatering som tilbakestiller den nåværende brukerens rettigheter under behandling av noen DBus-anrop (for eksempel org.freedesktop.Accounts.User.SetLanguage).
Konto-demonprosessen kjører normalt som root, noe som forhindrer en normal bruker i å sende signaler.
Men takket være den oppdaterte oppdateringen, prosessrettigheter kan tilbakestilles og brukeren kan avslutte denne prosessen ved å sende et signal. For å utføre et angrep, opprett bare betingelsene for å fjerne privilegier (RUID) og send et SIGSEGV- eller SIGSTOP-signal til kontodemonen.
Brukeren avslutter den grafiske økten og går til tekstkonsollen (Ctrl-Alt-F1).
Etter at den grafiske økten er avsluttet, prøver GDM å vise påloggingsskjermen, men henger når du prøver å få svar fra konto-demonen.
SIGSEGV- og SIGCONT-signalene sendes fra konsollen til kontodemon-prosessen og får den til å henge.
Du kan også sende signaler før du avslutter den grafiske økten, men du må gjøre det med forsinkelse for å få tid til å fullføre økten, og før signalet sendes, hadde GDM tid til å starte.
Forespørselen til regnskapsdemonen i GDM mislykkes, og GDM kaller verktøyet gnome-initial-setup, hvis grensesnitt det er tilstrekkelig til å opprette en ny konto.
Sårbarheten er løst i GNOME 3.36.2 og 3.38.2. Utnyttelse av sårbarheten er bekreftet i Ubuntu og dets derivater.
Fuente: https://securitylab.github.com