I systemmanager systemd sårbarhed (), som potentielt tillader eksekvering af brugerens kode med forhøjede privilegier gennem afsendelse af en specielt formateret anmodning via DBus-bussen. Problemet er blevet rettet i testudgaven (rettende patches: , , ). Sårbarheden er blevet elimineret i distributionerne , , (forekommer i RHEL 8, men påvirker ikke RHEL 7), , og , men på tidspunktet for nyhedens skrivefase er den stadig udbedret i og .
Sårbarheden skyldes adgang til et allerede frigivet hukommelsesområde (use-after-free), som opstår under asynkron udførelse af anmodninger til Polkit under behandling af DBus-beskeder. Nogle DBus-grænseflader bruger cache til kortvarig opbevaring af objekter og rydder cache-elementer, så snart DBus-bussen er frigivet til behandling af andre anmodninger. Hvis en DBus-metodehandler bruger bus_verify_polkit_async(), skal den muligvis vente på, at handlingen i Polkit er færdig. Når Polkit er klar, bliver handleren kaldt igen og forsøger at tilgå tidligere tildelte hukommelsesdata. Hvis anmodningen til Polkit tager for lang tid, kan cache-elementer blive ryddet, før DBus-metodehandleren kaldes anden gang.
Blandt de services, der muliggør udnyttelse af sårbarheden, bemærkes systemd-machined, som tilbyder DBus API org.freedesktop.machine1.Image.Clone, hvilket fører til midlertidig lagring af data i cachen og asynkron adgang til Polkit. Grænsefladen
org.freedesktop.machine1.Image.Clone er tilgængelig for alle ikke-privilegerede brugere af systemet, som kan initiere nedbrud af systemd-services eller potentielt opnå kørsel af kode med root-rettigheder (prototype af exploit er endnu ikke demonstreret). Koden til at udnytte sårbarheden blev i systemd-machined i 2015 i version (i RHEL 7.x bruges systemd 219).
Kilde: opennet.ru
