Raziskovalec varnosti avtor GitHub dal vedeti pred kratkim ste ugotovili ranljivost (CVE-2020-16125) v upravitelju zaslona GNOME (GDM), ki je odgovoren za prikaz prijavnega zaslona.
V kombinaciji z drugo ranljivostjo v storitvi za sledenje računov (accounts-daemon), težava omogoča, da se koda zažene kot root. Ranljivost je povezana z nepravilnim zagonom pripomočka za začetno konfiguracijo, če prek DBusa ni mogoče dostopati do storitve demona računa.
O ranljivosti
Neprivilegirani uporabnik lahko zruši postopek daemon accounts ali odložite, kaj bo ustvarilo pogoje za zagon pripomočka gnome-Initial-setup iz GDM, prek katerega se lahko nov uporabnik registrira kot član skupine sudo, to pomeni, da lahko zažene programe kot root.
Običajno GDM pokliče gnome-Initial-setup, da nastavi prvega uporabnika če v sistemu ni računov. Obstoj računov se preveri s kontaktiranjem računa-daemon. Če navedeni postopek ne uspe, GDM domneva, da računi manjkajo in zažene postopek začetne konfiguracije.
Raziskovalec je ugotovil dva načina za prekinitev procesa demonskih računov- Prva (CVE-2020-16126) je posledica napačne ponastavitve privilegijev in druga (CVE-2020-16127) napaka med obdelavo datoteke ".pam_environment".
Poleg tega, še ena ranljivost je bila najdena v računih daemon (CVE-2018-14036) posledica napačnih preverjanj poti datotek in omogočanja branja vsebine poljubnih datotek v sistemu.
Ranljivosti v računu-daemon povzročajo spremembe, ki so jih naredili razvijalci Ubuntuja in niso prikazane v glavni kodi-demon demo kode projekta FreeDesktop in paketa Debian.
Težava CVE-2020-16127 je prisotna v popravku, dodanem v Ubuntuju, ki izvaja funkcijo is_in_pam_environment, ki bere vsebino datoteke .pam_environment iz uporabnikovega domačega imenika. Če namesto te datoteke postavite simbolično povezavo do / dev / zero, postopek demona računa visi pri neskončnih operacijah branja in se preneha odzivati na zahteve prek DBus.
Nenavadno je, da je ranljivost v sodobnem operacijskem sistemu tako enostavno izkoristiti. Včasih sem napisal na tisoče vrstic kode, da bi izkoristil ranljivost.
Večina sodobnih izkoriščanj vključuje zapletene trike, kot je uporaba ranljivosti zaradi poškodbe pomnilnika za ponarejanje ponarejenih predmetov na kopici ali zamenjava datoteke s simbolično povezavo do mikrosekunde natančnosti za izkoriščanje ranljivosti TOCTOU
Tako dandanes razmeroma redko najdemo ranljivost, ki za uporabo ne zahteva spretnosti kodiranja. Menim tudi, da je ranljivost enostavno razumeti, tudi če nimate predznanja o delovanju Ubuntuja ali izkušenj z varnostnimi raziskavami.
Ranljivost CVE-2020-16126 povzroča drug popravek ki ponastavi trenutne uporabniške privilegije med obdelavo nekaterih klicev DBus (na primer org.freedesktop.Accounts.User.SetLanguage).
Proces demona računa se običajno izvaja kot root, kar običajnemu uporabniku preprečuje pošiljanje signalov.
Toda zahvaljujoč dodanemu popravku, privilegije procesa lahko ponastavite in uporabnik lahko ta postopek konča s pošiljanjem signala. Če želite izvesti napad, preprosto ustvarite pogoje za odstranitev pravic (RUID) in pošljite signal SIGSEGV ali SIGSTOP v postopek demona računa.
Uporabnik konča grafično sejo in gre na besedilno konzolo (Ctrl-Alt-F1).
Ko se grafična seja konča, GDM poskuša prikazati zaslon za prijavo, vendar visi, ko poskuša dobiti odgovor iz računa-daemon.
Signala SIGSEGV in SIGCONT se pošljeta iz konzole v proces demona računa, zaradi česar visi.
Signale lahko pošljete tudi pred izhodom iz grafične seje, vendar morate to storiti z zamikom, da boste imeli čas, da zaključite sejo in preden je signal poslan, je imel GDM čas za zagon.
Zahteva demonu računov v GDM ne uspe in GDM pokliče pripomoček gnome-Initial-Setup, v vmesniku katerega je dovolj, da ustvarite nov račun.
Ranljivost je odpravljena v GNOME 3.36.2 in 3.38.2. Izkoriščanje ranljivosti je bilo potrjeno v Ubuntuju in njegovih izvedenkah.
vir: https://securitylab.github.com