È stata pubblicata un'informazione su una vulnerabilità nel sistema operativo Qubes, che utilizza un hypervisor per un'isolamento rigoroso delle applicazioni e dei componenti del sistema operativo (ogni classe di applicazioni e i servizi di sistema operano in macchine virtuali separate). Nel caso in cui un attaccante comprometta una delle macchine virtuali, la vulnerabilità consente di aggirare l'isolamento, ottenere l'esecuzione di comandi arbitrari nell'ambiente host (Dom0) e prendere il controllo dell'intero sistema operativo. Il problema si manifesta quando l'utente utilizza lo strumento «qvm-copy-to-vm» per copiare un file dall'ambiente host a una macchina virtuale sotto il controllo dell'attaccante. La vulnerabilità è stata corretta nell'aggiornamento del pacchetto qubes-core-dom0-linux 4.3.22.
Il problema è presente nello strumento «qvm-copy-to-vm» ed è causato da una gestione inadeguata degli errori restituiti durante l'interazione con la macchina virtuale. La sostanza della vulnerabilità è che lo strumento qvm-copy-to-vm, per visualizzare le informazioni sugli errori, avviava i programmi kdialog o zenity, utilizzando la funzione system() e inserendo i dettagli del file non riuscito nel comando della linea di comando. Tuttavia, la pulizia del nome del file era limitata all'eliminazione di caratteri non ASCII e virgolette doppie senza controllare la presenza di caratteri speciali, interpretati dalla shell di comando, come «`» e «$».
Dopo aver completato il trasferimento dei file dal sistema host, il gestore sul lato della macchina virtuale restituisce una conferma dell'operazione, nella quale è incluso, tra l'altro, il nome dell'ultimo file ricevuto. L'attacco consiste nel restituire un codice di errore anziché una conferma e fornire per il file che non è riuscito a essere copiato, un nome contenente caratteri speciali interpretati dalla shell di comando. Dopo aver ricevuto l'errore, il gestore sul lato dell'ambiente host attiverà utilizzando system() lo strumento per mostrare un dialogo con il testo dell'errore, passando nella linea di comando il nome del file restituito dall'attaccante (ad esempio, se viene indicato «file`id`» sul lato dell'ambiente host verrà eseguito il comando id).
Fonte: opennet.ru
