.
Os pesquisadores descobriram uma vulnerabilidade de execução remota de código (RCE) de alta gravidade em um componente inerente das distribuições Linux baseadas no GNOME, impactando potencialmente um grande número de usuários.
Rastreado como CVE-2023-43641, a exploração da vulnerabilidade na relativamente pequena biblioteca libcue aproveita o aplicativo tracker-miners para facilitar um ataque RCE com um clique.
Acredita-se que o problema afete todas as distros baseadas em GNOME, incluindo RHEL, SUSE e Debian, mas até agora só foi comprovado que funciona nas versões mais recentes do Ubuntu e Fedora.
Um usuário só precisa baixar um arquivo e armazená-lo em um diretório comumente verificado, como as pastas de downloads, músicas ou vídeos, e o invasor pode obter RCE em sua máquina.
A biblioteca libcue é relativamente pequena e é usada para analisar folhas de sinalização – arquivos .cue – que armazenam os metadados que definem o layout da música em um CD. Dado que é frequentemente usado junto com o formato de áudio FLAC, reprodutores de áudio de código aberto como o Audacious dependem da biblioteca.
Mais importante ainda, outro aplicativo que usa libcue é o tracker-miners, que está incluído em GNOMO-baseado em distros Linux e é responsável por indexar arquivos no diretório do usuário para que apareçam nos resultados da pesquisa.

Imagem cortesia do GitHub
O aplicativo tracker-miners é inicializado automaticamente quando um arquivo é adicionado ou modificado em um subdiretório do diretório inicial. Isso significa que a exploração pode ser executada assim que o usuário baixar um arquivo .cue criado com códigos maliciosos, já que os rastreadores usam libcue para passar o arquivo de folhas de sinalização.
“Para resumir a história, isso significa que clicar inadvertidamente em um link malicioso é tudo o que um invasor precisa para explorar o CVE-2023-43641 e obter a execução de código em seu computador”, disse Kevin Backhouse, pesquisador de segurança da equipe do GitHub Security Lab.
Outros arquivos também são suportados por rastreadores-mineradores – ele também possui scanners para arquivos HTML, JPEG e PDF – mas o código de prova de conceito (PoC) do pesquisador foi limitado ao uso de arquivos de folhas de sinalização.
Explorando libcue
Backhouse criou explorações funcionais apenas para as versões mais recentes do Ubuntu e Fedora, 23.04 e 38 respectivamente, mas acredita que qualquer distro baseada em GNOME é “potencialmente explorável”.
Os PoCs completos ainda não foram publicados para oferecer aos usuários tempo para instalar o patch. Backhouse disse que as explorações já desenvolvidas funcionam “de forma muito confiável”.
O bug em si é classificado como uma falha de corrupção de memória e recebeu uma classificação de gravidade provisória de 8,8 pelo GitHub. A pontuação CVSS ainda está sendo determinada.
Um problema com a forma como a sintaxe INDEX de uma folha de sinalização é tratada permite que um índice negativo seja construído porque o método atoi não verifica o estouro de número inteiro.
A função track_set_index do scanner não verifica corretamente se o índice é um número inteiro negativo e, se for negativo, então um exploração de gravação fora dos limites torna-se possível.
voidtrack_set_index { if (i > MAXINDEX) { fprintf(stderr, "too many indexesn"); return; } track->index[i] = ind; }
Devido à consistência do layout de heap de cada distribuição, um invasor pode compilar um arquivo zip contendo arquivos individuais para explorar a mesma vulnerabilidade em quantas distros desejar para maximizar o potencial de sucesso.
Se todos esses arquivos fossem desarquivados, apenas aquele que correspondesse à distribuição do usuário seria necessário para realizar o ataque.
O processo de extração de rastreadores dos mineradores de rastreadores torna o layout da memória de cada distribuição mais fácil de prever porque um novo processo é iniciado toda vez que os mineradores de rastreadores são iniciados, em vez de competir com um processo que está em execução há horas.
Um novo thread também é iniciado pela extração do rastreador a cada vez. Backhouse disse que o layout do heap na arena malloc do thread “é muito consistente”, mas varia entre distroso que significa que o arquivo zip com vários arquivos seria a abordagem mais eficaz para os invasores.
O bug do bônus
Backhouse encontrou um problema ao desenvolver a exploração PoC para a vulnerabilidade porque o componente tracker-extract dos tracker-miners tem uma sandbox seccomp que impede a execução desse tipo de exploração.
Depois de não perceber que precisava de um escape de sandbox, Backhouse tentou um método diferente para explorá-lo, concentrando-se em evitar a função que gerava o erro anteriormente, e inadvertidamente descobriu um escape de sandbox que era anteriormente desconhecido pelos desenvolvedores do GNOME.
O escape do sandbox já foi corrigido, e Backhouse planeja publicar o PoC original com uma linha alterada para fazê-lo funcionar sem o escape do sandbox, uma vez que tenha passado tempo suficiente para permitir que os usuários aproveitem totalmente correção seus sistemas. ®
.