Uma nova vulnerabilidade foi descoberta no Systemd

sistema

Foi encontrada uma vulnerabilidade no systemd que já está descrita em (CVE-2019-6454), do que permite fazer com que o processo de inicialização do controle (PID1) bloqueie ao enviar uma mensagem especialmente criada para um usuário sem privilégios através do D-Bus.

Os Os desenvolvedores da Red Hat também não excluem a possibilidade de usar a vulnerabilidade para organizar a execução do código com privilégios de root., mas a possibilidade final de tal ataque ainda não foi determinada.

Sobre o systemd

Para quem não conhece o Systemd Posso dizer-lhe isso este é um sistema de inicialização do Linux e gerenciador de serviços que inclui recursos como inicialização de daemon sob demanda, montagem automática e manutenção de ponto de montagem, suporte de instantâneo e rastreamento de processo usando grupos de controle do Linux.

Systemd fornece um daemon de registro e outras ferramentas e utilitários para ajudar nas tarefas comuns de administração do sistema. Lennart Poettering e Kay Sievers escreveram o SystemD, inspirado no macOS launchd e Upstart, com o objetivo de criar um sistema moderno e dinâmico.

Em particular, o systemd fornece recursos de paralelização agressivos e lógica de controle de serviço baseada em dependência, permitindo que os serviços sejam iniciados em paralelo e levando a tempos de inicialização mais rápidos. Esses dois aspectos estavam presentes no Upstart, mas aprimorados pelo systemd.

Systemd é o sistema de inicialização padrão para as principais distribuições Linux, mas é compatível com os scripts de inicialização SysV.

SysVinit é um sistema de inicialização que precede o systemd e usa uma abordagem simplificada para iniciar o serviço. O Systemd não apenas gerencia a inicialização do sistema, mas também fornece alternativas para outros utilitários conhecidos, como cron e syslog.

Sobre a nova vulnerabilidade do systemd

Ao manipular o tamanho da mensagem enviada pelo D-Bus, um invasor pode mover o ponteiro além dos limites de memória alocada para a pilha, contornando a proteção da "página de guarda da pilha", que se baseia na substituição de uma página de memória na borda que chama uma exceção (falha de página).

O ataque bem-sucedido é demonstrado no Ubuntu 18.10 com systemd 239 e no CentOS 7.6 com systemd 219.

Como solução alternativa, a compilação pode ser usada no GCC com a opção "-fstack-clash-protection", que é usada por padrão no Fedora 28 e 29.

Ressalta-se que em 2014 o autor da biblioteca do sistema MUSL apontou entre os principais problemas arquitetônicos do manipulador PID1 de inflação excessiva do sistema e questionou a viabilidade de implementação de um controlador de nível PID1 API para Link com o Barramento, por ser um vetor sério ataques e podem afetar adversamente a confiabilidade de todo o sistema

De acordo com um pesquisador de segurança que revelou uma vulnerabilidade, uma mudança de ponteiro de pilha só é possível para páginas de memória não utilizadas (não atribuído), que não permite organizar a execução do código no contexto do processo PID1, mas permite que um invasor inicie o bloqueio PID1 com uma subsequente transição do kernel Linux para o estado de "pânico" (no caso do controlador PID 1 falha, todo o sistema trava).

No systemd, um manipulador de sinal é instalado que tenta capturar as falhas do processo PID1 (falha de segmentação) e inicia o shell para recuperação.

Mas, uma vez que, durante o ataque, uma chamada é feita para páginas de memória não duplicadas (não alocadas), o kernel não pode chamar este manipulador de sinal e apenas termina o processo com PID 1, que por sua vez o faz. É impossível continuar trabalhando e ir para o estado de "pânico", portanto, é necessário reiniciar o sistema.

Já existe uma solução para o problema

Como todo problema de segurança já descrito e relatado, sua publicação não pode ser feita até que o problema seja resolvido e atualizações de patch de vulnerabilidade para SUSE / openSUSE, Fedora já foram lançadas, também para Ubuntu e parcialmente para Debian (Somente Debian Stretch).
Embora o problema permaneça sem correção no RHEL.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   juliosão dito

    É que o systemd tem todas as características para se tornar um enorme cavalo de Tróia. Isso rompe com a filosofia UNIX de "Faça uma coisa e faça bem" e vamos acabar pagando por isso.

    1.    David Orange dito

      Acho que o mesmo…

  2.   Paul Matilla dito

    Eu pessoalmente sou bastante conservador com o sistema de inicialização, acho que como os usuários mais antigos e tradicionais do UNIX tradicional e primitivo: PREFERO O SISTEMA V INIT OU SEJA O SYSVINIT TRADICIONAL PARA SEMPRE. SISTEMA (TINHA INSTALADO NO LIMUX DEBIAN 8.3 QUE PERMANECEU NO THINKPAD T450 QUE EU ROUBEI EM MARÇO DE 2017) SISTEMA NUNCA ME CONVENCIO

  3.   luix dito

    systemd SUCKS !!