Профиль: Аноним (вход | регистрация) неRU opennet.me  
The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Уязвимость в ОС Qubes, позволяющая обойти изоляцию и выполнить код на уровне Dom0

08.09.2026 13:53 (MSK)

Опубликована информация об уязвимости в операционной системе Qubes, использующей гипервизор для строгой изоляции приложений и компонентов ОС (каждый класс приложений и системные сервисы работают в отдельных виртуальных машинах). В случае если атакующий скомпрометирует одну из виртуальных машин, уязвимость позволяет обойти изоляцию, добиться выполнения произвольных команд на стороне хостового окружения (Dom0) и получить контроль над всей операционной системой. Проблема проявляется при использовании пользователем утилиты "qvm-copy-to-vm" для копирования файла из хостового окружения в подконтрольную атакующему виртуальную машину. Уязвимость устранена в обновлении пакета qubes-core-dom0-linux 4.3.22.

Проблема присутствует в утилите "qvm-copy-to-vm" и вызвана ненадлежащей обработкой ошибок, возвращаемых при обращении к виртуальной машине. Суть уязвимости в том, что утилита qvm-copy-to-vm для отображения информации об ошибке запускала программы kdialog или zenity, используя функцию system() и подставляя сведения о неудачно скопированном файле в числе опций в командной строке. При этом чистка имени файла ограничивалась вырезанием не-ASCII-символов и двойных кавычек без проверки наличия спецсимволов, интерпретируемых командной оболочкой, таких как "`" и "$".

После завершения копирования файлов из хостовой системы обработчик на стороне виртуальной машины передаёт обратно подтверждение операции, в котором среди прочего указывается имя последнего полученного файла. Атака сводится к возвращению кода ошибки вместо подтверждения и указанию для файла, который не удалось скопировать, имени с обрабатываемыми командным интерпретатором спецсимволами. После получения ошибки обработчик на стороне хостового окружения запустит командой system() утилиту для показа диалога с текстом ошибки, передав в командной строке возвращённое атакующим имя файла (например, при указании "file`id`" на стороне хостового окружения будет запущена команда id).

  1. Главная ссылка к новости (https://www.qubes-os.org/news/...)
  2. OpenNews: Релиз ОС Qubes 4.3.0, использующей виртуализацию для изоляции приложений
  3. OpenNews: Проект TFC развивает параноидально защищённую систему обмена сообщениями
  4. OpenNews: Выпуск Whonix 18.2, дистрибутива для анонимных коммуникаций
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/66232-qubes
Ключевые слова: qubes
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (61) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, aname (ok), 14:06, 08/09/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +9 +/
    Исправили и хорошо
     
     
  • 2.27, Аноним (27), 19:05, 08/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > уязвимость ... позволяющая обойти изоляцию

    А есть вообще хоть одна изоляция, не позволяющая её обойти?

     
     
  • 3.33, Сладкая булочка (?), 20:01, 08/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > 1. Нет безопасных систем.

    (с) Кто я. Who Am I – Kein System ist sicher

     
  • 3.43, aname (ok), 23:22, 08/09/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Электрическая. Нет электричества- невозможно обойти изоляцию.
     
  • 3.58, Аноним (58), 10:20, 09/09/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Теоретически для sel4 есть доказательство корректности, гугли "How to use seL4"
     
  • 3.80, Аноним (80), 10:53, 10/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > А есть вообще хоть одна изоляция, не позволяющая её обойти?

    100% гарантии тебе не даст никто.

    Сегодня админам и менеджерам важно разделять ПО для изоляции на два разных класса.

    1. ПО написание для удобства администрирования интернетсервисов и продажи виртуальных вычислительных машин для хостинга.

    2. ПО написание для обеспечения строгой изоляции запускаемих OS с учётом всех современных требований безопсности.

    Если требуется именно безопасная виртуализация можно начать с https://muen.sk/

     

  • 1.3, Аноним (3), 14:26, 08/09/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    * "Qubes OS A reasonably secure operating system"
    * "запускала программы [...], используя функцию system()"

    Классика.. А ризонабли дырявая оперэтинг стстэм.

     
     
  • 2.5, aname (ok), 14:41, 08/09/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А как надо?
     
     
  • 3.25, Аноним (3), 18:28, 08/09/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Очевидно, надо без system(). Ссылка на комит с исправлением прямо в тексте новости.
     
     
  • 4.44, aname (ok), 23:24, 08/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    С system тоже работало. Ну, работало и работало.
     
  • 2.10, Tron is Whistling (?), 14:56, 08/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Да, лишнее напоминание о том, что при кривых руках не спасёт ничего.
     

  • 1.6, онанист (?), 14:47, 08/09/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    для строгой изоляции

    на красные линии похоже

     
  • 1.7, Аноним (7), 14:48, 08/09/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > запускала программы kdialog или zenity, используя функцию system()

    Уж сколько раз твердили миру...

     
  • 1.8, Аноним (8), 14:51, 08/09/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Это была фича, но они похоже не отличают функциональность и проблему. Зачем ломать людям воркфлоу?
     
  • 1.9, Tron is Whistling (?), 14:55, 08/09/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Лол.
    Это всё, что надо знать...
    Поделие в лучшем случае уровня школьника.
     
     
  • 2.19, пгуыыцрщ (?), 17:07, 08/09/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    https://en.wikipedia.org/wiki/Joanna_Rutkowska
     
     
  • 3.22, Tron is Whistling (?), 18:19, 08/09/2026 [^] [^^] [^^^] [ответить]  
  • +4 +/
    "используя функцию system() и подставляя сведения о неудачно скопированном файле в числе опций в командной строке. При этом чистка имени файла ограничивалась вырезанием не-ASCII-символов и двойных кавычек без проверки наличия спецсимволов"

    Всё, что надо знать, да.
    Обычно с адептами безопастности - так и происходит. На словах - Лев Толстой, а на деле...

     
     
  • 4.29, Аноним (29), 19:32, 08/09/2026 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > а на деле...

    А на деле она известная персона и контрибьютор, а ты пишешь только комменты на опеннете. Покажешь свой гитхаб?

     
     
  • 5.31, Аноним (31), 19:55, 08/09/2026 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Да хоть сам Яхве, что это меняет если она пишет system()? Там вон в соседней палате другая известная персона и контрибьютор степень от XOR не отличает. Да и сколько таких (причём куда именитее) было, начиная с Бернштейна с его дырявым кумылом и заканчивая отцами-основателями имена которых каждый ITшник с детства знает, дыры которых сейчас нейронки тесячами затыкают.
     
     
  • 6.70, Аноним (70), 16:45, 09/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    ну ты то профи всех за пояс заткнул?
    непризнанный гений?
     
  • 5.37, Tron is Whistling (?), 20:47, 08/09/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Накатил Qubes? Иди ещё накати.
     
  • 5.39, Аноним (8), 20:49, 08/09/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А ты забавный, я думал, такие мамонты уже вымерли.
     
  • 3.23, Tron is Whistling (?), 18:20, 08/09/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Даже блд в пыхе есть escapeshellarg()
    Но для адептов это сложно.
     
  • 3.28, Аноним (27), 19:09, 08/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Неудивительно, что о нём статья цитируемая на педии :)
     
  • 3.30, Аноним (30), 19:44, 08/09/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Rootkowska
     
  • 3.61, Аноним (61), 12:39, 09/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Рутковска вроде уже лет десять как разработкой кубиков не занимается.
     
     
  • 4.72, Аноним (72), 16:49, 09/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    комментаторы опеннета не знают,
    но осуждают ))) они то смогли..
    а эта.. пффф
     
  • 2.40, User (??), 21:19, 08/09/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Были бы пользователи - была бы проблема. А так - готов поспорить, что Неуловимого Джо ОПЯТЬ не поймали...
     

  • 1.11, опеншлёпивпродакшн (?), 15:08, 08/09/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Зато без "ИИ слопа", ведь даже ИИ предложил заменить system на exec.
     
     
  • 2.18, Аноним (18), 16:10, 08/09/2026 [^] [^^] [^^^] [ответить]  
  • –3 +/
    И потерял возможность запускать скрипты. Действительно, очень равноценная замена.
     
     
  • 3.20, Сладкая булочка (?), 17:25, 08/09/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Но запускалась же конретная программа и передавался путь как аргумент ей.
     
  • 3.32, Аноним (31), 19:56, 08/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    С чего бы? exec умеет то же что system, только с аргументами и окружением работает более явно и строго.
     
     
  • 4.55, тру стори мочи исчо (?), 09:02, 09/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Нет. В справочник загляните сначала, чтобы такую дичь не оглашать.
     

  • 1.12, Аноним (12), 15:27, 08/09/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Это "фича" всех линуксов.
    На каждую вещь своя "программа". Соответственно данные передаются через аргументы командной строки, а то и через переменные окружения.
    Отсюда невозможность нормально защитить эти данные и необходимость их экранировать.
    Т.е. линукс по-умолчанию небезопасен в этом плане. И только предпринимая особые меры безопасности можно иногда сократить число дырок путём например экранирования.

    Ну то есть когда все уже используют ORM тут ещё формируют SQL запрос склеивая его куски плюсиком.

     
     
  • 2.13, Аноним (13), 15:47, 08/09/2026 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Эмм, нет. Косяк именно в сишном вызове system(), который передает указанную строчку в интерпретатор командной строки. Это прямо типичная ошибка новичков, которые язык недавно начали изучать.
    Если что для запуска внешних программ интерпретатор не нужен. Если запускать правильным способом, скажем через execve(), то ничего экранировать не нужно.
     
     
  • 3.15, Аноним (15), 15:57, 08/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Косяк именно в сишном вызове system(),

    в чем косяк то? Косяк в головах нейрослоупоков которые не видят разницы между сценарным интерпретатором и загрузчиком.

    > Если что для запуска внешних программ интерпретатор не нужен.

    ну вот, так в чем же косяк system()? в его существовании?

     
     
  • 4.17, Аноним (13), 15:59, 08/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Имелось в виду косяк в его использовании, а не в самом вызове.
     
  • 4.34, Аноним (31), 20:05, 08/09/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > ну вот, так в чем же косяк system()? в его существовании?

    Вообще-то да - это ужасное решение, которое повсеместно используется как обёртка над fork+exec+wait для ленивых, с гарантированными проблемами как в сабже. И вот это именно то самое место где нейронки так никогда не напишут, а некомпетентные человечки - запросто.

     
     
  • 5.36, Сладкая булочка (?), 20:12, 08/09/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > а некомпетентные человечки - запросто

    Настроить clang-tidy с баном этой функции.

     
  • 5.46, Аноним (15), 23:25, 08/09/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Вообще-то да - это ужасное решение

    что ужасного такого в интерпретаторе команд? Вы им каждый день пользуетесь. Это как ложка с вилкой, там где необходима ложка (для супа) - вилка не годится ни в какую :)

    > И вот это именно то самое место где нейронки так никогда не напишут, а некомпетентные человечки - запросто.

    А ну да, конечно, как в случае с людьми так и в случае с вашими любимыми нейронками, они напишут ровно то, что им велит дядя Сэм или тов. Майор :)

     
     
  • 6.51, alex74 (?), 07:47, 09/09/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 3.16, Аноним (13), 15:58, 08/09/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Собственно что и было сделано коммите с исправлением. https://github.com/QubesOS/qubes-core-admin-linux/commit/bbba4b020ec722c2dc203
     
  • 2.14, Аноним (15), 15:55, 08/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Т.е. линукс по-умолчанию небезопасен в этом плане.

    "интерпретируемых командной оболочкой" - надо понимать, что такое сценарный интерпретатор и уметь отличать его от загрузчика (loader).

     
  • 2.41, Аноним (41), 22:07, 08/09/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > линукс по-умолчанию небезопасен

    "Они ненaвидeли его, потому что он говoрил прaвду"

     
  • 2.48, Sm0ke85 (ok), 07:28, 09/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >На каждую вещь своя "программа".

    Вот Тут твоя логика дала трещину. Иди учи мат. часть.

     
  • 2.54, Tron is Whistling (?), 08:56, 09/09/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Т.е. линукс по-умолчанию небезопасен в этом плане. И только предпринимая особые меры

    Мир вообще небезопасен по умолчанию, смирись.

     
  • 2.60, Аноним (60), 11:42, 09/09/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >Соответственно данные передаются через аргументы командной строки, а то и через переменные окружения.
    >Ну то есть когда все уже используют ORM тут ещё формируют SQL запрос склеивая его куски плюсиком.

    Проблема не в передаче данных через аргументы, а в построении shell команды. Если вызывать программу напрямую, через exec, то и проблемы не будет.

     

  • 1.21, Аноним (21), 17:47, 08/09/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Для меня новость, что есть такая ОС
     
     
  • 2.24, Tron is Whistling (?), 18:24, 08/09/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну зато теперь запомнится.

    - Слухай, тут такая Qubes OS есть. Безопастная. Может?
    - Это в которой system() шел без эскейпинга аргументов вызывали? Не может.

     
  • 2.73, Аноним (73), 16:54, 09/09/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    забудь и
    живи снова в неведении счастливо ))
     

  • 1.42, Аноним (-), 22:26, 08/09/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    В том и прикол, что spawn() - это трудно, а system() - нет.

    Пока вы будете заворачивать spawn(), конкуренты на system() уже далеко уедут.

    Если вы можете пускать в код system() и небезопасные строковые функции - вы быстро налабаете и быстро получите деньги. И смоетесь.

    Если от вас требуют на работе spawn(), безопасность и прочую дисциплину с скрупулезным изучением безопасного си, крестов или даже раста - вы там работаете, чтоб получать копейки от того, что заработал любитель system().

     
  • 1.50, Аноним (50), 07:46, 09/09/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Какой ужас! Компенсаций естественно не будет?
     
  • 1.59, Аноним (60), 11:39, 09/09/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >При этом чистка имени файла ограничивалась вырезанием не-ASCII-символов и двойных кавычек без проверки наличия спецсимволов, интерпретируемых командной оболочкой, таких как "'" и "$".

    Вот прямо типичнейший код на си. Вместо того, чтобы взять построитель запроса, они занимаются ручным ковырянием байтов, которое к тому же ещё и не работает.

     
  • 1.79, Аноним (79), 06:35, 10/09/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Dom0 это что–то связанное с jQuery?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2026 by Maxim Chirkov
    Добавить новость, Поддержать