Encontramos três vulnerabilidades no systemd - entendemos qual é o problema

No início do mês, os especialistas em segurança da Qualys descobriram imediatamente três vulnerabilidades no systemd - o subsistema de inicialização do Linux - permitindo que um invasor ganhasse direitos de superusuário. Dizemos qual é a essência deles e quais distribuições estão sujeitas a eles.


/ Flickr / David Goehring / CC BY / Foto alterada

Novas vulnerabilidades antigas


Todas as três vulnerabilidades estão associadas ao serviço de log do systemd, journald. Os seguintes identificadores foram atribuídos a eles no banco de dados do CVE: CVE-2018-16864 , CVE-2018-16865 e CVE-2018-16866 . Essas vulnerabilidades dão ao invasor a capacidade de obter privilégios de root no sistema atacado.

Todas as distribuições sem a função de proteção do espaço do usuário ( -fstack-check ) - Debian, Ubuntu, Fedora, CentOS, Mageia etc. estão em risco.Entre as exceções estão o SUSE Linux Enterprise 15 e o openSUSE Leap 15.0, bem como as versões 28 e 29 do Fedora.

Curiosamente, todas as três vulnerabilidades existem há vários anos , apenas nada se sabia sobre elas. O CVE-2018-16864 surgiu em 2013, mas tornou-se possível operá-lo em 2016, quando o systemd foi atualizado para a versão 230. O CVE-2018-16865 apareceu no sistema operacional em 2011, mas se tornou crítico apenas dois anos após o lançamento da versão systemd 201.

Quanto à terceira vulnerabilidade (CVE-2018-16866), existe desde 2015. No entanto, foi fechado acidentalmente com a atualização do systemd v240 alguns anos depois. Máquinas sem esse patch ainda estão em perigo.

Qual é a essência dos "buracos" descobertos


A vulnerabilidade CVE-2018-16864 permite que um invasor manipule a linha de comando e envie muitos argumentos (pesando vários megabytes) para systemd-journald, causando a falha do processo. Além disso, o hacker tem a oportunidade de assumir o controle do ponteiro de instruções estendido (EIP).

O problema com o CVE-2018-16864 está relacionado à gravação de uma mensagem grande em / run / systemd / journal / socket. Como resultado, parte dessa mensagem sai da pilha e entra na região mmap . Depois disso, um invasor pode substituir o segmento de leitura e gravação da libc e substituir o ponteiro de função e executar qualquer cadeia de programas desejada no sistema.

Quanto ao CVE-2018-16866, ele está associado a um erro de análise de linha. Se você enviar uma mensagem especial (terminando com um caractere de dois pontos) no formato syslog para o sistema de log, o sistema ignorará o final da linha e gravará a próxima parte da pilha no log.

A segunda e terceira vulnerabilidades permitem que a implementação do chamado ataque retorne à biblioteca e execute na máquina da vítima todas as funções. Segundo especialistas da Qualys, eles conseguiram criar uma exploração e obter direitos de superusuário em computadores com a arquitetura i386 e amd64 em 10 e 70 minutos, respectivamente.

“Essas vulnerabilidades são bastante graves, pois permitem aumentar os direitos de acesso no sistema. Os autores ainda mantêm o código de exploração em segredo, pois há um grande número de distribuições de "brechas", comentou Sergey Belkin, chefe do departamento de desenvolvimento do provedor de IaaS 1cloud.ru . "Eles publicarão quando as vulnerabilidades forem fechadas." Alguns desenvolvedores, por exemplo, do Ubuntu e Red Hat , já publicaram os patches necessários. Eles podem ser encontrados nos repositórios oficiais. ”


/ Flickr / bradleypjohnson / CC BY

Que outras vulnerabilidades foram encontradas no systemd


A última vez que uma vulnerabilidade de sistema foi descoberta em outubro de 2018. O cliente DHCPv6 do gerenciador de serviços é iniciado automaticamente quando uma mensagem é recebida de qualquer servidor DHCP na rede local ou no provedor de serviços da Internet. O uso desta mensagem no systemd pode causar uma falha na memória e obter controle do computador.

Antes disso, vários erros no código do gerente de serviço foram encontrados em 2017. Um deles permitiu que os atacantes usassem pacotes TCP para executar qualquer código no sistema. Os pacotes TCP “forçaram” o systemd a alocar muito pouco espaço em buffer para a mensagem. Isso nos permitiu gravar dados arbitrários fora do buffer na memória principal.

Outra vulnerabilidade de 2017 foi relacionada à obtenção de direitos de superusuário não autorizados. Em algumas distribuições, por exemplo, CentOS e RHEL7, no systemd foi possível criar um perfil com um nome de usuário que começa com um número. Embora geralmente no Linux esse recurso não seja fornecido. Mas se um usuário desse tipo aparecesse no sistema, o gerente de serviço concedia a ele direitos de administrador.

Todas essas vulnerabilidades foram fechadas em pouco tempo. "Patches" para novos "buracos" descobertos em janeiro também aparecem gradualmente. Pode-se esperar que as vulnerabilidades sejam fechadas na maioria das distribuições em breve, e os administradores de servidores e computadores Linux precisarão apenas instalar uma atualização do sistema.

Publicações do blog corporativo 1cloud:

Source: https://habr.com/ru/post/pt437556/


All Articles