
CVE-2023-44452, CVE-2023-51698: Iniezione di argomenti nel parsing di file CBT che ha colpito le principali distribuzioni Linux
Una vulnerabilità critica di RCE/Iniezione di Comandi con un solo clic che colpisce popolari sistemi operativi Linux con ambienti desktop MATE, Cinnamon e alcuni Xfce.
Sistemi operativi interessati:
Linux Mint Kali Linux (OS popolare tra professionisti della sicurezza, ricercatori) Parrot OS (OS popolare tra professionisti della sicurezza, ricercatori) Ubuntu-Mate Xubuntu Fedora Cinnamon Fedora Mate Manjaro Mate Manjaro Cinnamon Ubuntu Kylin (Ubuntu cinese ufficiale) Kylin OS V10 (OS che si dice sia utilizzato nei settori governativi cinesi)
E altri ambienti desktop MATE, Cinnamon e alcuni Xfce.
Componente software interessato: tutte le versioni, incluse le ultime versioni di Atril Document Viewer (lettore di documenti predefinito per l'ambiente MATE, uno dei lettori di documenti più popolari) e Xreader Document Viewer (lettore di documenti predefinito in Linux Mint)
Riepilogo della vulnerabilità:
Questa vulnerabilità consente a un attaccante remoto di eseguire codice arbitrario sulle installazioni interessate di Linux Mint Xreader. È richiesta l'interazione dell'utente per sfruttare questa vulnerabilità, in quanto il bersaglio deve visitare una pagina dannosa o aprire un file dannoso.
Il difetto specifico risiede nell'analisi dei file CBT. Il problema deriva dalla mancanza di una corretta validazione di una stringa fornita dall'utente prima di utilizzarla per eseguire una chiamata di sistema. Un attaccante può sfruttare questa vulnerabilità per eseguire codice nel contesto dell'utente corrente.
Questa vulnerabilità è dovuta a un segmento di codice difettoso in Atril e Xreader responsabile della gestione dei documenti a fumetti (.cbr, .cbz, .cbt, .cb7). I documenti a fumetti sono solo archivi che contengono immagini. La vulnerabilità qui può essere sfruttata utilizzando un documento CBT creato appositamente, che è un archivio TAR.
Causa principale - Segmento di codice vulnerabile in entrambi i visualizzatori di documenti (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}
};
Osservando il codice sopra, possiamo vedere che ci sono comandi shell utilizzati per la decompressione. Guarda la sezione /* tar */, che in realtà chiama il seguente comando shell, "tar -xOf -tf <immagine dentro l'archivio tar>". Questo serve per visualizzare/caricare ogni immagine all'interno del documento CBT. Questo comportamento può essere sfruttato utilizzando un'opzione del programma tar '--checkpoint-action' per eseguire comandi arbitrari sul bersaglio nominando una delle immagini all'interno del documento CBT con qualcosa come '--checkpoint-action=EXEC=bash -c "whoami>/tmp/who.txt";.jpg'.
Questa vulnerabilità era già stata trovata nel visualizzatore di documenti Evince (il lettore di documenti predefinito di GNOME) nel 2017. Poiché Atril e Xreader sono fork di Evince, questa vulnerabilità era presente sia in Atril che in Xreader. Il team di Atril ha corretto la vulnerabilità in quel momento aggiungendo un pezzo di codice che termina il processo di Atril se il file CBT contiene "--checkpoint-action=" nel suo nome. La seguente era la patch (comics-document.c) (riga - 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 ();
}
Come puoi vedere, mostra un messaggio "File unsupported" sulla console e termina quando vede "--checkpoint-action=" in una pagina/nomefile. Ho notato che questo funziona solo con un file vuoto o un file immagine davvero piccolo, e se forniamo un file più grande con più byte, la funzione "gtk_main_quit ();" fallisce, quindi continua a essere eseguita, eseguendo così il comando arbitrario iniettato.
Nell'ambiente desktop MATE, molti ambienti desktop XFCE e leggeri (inclusi sistemi operativi come Kali, Parrot, Xubuntu, Ubuntu Mate, Kylin, Fedora Mate, Manjaro Mate), questa vulnerabilità può essere sfruttata semplicemente inviando un link/URL perché questi sistemi operativi/ambienti hanno Atril e Atril ha un componente aggiuntivo chiamato atril-previewer che attiva l'exploit senza nemmeno aprire o fare clic sul documento. Un attaccante può creare una pagina web che scarica istantaneamente il file CBT creato appositamente sul sistema bersaglio quando l'utente bersaglio visita la pagina web, e il browser Firefox più recente oggi scarica automaticamente per impostazione predefinita senza conferma dell'utente; quando l'utente naviga nella sua directory Downloads, il payload verrà eseguito, dando all'attaccante la shell.
In Linux Mint (ambiente desktop Cinnamon), l'utente bersaglio deve aprire il documento per attivare il payload perché Linux Mint usa Xreader e Xreader non ha un visualizzatore di anteprime.
Ho allegato un exploit completamente funzionante insieme a un video dimostrativo in un archivio zip (doctTar-inject_exploit.zip) con questa segnalazione.
Nel video dimostrativo, lo scenario è il seguente: Macchina dell'attaccante - Kali Linux Macchina vittima - Kali Linux ultima edizione (2023.3) La vittima visita l'URL/link dannoso generato dal mio script di exploit
Dipendenze dell'exploit: poppler-utils Installa poppler-utils prima di eseguire lo script di exploit sulla tua macchina Linux (preferibilmente Kali). Installazione: apt install poppler-utils.