Në menaxherin e sistemit systemd një vulnerabilitet (), e cila potencialisht lejon ekzekutimin e kodit me privilegje të rritura përmes dërgimit të një kërkese të formatuar posaçërisht në bus DBus. Problemi është rregulluar në versionin testues (patch-et që zgjidhin problemin: , , ). Vulnerabiliteti është eliminuar në distribucione , , (shfaqet në RHEL 8, por nuk prek RHEL 7), , dhe , por në momentin e shkruhjes së lajmit mbetet e pa rregulluar në dhe .
Vulnerabiliteti shkaktohet nga qasja në një zonë memorjeje të liruar tashmë (use-after-free), e cila ndodh gjatë ekzekutimit asinkron të kërkesave ndaj Polkit gjatë përpunimit të mesazheve DBus. Disa ndërfaqe DBus përdorin cache për ruajtjen e objekteve për një kohë të shkurtër dhe pastron elementet nga cache sapo bus DBus lirohet për të përpunuar kërkesa të tjera. Nëse menaxhuesi i metodës DBus përdor bus_verify_polkit_async(), ndoshta do t'i duhet të presë përfundimin e veprimit në Polkit. Pas gatishmërisë së Polkit, menaxhuesi thirret përsëri dhe qaset në të dhënat e alokuara më parë në memorje. Nëse kërkesa ndaj Polkit zgjat shumë, atëherë elementet në cache do të pastrohen para se menaxhuesi i metodës DBus të thirret për herë të dytë.
Nga shërbimet që mund të shfrytëzojnë vulnerabilitetin, theksohet systemd-machined, i cili ofron API DBus org.freedesktop.machine1.Image.Clone, që çon në ruajtjen e përkohshme të të dhënave në cache dhe qasjen asinkrone ndaj Polkit. Ndërfaqja
org.freedesktop.machine1.Image.Clone është e aksesueshme nga të gjithë përdoruesit e pandërprerë të sistemit, të cilët mund të nisin dështimin e shërbimeve systemd ose potencialisht të arrijnë ekzekutimin e kodit me të drejtat e root (prototipi i shfrytëzuesit ende nuk është demonstruar). Kodi që lejon shfrytëzimin e vulnerabilitetit ishte në systemd-machined në vitin 2015 në versionin (në RHEL 7.x përdoret systemd 219).
Burimi: opennet.ru
