Graças uma falha recém descoberta por pesquisadores do Aqua Nautilus, o command-not-found do Ubuntu pode ser usado para levar malware.
Uma falha lógica entre o sistema de sugestão de pacotes ‘command-not-found’ (comando não encontrado) do Ubuntu e o repositório de pacotes snap pode permitir que invasores promovam pacotes maliciosos do Linux para usuários desavisados.
command-not-found do Ubuntu pode ser usado para levar malware
O problema surge da capacidade do utilitário de sugerir pacotes snap para instalação quando eles estão faltando, sem um mecanismo de validação para garantir que os pacotes sejam autênticos e seguros.
A brecha foi descoberta por pesquisadores do Aqua Nautilus que descobriram que aproximadamente 26% dos comandos do pacote Advanced Package Tool (APT) correm o risco de serem representados por pacotes snap maliciosos, apresentando um risco significativo da cadeia de suprimentos para usuários do Linux e do Windows Subsystem for Linux (WSL).
Deve-se notar que, embora o relatório da Aqua Nautilus se concentre no Ubuntu, o problema tem implicações mais amplas que vão além da popular distribuição Linux.
Por exemplo, quaisquer forks do Ubuntu ou distribuições Linux que usam o utilitário ‘command-not-found’ por padrão, junto com o sistema de pacotes Snap, também são vulneráveis.
Falta de verificações em todas as etapas
O utilitário ‘command-not-found’ é um script Python que sugere pacotes para instalação para permitir que você execute um programa específico que não está instalado no momento.
Por exemplo, se você deseja executar o mojo, mas o programa não está instalado, o script comando não encontrado recomendará pacotes para instalação para que você possa usar o comando.
No entanto, a sua segurança pressupõe que a devida diligência tenha sido realizada nos níveis mais baixos da cadeia de fornecimento para garantir que os pacotes sugeridos pela concessionária sejam seguros para instalação.
O mecanismo de sugestão do utilitário depende de um banco de dados interno para pacotes APT e um banco de dados atualizado regularmente do Snap Store para pacotes snap, permitindo que os comandos sejam correlacionados com os pacotes.
Como explica o Aqua Nautilus, é relativamente fácil para os invasores publicarem snaps maliciosos na Snap Store, dada a falta de processos de revisão rigorosos em comparação com os pacotes APT.
Os pacotes Snap podem ser publicados como “estritos” ou “clássicos”, com o primeiro limitando o software a um ambiente sandbox e o último fornecendo acesso irrestrito, assim como os pacotes APT.
Os invasores podem correr o risco de publicar seus aplicativos ruins como “clássicos”. No entanto, eles exigem revisão manual antes de serem aprovados, e as chances de passar por essas revisões se a funcionalidade maliciosa estiver adequadamente ocultada são altas.
Os pesquisadores dizem que mesmo snaps “estritos” são extremamente arriscados, pois podem abusar da opção de usar “interfaces” para interação extensiva com recursos externos ou com o servidor de exibição do sistema host, especialmente quando o X11 é usado, potencialmente permitindo a espionagem de outros aplicativos e a realização de keylogging.
Além disso, os analistas da Aqua destacam o risco de abusar do recurso de atualização automática dos pacotes snap para fornecer explorações “frescas” em um sistema comprometido que visa falhas recém-descobertas.
Um exemplo pertinente desse risco diz respeito às falhas do kernel do Linux. Como os pacotes snap compartilham o mesmo kernel do sistema que todos os softwares executados no sistema, eles podem explorar uma falha para escapar da sandbox.
Riscos de digitação e falsificação de identidade
Tudo o que foi dito acima prepara o terreno para uma situação de risco, desde que os atacantes encontrem uma maneira de promover os seus pacotes através do utilitário ‘comando não encontrado’, mas, como explicam os analistas, há uma margem confortável para isso também.
O primeiro e mais simples truque é associar comandos contendo erros de digitação (por exemplo, ‘ifconfigg’ em vez de ‘ifconfig’) a pacotes snap maliciosos, fazendo com que o utilitário ‘command-not-found’ sugira a instalação de malware ao usuário, que provavelmente não perceberá seu erro de digitação nesse ponto.
O segundo método envolve os invasores identificando e registrando nomes snap não reivindicados que os usuários podem esperar que existam, geralmente porque correspondem a comandos ou aliases conhecidos.
“Se um desenvolvedor desejar que seu snap execute um comando que se desvie do formato
.
e não seja simplesmente
, ele deverá solicitar um alias”, explicam os pesquisadores.
“Tal solicitação inicia um processo de revisão manual no qual o alias solicitado é votado para garantir que esteja alinhado com o aplicativo.”
No entanto, se os desenvolvedores não registrarem um snap real com esse alias, um agente de ameaça poderá fazer upload de seus próprios pacotes com esse nome, que será então sugerido pela ferramenta de comando não encontrado.
Essa abordagem explora uma brecha no sistema de nomenclatura e aliasing de snaps, permitindo a representação de software legítimo sem a necessidade de solicitações de alias, aproveitando nomes não reservados, mas previsíveis.
O terceiro método de ataque envolve o registro de pacotes de snap maliciosos para pacotes APT legítimos para que o utilitário ‘command-not-found’ sugira ambos.
Aqua Nautilus afirma que 26% dos comandos podem ser explorados desta forma, já que muitos editores de software legítimos não reivindicaram o alias do pacote snap correspondente para seus projetos, permitindo aos invasores margem para exploração.
Os analistas de segurança afirmam que o volume de exploração das questões acima referidas é actualmente desconhecido, mas pelo menos dois casos vieram à luz (1, 2).
Algumas etapas que podem ser tomadas para mitigar os riscos incluem usuários verificando a autenticidade dos pacotes que estão prestes a instalar, desenvolvedores Snap que possuem um Alias registrando nomes semelhantes aos de seus aplicativos e mantenedores de pacotes APT registrando o nome Snap associado para seus aplicativos. comandos.