21 Novembro 2024

Falhas no utilitário ‘needrestart’ e 26 vulnerabilidades identificadas pelo OSS-Fuzz ameaçam sistemas Linux

4 min read

Descobertas recentes revelaram falhas graves no utilitário needrestart, uma ferramenta essencial em instalações do Ubuntu Server.

O papel do needrestart e os riscos de vulnerabilidades

O needrestart tem como função principal verificar se um sistema ou seus serviços precisam ser reiniciados após atualizações de software, especialmente quando bibliotecas compartilhadas são atualizadas. Sem uma reinicialização, versões antigas dessas bibliotecas podem permanecer em uso, deixando os sistemas vulneráveis, mesmo após a aplicação de atualizações.

Embora crucial para a manutenção do sistema, a expansão das funcionalidades do needrestart desde 2014 — incluindo sua integração com intérpretes Python e Ruby — introduziu vulnerabilidades exploráveis. Essas falhas permitem a escalada de privilégios locais, comprometendo a integridade e a segurança do sistema.

Além disso, a plataforma OSS-Fuzz, da Google, avançou significativamente ao usar fuzzing impulsionado por IA para identificar 26 vulnerabilidades ocultas, incluindo uma no popular OpenSSL.

Quais são as vulnerabilidades no needrestart?

Foram identificadas cinco vulnerabilidades graves no needrestart, representando um risco significativo para a segurança do sistema. Essas falhas permitem que usuários sem privilégios elevem suas permissões, ganhando acesso root e controle total dos sistemas afetados. Com esse acesso, atacantes podem comprometer dados sensíveis, instalar malwares ou interromper operações críticas.

Detalhes das vulnerabilidades

  • CVE-2024-48990 e CVE-2024-48992: Atacantes podem manipular variáveis de ambiente, como PYTHONPATH e RUBYLIB, levando o needrestart a executar códigos maliciosos durante a inicialização de intérpretes.
  • CVE-2024-48991: Explora uma condição de corrida TOCTOU (time-of-check to time-of-use) durante a inicialização do intérprete Python, permitindo a execução de comandos arbitrários.
  • CVE-2024-10224 e CVE-2024-11003: Aproveitam interações do needrestart com o módulo Perl Module::ScanDeps, processando entradas maliciosas que resultam na execução de comandos shell como root.

Com exceção do CVE-2024-10224, todas essas vulnerabilidades possuem severidade alta, com pontuação CVSS de 7,8. A falha CVE-2024-10224, classificada como severidade média (5,3), não permite escalada de privilégios isoladamente, mas torna-se perigosa quando combinada com CVE-2024-11003, devido ao processamento de entradas controladas por atacantes.

Outro ponto preocupante é a facilidade de exploração dessas falhas. Não é necessária interação do usuário para que elas sejam exploradas. Assim que os invasores obtêm acesso local, conseguem explorar as vulnerabilidades de forma direta.

Quais versões do Ubuntu estão afetadas?

As vulnerabilidades do needrestart afetam várias versões do Ubuntu e outras distribuições Linux, incluindo Debian, em ambientes tanto de servidor quanto desktop onde o utilitário está instalado. As versões afetadas incluem:

  • needrestart: Até a versão 3.6-8ubuntu4
  • libmodule-scandeps-perl: Abaixo da versão 1.35-1

Essas falhas são especialmente críticas nas instalações do Ubuntu Server nas versões Jammy (22.04), Noble (24.04) e Oracular (24.10), onde o needrestart é instalado por padrão. Em instalações desktop e versões mais antigas de servidor, como Focal (20.04), a vulnerabilidade só existe se o utilitário foi instalado manualmente.

Como verificar se o seu sistema está vulnerável?

Para verificar se o sistema utiliza uma versão vulnerável do needrestart ou do libmodule-scandeps-perl, execute o seguinte comando:

bash
apt list –installed | grep “^(needrestart|libmodule-scandeps-perl)”

Compare a saída do comando com as versões afetadas mencionadas acima. Caso haja correspondência, ações imediatas são necessárias para mitigar os riscos.

Como corrigir as vulnerabilidades no needrestart?

Corrigir as falhas do needrestart é essencial para garantir a segurança do sistema e evitar explorações potenciais. Recomenda-se fortemente que os usuários tomem as seguintes medidas:

  1. Atualize os pacotes afetados: Execute os comandos abaixo para atualizar o sistema:

    bash
    sudo apt update && sudo apt upgrade

    Para atualizações específicas dos pacotes vulneráveis, use:

    bash
    sudo apt update && sudo apt install –only-upgrade needrestart libmodule-scandeps-perl
  2. Habilite atualizações automáticas: Nos sistemas com o recurso unattended-upgrades ativado (padrão no Ubuntu 16.04 LTS e versões posteriores), os patches serão aplicados automaticamente em até 24 horas.

  3. Mitigação temporária: Caso as atualizações não possam ser aplicadas imediatamente, é possível desativar o recurso de varredura de intérpretes no needrestart. Para isso:

    • Edite o arquivo de configuração:
      bash
      sudo nano /etc/needrestart/needrestart.conf
    • Adicione ou modifique a seguinte linha:
      bash
      $nrconf{interpscan} = 0;
    • Salve e feche o editor.

Garantir que as atualizações sejam aplicadas prontamente é o melhor caminho para evitar ataques baseados nas falhas identificadas.