No gerenciador de sistema systemd vulnerabilidade (), que potencialmente permite a execução de seu código com privilégios elevados ao enviar uma solicitação especialmente elaborada pelo barramento DBus. O problema foi corrigido na versão de teste (patches que resolvem o problema: , , ). A vulnerabilidade foi eliminada nas distribuições , , (ocorre no RHEL 8, mas não afeta o RHEL 7), , e , mas no momento da redação da notícia, ainda permanece não corrigida em e .
A vulnerabilidade é causada pelo acesso a uma área de memória já liberada (use-after-free), que ocorre durante a execução assíncrona de solicitações ao Polkit durante o processamento de mensagens DBus. Alguns interfaces do DBus utilizam cache para armazenar objetos por um curto período e limpam os elementos do cache assim que o barramento DBus se torna livre para processar outras solicitações. Se o manipulador do método DBus utiliza bus_verify_polkit_async(), pode ser necessário aguardar a conclusão da ação no Polkit. Após a conclusão do Polkit, o manipulador é chamado novamente e acessa dados que já foram alocados na memória anteriormente. Se a solicitação ao Polkit levar muito tempo, os elementos no cache conseguem ser limpos antes que o manipulador do método DBus seja chamado pela segunda vez.
Entre os serviços que permitem explorar a vulnerabilidade, destaca-se o systemd-machined, que fornece API DBus org.freedesktop.machine1.Image.Clone, levando ao armazenamento temporário de dados no cache e ao acesso assíncrono ao Polkit. A interface
org.freedesktop.machine1.Image.Clone está disponível para todos os usuários não privilegiados do sistema, que podem iniciar a queda dos serviços do systemd ou potencialmente conseguir a execução de código com direitos root (o protótipo do exploit ainda não foi demonstrado). O código que permite explorar a vulnerabilidade foi no systemd-machined em 2015 na versão (no RHEL 7.x utiliza-se systemd 219).
Fonte: opennet.ru
