Detectado um bug no coletor de lixo do Linux que pode levar ao escalonamento de privilégios 

vulnerabilidade do systemd

Alguns dias atrás Jann Horn da equipe do Google Project Zero, que anteriormente identificaram as vulnerabilidades Spectre e Meltdown, revelou uma técnica para explorar uma vulnerabilidade encontrado no coletor de lixo do kernel Linux (CVE-2021-4083).

Vulnerabilidade é causado por uma condição de corrida quando os descritores de arquivo de soquete unix são limpos e potencialmente permite que um usuário local sem privilégios execute seu código no nível do kernel.

O problema é interessante porque a janela de tempo durante o qual a condição de corrida ocorre foi avaliado como muito pequeno para criar vulnerabilidades reais, mas o autor do estudo mostrou que mesmo vulnerabilidades inicialmente céticas podem se tornar uma fonte de ataques reais se o criador da vulnerabilidade tiver as habilidades e o tempo necessários.

Yann Horn mostrou como, com a ajuda de manipulações de filigrana, é possível reduzir a condição Um evento de corrida que ocorre ao chamar as funções close() e fget() ao mesmo tempo para uma vulnerabilidade use-after-free totalmente explorada e ao obter acesso a uma estrutura de dados já liberada dentro do kernel.

Ocorre uma condição de corrida durante o processo de fechamento de um descritor de arquivo enquanto chama as funções close() e fget() ao mesmo tempo. A chamada para close() pode ser executada antes de fget() ser executado, o que confundirá o coletor de itens não utilizado porque, de acordo com refcount, a estrutura do arquivo não terá referências externas, mas permanecerá anexada ao descritor de arquivo, ou seja, o coletor de lixo assumirá que tem acesso exclusivo à estrutura, mas na verdade por um curto período de tempo, a entrada restante na tabela do descritor de arquivo continuará a indicar que a estrutura está sendo liberada.

Para aumentar a probabilidade entrando em uma condição de corrida, foram usados ​​vários truques que permitiram aumentar a probabilidade de sucesso da participação em 30% ao realizar otimizações específicas do sistema. Por exemplo, para aumentar o tempo de acesso a uma estrutura com descritores de arquivo em várias centenas de nanossegundos, os dados foram liberados do cache do processador poluindo o cache com atividade em outro núcleo da CPU, o que possibilitou retornar a estrutura da memória e não o cache rápido da CPU.

A segunda característica importante era o uso de interrupções geradas por um temporizador de hardware para aumentar o tempo de corrida. O tempo foi escolhido para que o manipulador de interrupção fosse acionado durante a ocorrência da condição de corrida e interrompesse a execução do código por um tempo. Para atrasar ainda mais o retorno do controle, o epoll gerou cerca de 50 mil entradas na fila, o que exigiu uma iteração no manipulador de interrupções.

A técnica exploração de vulnerabilidade foi divulgado após um período de não divulgação de 90 dias. O problema

e foi corrigido no início de dezembro. A correção foi incluída no kernel 5.16 e também movida para as ramificações LTS do kernel e os pacotes com o kernel fornecidos nas distribuições. Deve-se notar que a vulnerabilidade foi identificada durante a análise de um problema semelhante CVE-2021-0920, que se manifesta no coletor de lixo ao processar o sinalizador MSG_PEEK.

Outra vulnerabilidade encontrada recentemente no kernel Linux, foi o CVE-2022-0742 que pode esgotar a memória disponível e causar remotamente uma negação de serviço enviando pacotes icmp6 especialmente criados. O problema está relacionado a um vazamento de memória que ocorre ao processar mensagens ICMPv6 com tipos 130 ou 131.

O problema está presente desde o kernel 5.13 e foi corrigido nas versões 5.16.13 e 5.15.27. O problema não afetou Debian, SUSE, Ubuntu LTS (18.04, 20.04) e ramificações estáveis ​​do RHEL, foi corrigido no Arch Linux.

Finalmente se você estiver interessado em saber mais sobre isso da nota, você pode conferir os detalhes em o seguinte link.


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: AB Internet Networks 2008 SL
  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.