Opublikowano informacje o podatności w systemie operacyjnym Qubes, który wykorzystuje hypervisor do ścisłej izolacji aplikacji i komponentów OS (każda klasa aplikacji i usługi systemowe działają w oddzielnych maszynach wirtualnych). Jeśli atakujący skompromituje jedną z maszyn wirtualnych, podatność pozwala na obejście izolacji, wykonywanie dowolnych poleceń w środowisku hosta (Dom0) i przejęcie kontroli nad całym systemem operacyjnym. Problem ujawnia się, gdy użytkownik korzysta z narzędzia „qvm-copy-to-vm” do kopiowania pliku z środowiska hosta do maszyny wirtualnej kontrolowanej przez atakującego. Podatność została naprawiona w aktualizacji pakietu qubes-core-dom0-linux 4.3.22.
Problem występuje w narzędziu „qvm-copy-to-vm” i wynika z niewłaściwego przetwarzania błędów zwracanych podczas interakcji z maszyną wirtualną. Esencją podatności jest to, że narzędzie qvm-copy-to-vm w celu wyświetlenia informacji o błędzie uruchamia programy kdialog lub zenity, używając funkcji system() i podstawiając informacje o nieudanym skopiowanym pliku jako opcje w wierszu poleceń. Przy tym oczyszczanie nazwy pliku ograniczało się do usunięcia znaków nie-ASCII i podwójnych cudzysłowów bez sprawdzania obecności znaków specjalnych, interpretowanych przez powłokę poleceń, takich jak „`” i „$”.
Po zakończeniu kopiowania plików z systemu hosta, procesor po stronie maszyny wirtualnej zwraca potwierdzenie operacji, w którym między innymi wskazuje nazwę ostatnio otrzymanego pliku. Atak polega na zwrocie kodu błędu zamiast potwierdzenia i podaniu dla pliku, który nie został skopiowany, nazwy z przetwarzanymi przez interpreter poleceń znakami specjalnymi. Po otrzymaniu błędu procesor po stronie środowiska hosta uruchomi polecenie system() narzędzie do wyświetlania dialogu z tekstem błędu, przekazując w wierszu poleceń zwróconą przez atakującego nazwę pliku (na przykład, przy podaniu „file`id`” po stronie hosta uruchomione zostanie polecenie id).
Źródło: opennet.ru
