Sårbarhet i systemd som potensielt kan tillate deg å eskalere privilegiene dine

I systemd system manager identifisert sårbarhet (CVE-2020-1712), som potensielt lar deg kjøre koden din med forhøyede rettigheter ved å sende en spesialdesignet forespørsel over DBus-bussen. Problemet er løst i testversjonen systemd 245-rc1 (patcher som løser problemet: 1, 2, 3). Sårbarheten er fikset i distribusjoner Ubuntu, Fedora, RHEL (vises i RHEL 8, men påvirker ikke RHEL 7), CentOS и SUSE / openSUSE, men i skrivende stund forblir nyheten ukorrigert i Debian и Arch Linux.

Sårbarheten er forårsaket av tilgang til et allerede frigjort minneområde (bruk-etter-fri), som oppstår når man asynkront utfører forespørsler til Polkit mens DBus-meldinger behandles. Noen DBus-grensesnitt bruker en hurtigbuffer for å lagre objekter i kort tid og tømme hurtigbufferoppføringene så snart DBus-bussen er ledig til å behandle andre forespørsler. Hvis en DBus-metodebehandler bruker bus_verify_polkit_async(), må den kanskje vente på at Polkit-handlingen skal fullføres. Etter at Polkit er klar, kalles behandleren opp igjen og får tilgang til dataene som allerede er distribuert i minnet. Hvis en forespørsel til Polkit tar for lang tid, vil elementene i hurtigbufferen bli tømt før DBus-metodebehandleren kalles opp en gang til.

Blant tjenestene som tillater utnyttelse av sårbarheten, er systemd-machined notert, som gir DBus API org.freedesktop.machine1.Image.Clone, noe som fører til midlertidig lagring av data i hurtigbufferen og asynkron tilgang til Polkit. Grensesnitt
org.freedesktop.machine1.Image.Clone er tilgjengelig for alle uprivilegerte brukere av systemet, som kan krasje systemd-tjenester eller potensielt føre til at kode kjøres som root (utnyttelsesprototypen er ennå ikke demonstrert). Koden som tillot utnyttelse av sårbarheten var la til i systembearbeidet i 2015-versjon systemd 220 (RHEL 7.x bruker systemd 219).

Kilde: opennet.ru

Legg til en kommentar