잠재적으로 권한 상승을 허용할 수 있는 systemd의 취약성

systemd 시스템 관리자에서 확인됨 취약점(CVE-2020-1712), 이를 통해 DBus 버스를 통해 특별히 설계된 요청을 전송하여 높은 권한으로 코드를 실행할 수 있습니다. 테스트 릴리스에서 문제가 해결되었습니다. 시스템 245-rc1 (문제를 해결하는 패치: 1, 2, 3). 배포판에서 취약점이 수정되었습니다. Ubuntu, 페도라, RHEL (RHEL 8에 표시되지만 RHEL 7에는 영향을 미치지 않음) CentOS에 и 수세/오픈수세, 그러나 이 글을 쓰는 시점에는 뉴스가 수정되지 않은 상태로 남아 있습니다. 데비안 и 아치 리눅스.

Уязвимость вызвана обращением к уже освобождённой области памяти (use-after-free), возникающем при асинхронном выполнении запросов к Polkit во время обработки DBus-сообщений. Некоторые DBus-интерфейсы используют кэш для хранения объектов на короткое время и очищают элементы кэша как только шина DBus освободится для обработки других запросов. Если обработчик DBus-метода использует bus_verify_polkit_async(), ему возможно потребуется ожидать завершения действия в Polkit. После готовности Polkit обработчик вызывается повторно и обращается к уже ранее распределённым в памяти данным. Если запрос к Polkit выполняется слишком долго, то элементы в кэше успевают очистится до того, как обработчик DBus-метода будет вызван второй раз.

취약점 악용을 허용하는 서비스 중에는 DBus API org.freedesktop.machine1.Image.Clone을 제공하는 systemd-machined가 주목됩니다. 이는 캐시에 데이터를 임시 저장하고 Polkit에 대한 비동기 액세스를 제공합니다. 상호 작용
org.freedesktop.machine1.Image.Clone은 시스템의 권한 없는 모든 사용자가 사용할 수 있으며, 이로 인해 시스템 서비스가 중단되거나 잠재적으로 코드가 루트로 실행될 수 있습니다(익스플로잇 프로토타입은 아직 시연되지 않았습니다). 취약점 악용을 허용한 코드는 다음과 같습니다. 추가 2015년 버전의 systemd-machined에서 systemd 220 (RHEL 7.x는 systemd 219를 사용합니다).

출처 : opennet.ru

코멘트를 추가