
CVE-2023-44452, CVE-2023-51698: Injeção de Argumentos na Análise de Arquivos CBT que afetou Distribuições Linux Populares
Uma vulnerabilidade crítica de RCE/Injeção de Comandos com um único clique que afeta sistemas operacionais Linux populares com ambientes de desktop MATE, Cinnamon e alguns Xfce.
Sistemas Operacionais Afetados:
Linux Mint Kali Linux (SO popular entre profissionais de segurança e pesquisadores) Parrot OS (SO popular entre profissionais de segurança e pesquisadores) Ubuntu-Mate Xubuntu Fedora Cinnamon Fedora Mate Manjaro Mate Manjaro Cinnamon Ubuntu Kylin (Ubuntu chinês oficial) Kylin OS V10 (SO que se diz ser usado em setores do governo chinês)
E outros ambientes de desktop MATE, Cinnamon e alguns Xfce.
Componente de Software Afetado: Todas as versões, incluindo as versões mais recentes do Atril Document Viewer (leitor de documentos padrão do ambiente MATE, um dos leitores de documentos populares) e do Xreader Document Viewer (leitor de documentos padrão no Linux Mint)
Resumo da Vulnerabilidade:
Esta vulnerabilidade permite que atacantes remotos executem código arbitrário em instalações afetadas do Linux Mint Xreader. É necessária interação do usuário para explorar esta vulnerabilidade, pois o alvo deve visitar uma página maliciosa ou abrir um arquivo malicioso.
A falha específica existe no parsing de arquivos CBT. O problema resulta da falta de validação adequada de uma string fornecida pelo usuário antes de usá-la para executar uma chamada de sistema. Um atacante pode aproveitar esta vulnerabilidade para executar código no contexto do usuário atual.
Esta vulnerabilidade se deve a um segmento de código defeituoso no Atril e no Xreader responsável por lidar com documentos de quadrinhos (.cbr, .cbz, .cbt, .cb7). Documentos de quadrinhos são apenas arquivos compactados que contêm imagens. A vulnerabilidade aqui pode ser explorada usando um documento CBT criado maliciosamente, que é um arquivo TAR.
Causa Raiz - Segmento de código vulnerável em ambos os leitores de documentos (comics-document.c):
static const ComicBookDecompressCommand command_usage_def[] = {
/* RARLABS unrar */
{"%s p -c- -ierr --", "%s vb -c- -- %s", NULL , FALSE, NO_OFFSET},
/* GNA! unrar */
{NULL , "%s t %s" , "%s -xf %s %s" , FALSE, NO_OFFSET},
/* unzip */
{"%s -p -C --" , "%s %s" , NULL , TRUE , OFFSET_ZIP},
/* 7zip */
{NULL , "%s l -- %s" , "%s x -y %s -o%s", FALSE, OFFSET_7Z},
/* tar */
{"%s -xOf" , "%s -tf %s" , NULL , FALSE, NO_OFFSET},
/* UNARCHIVER */
{"unar -o -" , "%s %s" , NULL , FALSE, NO_OFFSET}
};
Ao observar o código acima, podemos ver que há comandos de shell usados para descompactação. Observe a seção /* tar */, ela realmente chama o seguinte comando de shell: "tar -xOf <nome_do_arquivo> -tf ". Isso serve para visualizar/carregar cada imagem dentro do documento CBT. Esse comportamento pode ser explorado usando uma opção do programa tar '--checkpoint-action' para executar comandos arbitrários no alvo, nomeando uma das imagens dentro do documento CBT com algo como '--checkpoint-action=EXEC=bash -c "whoami>/tmp/who.txt";.jpg'.
Esta vulnerabilidade já foi encontrada no Evince Document Viewer (o leitor de documentos padrão do GNOME) em 2017. Como o Atril e o Xreader são forks do Evince, esta vulnerabilidade estava presente tanto no Atril quanto no Xreader. A equipe do Atril corrigiu a vulnerabilidade na época adicionando um trecho de código que encerra o processo do Atril se o arquivo CBT tiver "--checkpoint-action=" em seu nome. O seguinte foi o patch (comics-document.c) (linha - 983):
extract_argv (EvDocument *document, gint page)
{
ComicsDocument *comics_document = COMICS_DOCUMENT (document);
char **argv;
char *command_line, *quoted_archive, *quoted_filename;
GError *err = NULL;
if (g_strrstr (comics_document->page_names->pdata[page], "--checkpoint-action="))
{
g_warning ("File unsupported\n");
gtk_main_quit ();
}
Como você pode ver, ele exibe uma mensagem "File Unsupported" no console e encerra quando vê "--checkpoint-action=" em uma página/nome de arquivo. Percebi que isso só funciona com um arquivo vazio ou um arquivo de imagem realmente pequeno, e se fornecermos um arquivo maior com mais bytes, a função "gtk_main_quit ();" falha, então ele continua a execução, executando assim o comando arbitrário injetado.
No ambiente de desktop MATE, muitos ambientes de desktop XFCE e leves (incluindo SOs como Kali, Parrot, Xubuntu, Ubuntu Mate, Kylin, Fedora Mate, Manjaro Mate), esta vulnerabilidade pode ser explorada apenas enviando um link/URL porque esses Sistemas Operacionais/Ambientes têm o Atril e o Atril tem um componente adicional chamado atril-previewer que acionará o exploit sem sequer abrir ou clicar no documento. Um atacante pode criar uma página da web que baixa instantaneamente o arquivo CBT criado para o sistema alvo quando o usuário alvo visita a página, e o navegador Firefox mais recente hoje em dia baixa automaticamente por padrão sem confirmação do usuário; quando o usuário navega para seu diretório de Downloads, o payload será executado, dando ao atacante o shell.
No Linux Mint (Ambiente de Desktop Cinnamon), o usuário alvo deve abrir o documento para acionar o payload porque o Linux Mint usa o Xreader e o Xreader não tem um previewer.
Anexei um exploit totalmente funcional junto com um vídeo de demonstração em um arquivo zip (doctTar-inject_exploit.zip) com este envio.
No vídeo de demonstração, o seguinte é o cenário: Máquina do Atacante - Kali Linux Máquina da Vítima - Kali Linux edição mais recente (2023.3) A vítima visita o URL/Link malicioso gerado pelo meu script de exploit
Dependências do Exploit: poppler-utils Instale o poppler-utils antes de executar o script de exploit na sua máquina Linux (Kali preferido). Instalação: apt install poppler-utils.