Avançar para o conteúdo principal
BlogSegurançaLinode Security Digest 30 de Janeiro - 6 de Fevereiro de 2022

Linode Security Digest 30 de janeiro - 6 de fevereiro de 2022

Linode Security Digest

Esta semana, discutiremos três vulnerabilidades de alta severidade que poderiam permitir aos atacantes aumentar os privilégios se tivessem acesso local ao sistema.

Linux Kernel eBPF - Vulnerabilidade de Validação de Entrada Imprópria

CVE-2022-23222 descreve uma vulnerabilidade decorrente da manipulação dos programas eBPF pelo kernel. Um atacante que possa executar BPF pode travar o sistema ou executar código arbitrário no contexto do kernel.

Causa Raiz - O verificador BPF não restringe adequadamente vários tipos de ponteiro *_OU_NULL, o que permite que estes tipos façam aritmética de ponteiro. Isto pode ser alavancado para executar código arbitrário ou crashar o sistema. 

Nota importante: A BPF sem privilégios é desactivada por defeito na maioria das distros. O bug foi introduzido na versão 5.8.0 do kernel e corrigido na versão 5.14.17 do kernel. A disponibilidade de explorações públicas é outra razão pela qual o CVE-2022-23222 representa um risco significativo.

Manter-se actualizado com o mais recente kernel oferecido pela sua distribuição Linux é uma forma fácil de se proteger desta vulnerabilidade. Se o seu Linode arranca um kernel fornecido por nós, pode verificar se o seu Perfil de Configuração Linode está configurado para arrancar o kernel mais recente e depois reiniciar o seu Linode. 

Se não puder actualizar imediatamente para um kernel corrigido, pode também mitigar esta vulnerabilidade, assegurando que o não-privilegiado_bpf_disabled seja definido para 1. O exemplo seguinte aplicará a mitigação temporária até que o seu Linode reinicie. Certifique-se de escrever esta configuração num ficheiro de configuração sysctl e arrancar com segurança o seu Linode para persistir na mitigação.

# sysctl -w kernel.unprivileged_bpf_disabled=1

Fonte: Tr3e wang do SecCoder Security Lab

Fuga de contentores usando Excesso de pilha no Kernel do Linux

CVE-2022-0185 é um bug de transbordamento de pilha que permite a um atacante com acesso a um utilizador sem privilégios escalar os seus privilégios para enraizar. Para o fazer, o atacante deve ter uma capacidade específica de Linux, CAP_SYS_ADMIN. É importante notar que quando o Docker (ou outros CRIs) são utilizados num cluster Kubernetes, o filtro seccomp fica desactivado por defeito, pelo que esta vulnerabilidade poderia ser explorada nesses casos.

Causa Raiz - O insecto é causado por um subfluxo inteiro presente em fs/fs_context.c:legacy_parse_param, resultando num erro de cálculo válido de comprimento máximo. Isto leva a um subfluxo inteiro no componente "Contexto do Sistema de Ficheiros". 

O subfluxo ocorre quando uma operação de subtracção reduz um número inteiro não assinado a um valor abaixo de zero. Uma vez que os números inteiros não assinados não podem representar números negativos, o cálculo resultante envolve antes o valor máximo do número inteiro. Quando este subfluxo ocorre dentro da função legacy_parse_param, uma verificação de tamanho falha, e o atacante pode escrever para além dos limites da memória de 4kb alocada no espaço do kernel. Usando esta "escrita sem limites", o atacante pode alterar valores na memória do kernel e, por exemplo, adicionar acesso a si próprio a qualquer outro processo em execução no mesmo nó.

O comando "capsh -print" pode ser utilizado no contexto do utilizador actual para listar as capacidades activadas. A exploração depende da capacidade CAP_SYS_ADMIN; contudo, a permissão só precisa de ser concedida no espaço de nomes actual. Um utilizador sem privilégios pode usar o unshare (CLONE_NEWNS | CLONE_NEWUSER) para entrar num namespace com a permissão CAP_SYS_ADMIN e depois proceder à exploração para enraizar o sistema. Contudo, a utilização do seccomp impedirá o atacante de entrar no espaço de nomes com essa capacidade.

A vulnerabilidade foi introduzida no kernel 5.1 e remendada em 5.16.2. O código de exploração já está a emergir em linha. Aqui está a redacção original para mais detalhes técnicos sobre os resultados. 

Manter-se actualizado com o mais recente kernel oferecido pela sua distribuição Linux é uma forma fácil de se proteger desta vulnerabilidade. Se o seu Linode inicia um kernel fornecido por nós, pode também verificar se o seu Perfil de Configuração do Linode está configurado para iniciar o último kernel e depois reiniciar o seu Linode. Se não for capaz de actualizar imediatamente um kernel corrigido, pode aplicar estas atenuações:

  • Minimizar a utilização de recipientes privilegiados que tenham acesso à capacidade CAP_SYS_ADMIN. 
  • Para contentores não privilegiados, assegurar-se de que existe um filtro seccomp que bloqueia a chamada não compartilhada irá reduzir o risco.
  • Mitigar a exploração a partir de contentores não privilegiados, desactivando a capacidade do utilizador de utilizar espaços com nomes de utilizador a nível de anfitrião. O exemplo seguinte aplicará a mitigação temporária até o seu Linode reiniciar. Certifique-se de escrever esta configuração num ficheiro de configuração sysctl e arrancar com segurança o seu Linode para persistir na mitigação.
# sysctl -w kernel.unprivileged_userns_clone=0

PwnKit - Vulnerabilidade à Escalada de Privilégios Local em Polkit

O Polkit é um componente para controlar privilégios de todo o sistema em SOs do tipo Unix. Fornece uma metodologia sistemática para processos não-privilegiados para comunicar com processos privilegiados. Além disso, alguém pode também usar o polkit para executar comandos com privilégios elevados usando o comando pkexec (geralmente com raiz). 

CVE-2021-4034 é uma vulnerabilidade de corrupção de memória no pkexec do polkit, um programa SUID-root instalado por defeito na maioria das principais distribuições Linux. A exploração bem sucedida permite a qualquer utilizador sem privilégios de raiz ganhar facilmente privilégios na configuração padrão.

Causa Raiz - O programa pkexec não valida devidamente o número de argumentos que lhe são transmitidos, permitindo que alguém execute código arbitrário como utilizador privilegiado. 

Todas as versões Polkit a partir de 2009 são vulneráveis e exploráveis mesmo que o próprio daemon Polkit não esteja a funcionar.

Manter-se actualizado com o mais recente kernel oferecido pela sua distribuição Linux é uma forma fácil de se proteger desta vulnerabilidade. Se o seu Linode arranca um kernel fornecido por nós, pode verificar se o seu Perfil de Configuração Linode está configurado para arrancar o kernel mais recente e depois reiniciar o seu Linode. Se não for capaz de actualizar imediatamente para um kernel corrigido, pode atenuar temporariamente o problema removendo o SUID-bit do pkexec:

# chmod 0755 /usr/bin/pkexec

Comentários

Deixe uma resposta

O seu endereço de correio electrónico não será publicado. Os campos obrigatórios estão marcados com *