Sårbarhed i systemd, der potentielt kan give dig mulighed for at eskalere dine privilegier

I systemd system manager identificeret sårbarhed (CVE-2020-1712), som potentielt giver dig mulighed for at udføre din kode med forhøjede privilegier ved at sende en specialdesignet anmodning over DBus-bussen. Problemet er løst i testversionen systemd 245-rc1 (patches der løser problemet: 1, 2, 3). Sårbarheden er blevet rettet i distributioner Ubuntu, Fedora, RHEL (vises i RHEL 8, men påvirker ikke RHEL 7), CentOS и SUSE/openSUSE, men i skrivende stund forbliver nyheden ukorrigeret i Debian и Arch Linux.

Sårbarheden er forårsaget af adgang til et allerede frigivet hukommelsesområde (use-after-free), som opstår, når anmodninger til Polkit eksekveres asynkront, mens DBus-meddelelser behandles. Nogle DBus-grænseflader bruger en cache til at gemme objekter i kort tid og tømme cache-posterne, så snart DBus-bussen er fri til at behandle andre anmodninger. Hvis en DBus-metodehåndtering bruger bus_verify_polkit_async(), skal den muligvis vente på, at Polkit-handlingen er fuldført. Efter Polkit er klar, kaldes handleren igen og får adgang til de data, der allerede er distribueret i hukommelsen. Hvis en anmodning til Polkit tager for lang tid, vil elementerne i cachen blive ryddet, før DBus-metodebehandleren kaldes en anden gang.

Blandt de tjenester, der tillader udnyttelse af sårbarheden, bemærkes systemd-machined, som giver DBus API org.freedesktop.machine1.Image.Clone, hvilket fører til midlertidig lagring af data i cachen og asynkron adgang til Polkit. Interface
org.freedesktop.machine1.Image.Clone er tilgængelig for alle uprivilegerede brugere af systemet, hvilket kan crashe systemd-tjenester eller potentielt forårsage, at kode bliver eksekveret som root (exploitprototypen er endnu ikke blevet demonstreret). Koden, der tillod udnyttelse af sårbarheden, var tilføjet i systemd-bearbejdet i 2015-version systemd 220 (RHEL 7.x bruger systemd 219).

Kilde: opennet.ru

Tilføj en kommentar