
CVE-2023-44451, CVE-2023-52076: Vulnerabilidade de RCE que afeta distribuições Linux populares, incluindo Mint, Kali, Parrot, Manjaro, etc. Execução Remota de Código por Directory Traversal na Análise de Arquivos EPUB
Vulnerabilidade de RCE que afeta distribuições Linux populares, incluindo Mint, Kali, Parrot, Manjaro, etc. Execução Remota de Código por Traversal de Diretório na Análise de Arquivos EPUB
Uma vulnerabilidade crítica de Path Traversal e escrita arbitrária de arquivos foi descoberta no software visualizador de documentos padrão do MATE/ e Linux Mint, afetando sistemas operacionais populares como Kali Linux, Parrot Security OS, Ubuntu-Mate, Linux Mint, Xubuntu e todos os outros sistemas operacionais que usam MATE ou Atril/Xreader como visualizador de documentos padrão.
A vulnerabilidade existe no Atril Document Viewer e no Xreader Document Viewer, que são os visualizadores de documentos padrão do ambiente MATE e do Linux Mint, respectivamente. O Atril é o leitor de documentos padrão do Kali Linux, Ubuntu-Mate, Parrot Security OS e Xubuntu, e o Xreader é o leitor de documentos padrão do Linux Mint.
Essa vulnerabilidade é capaz de escrever arquivos arbitrários em qualquer lugar do sistema de arquivos ao qual o usuário que abre um documento malicioso tem acesso; a única limitação é que essa vulnerabilidade não pode ser explorada para sobrescrever arquivos existentes, mas isso não impede um atacante de alcançar Execução Remota de Comandos no sistema alvo.
Essa vulnerabilidade não pode ser explorada para sobrescrever arquivos existentes; ela só pode criar novos arquivos em qualquer local especificado, mas isso não nos impede de alcançar RCE. Tentei usar a vulnerabilidade para escrever uma entrada .desktop em $HOME/.config/autostart e, em seguida, fiz logout e login novamente; a entrada .desktop maliciosa foi acionada e obtive Execução Remota de Comandos. Também tentei colocar um arquivo authorized_keys no diretório .ssh/ e alcancei RCE via SSH. Nota: Se um diretório não existir, ele criará o diretório automaticamente.
Quem conhece o formato Ebook? Será que todo mundo já não migrou para o PDF?
A resposta é não; o EPUB ainda é um formato de documento popular e poderoso, mas muitas pessoas preferem o PDF. A maioria delas está familiarizada com PDFs. Então, eu estava tentando maximizar o impacto dessa vulnerabilidade. Outra coisa interessante que notei foi que, ao renomear o documento .epub para algo.pdf, o Visualizador de Documentos vulnerável (Atril/Xreader) tenta abrir o arquivo algo.pdf e o lê como um documento EPUB, pois é responsável por ler tanto EPUB quanto PDF; ele também suporta muitos outros formatos de documento. Em outras palavras, podemos renomear nosso algo.epub malicioso para algo.pdf e enviá-lo ao alvo para alcançar RCE no alvo.
Então está tudo certo; poderíamos criar um exploit que gerasse um par epub/pdf para escrever entradas .desktop maliciosas no diretório /home//.config/autostart/. Mas há um pequeno problema: o nome de usuário do alvo é necessário para explorar essa falha com sucesso. E se não soubermos o nome de usuário? Sem RCE fácil? Você conseguiria adivinhar o nome de usuário? Será que precisamos tentar nomes de usuário comuns aleatórios? Vamos ver o que consegui..
Após uma análise mais aprofundada, descobri que podemos usar /proc/self/cwd para acessar o diretório home do usuário se ele baixar o documento malicioso e abri-lo em algum lugar dentro do seu diretório home, como os diretórios ~/Downloads/, ~/Documents/. Portanto, podemos explorar a falha de path traversal para alcançar RCE apenas usando o gadget ../../../../../proc/self/cwd/../.config/autostart/exploit.desktop.
Criei um exploit totalmente funcional para essa vulnerabilidade (exploit_rce.sh) e um script para escrever e incluir arquivos personalizados para path traversal (exploit_file_write.sh).
NOTA: No Atril do MATE, a vulnerabilidade não foi corrigida; os desenvolvedores estão corrigindo a vulnerabilidade. Então, adicionei um script de detecção (detect.sh) para detectar documentos EPUB maliciosos e sanitizá-los antes de abri-los.
