The OpenNET Project / Index page

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



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Релиз ОС Qubes 3.1, использующей виртуализацию для изоляции ..., opennews (??), 10-Мрт-16, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


10. "Релиз ОС Qubes 3.1, использующей виртуализацию для изоляции ..."  +/
Сообщение от Вареник (?), 11-Мрт-16, 01:46 
Раньше это назвали бы "микрядерной архитектурой" со строгими ограничениями, а теперь - "гипервизор", "виртуализация процессов".
Ответить | Правка | Наверх | Cообщить модератору

12. "Релиз ОС Qubes 3.1, использующей виртуализацию для изоляции ..."  –1 +/
Сообщение от Анонимо (?), 11-Мрт-16, 01:56 
+1

ещё 10 лет назад я ломал копья на опеннете же по поводу перспективности архитектуры микроядра (хотя и приходилось любить линух за функциональность). Радостно, что время таки расставляет всё по местам.

Ответить | Правка | Наверх | Cообщить модератору

16. "Релиз ОС Qubes 3.1, использующей виртуализацию для изоляции ..."  +/
Сообщение от solardiz (ok), 11-Мрт-16, 02:47 
> ещё 10 лет назад я ломал копья на опеннете же по поводу
> перспективности архитектуры микроядра

10 лет назад, с точки зрения безопасности, микроядро на PC-архитектуре было не нужно. Оно было нужно 20+ лет назад, когда диски и сетевушки работали с PIO, а не с DMA, и оно нужно теперь, когда в процессорах начали появляться IOMMU:

http://theinvisiblethings.blogspot.ru/2010/05/on-formally-ve...

"Without IOMMU there is no security benefit of having a microkernel vs. having a good-old monolithic kernel. Let me repeat this statement again: there is no point in building a microkernel-based system, if we don't correctly use IOMMU to sandbox all the drivers."

А Qubes всё-таки в основном не о драйверах (хотя и это тоже, для NetVM и не только, при наличии IOMMU), а о VM'ах с приложениями. Поэтому есть смысл использовать Qubes даже на процессорах без IOMMU.

Ответить | Правка | Наверх | Cообщить модератору

17. "Релиз ОС Qubes 3.1, использующей виртуализацию для изоляции ..."  +/
Сообщение от Анонимо (?), 11-Мрт-16, 03:32 
> 10 лет назад, с точки зрения безопасности, микроядро на PC-архитектуре было не
> нужно. Оно было нужно 20+ лет назад, когда диски и сетевушки
> работали с PIO, а не с DMA, и оно нужно теперь,
> когда в процессорах начали появляться IOMMU:

Смотрю несколько иначе. Разграничить доступность коду только определённой областью доступа было нужно и вчера и сегодня, и будет нужно всегда. И дрова устройств - лишь частный случай такого кода. (а у x86 процов, кстати, есть аж 4 уровня защиты (protectiong rings) в защищённом режиме, и в самых распространённых ядрах/осях почему-то 2 средних были не у дел... а ведь это потенциал безопасности...)


> "Without IOMMU there is no security benefit of having a microkernel vs.
> having a good-old monolithic kernel.

Несколько голословно (но текст я прочитать не асилил). Попробую взять логически.
Есть монолит ядро, и в нём есть драйвер сетевухи. Этот драйвер может причинить много "пользы" внутри всего ядра, ибо монолит.
Если же сей код ограничить каким-то пространством доступа - то безопасности:
* добавится?
* убавится?
* не изменится?
Думаю, ответ очевиден. Следовательно, "no security benefit" != true

Если брать пример код на пользовательском уровне - то если одна прога не сможет иметь доступа к файлам другой - то это ли не добавляет безопасности? - Добавляет. Именно это и достигается в этой Qubes OS.


> А Qubes всё-таки в основном не о драйверах (хотя и это тоже,
> для NetVM и не только, при наличии IOMMU), а о VM'ах
> с приложениями. Поэтому есть смысл использовать Qubes даже на процессорах без
> IOMMU.

Естественно.
Но в том то и дело, что драйвера-недрайвера - это чисто субъективный стереотип, навязанный монолитным ядром.
Как насчёт драйвера мыльного аккаунта (Thunderbird)?
Или приложения для фильтрации траффика (modprobe xtables)?
И то, и другое - код. И то, и другое источник угроз безопасности. И то, и другое можно и нужно изолировать, предоставляя доступ лишь к необходимым для работы ресурсам.

А то, что там "под капотом" у прокладки "разговора" с железом (PIO, DMA, IOMMU) - это уже нюансы. У микроядра всё равно есть некоторая базовая часть-загрузчик-менеджер (собственно, МИКРО-ядро). И если нет IOMMU, то в помощь приложениям-драйверам будет подсистема ввода-вывода в этом микроядре (точно также, как и управление памятью тоже будет там). Приложения-дрова делают запрос/ответ об I/O не сами, а просят об этом микроядро. Медленнее, чем монолит, но профит очевиден.

Ответить | Правка | Наверх | Cообщить модератору

18. "Релиз ОС Qubes 3.1, использующей виртуализацию для изоляции ..."  +1 +/
Сообщение от solardiz (ok), 11-Мрт-16, 04:37 
> Разграничить доступность коду только определённой областью доступа
> было нужно и вчера и сегодня, и будет нужно всегда.

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

Если же произвольный код уже выполняется, то при доступе такого кода к устройству, поддерживающему DMA, и отсутствии IOMMU, через это устройство можно ограничение на доступ к определенной области памяти обойти (попросить устройство записать/считать куда/откуда хочется).

Но я согласен, что Joanna излишне категорична в процитированном мной утверждении.

> И дрова устройств - лишь частный случай такого кода.

Да.

> (а у x86 процов, кстати, есть аж 4 уровня защиты (protectiong rings) в защищённом
> режиме, и в самых распространённых ядрах/осях почему-то 2 средних были не
> у дел... а ведь это потенциал безопасности...)

По-моему, потенциала там почти нет. Два разных ring 3 процесса (или нити в микроядре) могут быть разделены друг от друга не хуже, чем будучи на разных кольцах. Раз кольца есть, ими можно пользоваться, но и без них было бы почти так же. Вот о моем опыте применения ring 2 не по назначению, и еще о кольцах на не-x86:

https://www.linux.org.ru/news/hardware/11636749#comment-1163...

> Несколько голословно (но текст я прочитать не асилил). Попробую взять логически.
> Есть монолит ядро, и в нём есть драйвер сетевухи. Этот драйвер может
> причинить много "пользы" внутри всего ядра, ибо монолит.
> Если же сей код ограничить каким-то пространством доступа - то безопасности:
> * добавится?
> * убавится?
> * не изменится?
> Думаю, ответ очевиден. Следовательно, "no security benefit" != true

Ответ не очевиден. С точки зрения перфекциониста, если драйвер всё равно может запросить у сетевухи DMA куда угодно, "не изменится". С точки зрения практика, скорее всего, "добавится", т.к. атаки станут сложнее, а более сложное менее надежно, что приведет к тому что меньший их процент достигнет успеха на конкретных системах в конкретных обстоятельствах. Также, часть классов атак и раньше не достигали бы выполнения произвольного кода сразу, и они могут оказаться полностью нейтрализованы. Возможно также, что безопасность "убавится", если реализация этого ограничения привнесет сложность в ядро, вместе с дополнительными багами.

В целом, я обычно за hardening, но "за" и "против" надо оценивать.

> Как насчёт драйвера мыльного аккаунта (Thunderbird)?
> Или приложения для фильтрации траффика (modprobe xtables)?
> И то, и другое - код. И то, и другое источник угроз
> безопасности. И то, и другое можно и нужно изолировать, предоставляя доступ
> лишь к необходимым для работы ресурсам.

Да.

> А то, что там "под капотом" у прокладки "разговора" с железом (PIO,
> DMA, IOMMU) - это уже нюансы. У микроядра всё равно есть
> некоторая базовая часть-загрузчик-менеджер (собственно, МИКРО-ядро). И если нет IOMMU,
> то в помощь приложениям-драйверам будет подсистема ввода-вывода в этом микроядре (точно
> также, как и управление памятью тоже будет там). Приложения-дрова делают запрос/ответ
> об I/O не сами, а просят об этом микроядро. Медленнее, чем
> монолит, но профит очевиден.

Часть проблемы в том, что то, как к конкретному устройству делать запрос об I/O, отличается между устройствами, а значит плохо ложится в такую универсальную прослойку - она снова становится "монолитным ядром", содержащим в себе кусочки кода, специфичные для драйверов разных устройств. Фактически мы получаем разграничение привилегий между частями каждого отдельного драйвера. Наверное, это можно реализовать хорошо, сильно убавив размер этой монолитной прослойки по сравнению с общим размером ядра.

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

Ответить | Правка | Наверх | Cообщить модератору

20. "Релиз ОС Qubes 3.1, использующей виртуализацию для изоляции ..."  –1 +/
Сообщение от Анонимо (?), 11-Мрт-16, 07:24 
> Если же произвольный код уже выполняется, то при доступе такого кода к
> устройству, поддерживающему DMA, и отсутствии IOMMU, через это устройство можно ограничение
> на доступ к определенной области памяти обойти (попросить устройство записать/считать
> куда/откуда хочется).

А вот не совсем...
см. ниже


> По-моему, потенциала там почти нет. Два разных ring 3 процесса (или нити
> в микроядре) могут быть разделены друг от друга не хуже, чем
> будучи на разных кольцах. Раз кольца есть, ими можно пользоваться, но
> и без них было бы почти так же.

Ну, вобщем, да.

> Часть проблемы в том, что то, как к конкретному устройству делать запрос
> об I/O, отличается между устройствами, а значит плохо ложится в такую
> универсальную прослойку - она снова становится "монолитным ядром", содержащим в себе
> кусочки кода, специфичные для драйверов разных устройств.

Счас посмотрел как работает DMA контроллер. Ему в спец. регистр пишется адрес в памяти, куда надо сгружать инфу.
Т.е. где, как и в каком формате в DMA запросе проезжает адрес в памяти - чётко детерминировано. А потому, эта I/O-прослойка будет элементарной.

А чтобы в регистр адреса не писали чего попало - сделать фильтр в I/O-фильтре микроядра, который бы смотрел: есть право доступа у этого драйвера к этой области этой длины или нет (раздачу памяти всё так же контролирует базовая микро-часть).

> P.S. Вижу, кто-то тут "заминусовал" сообщения выше по треду. По-моему, у нас
> нормальная дискуссия по теме, и минусы тут ни к чему, т.к.
> все сообщения являются "сигналом", а не "шумом", несмотря на чуточку разные
> мнения.

Видать сторонники Торвальдса в данном вопросе. Фанаты-маньяки монолита :)

Ответить | Правка | Наверх | Cообщить модератору

38. "Релиз ОС Qubes 3.1, использующей виртуализацию для изоляции ..."  +2 +/
Сообщение от ОШИБКА Отсутствуют данные в поле Name (?), 11-Мрт-16, 15:05 
> Т.е. где, как и в каком формате в DMA запросе проезжает адрес
> в памяти - чётко детерминировано. А потому, эта I/O-прослойка будет элементарной.

А теперь повтори смотрение на DMA-контроллеры всех архитектур поддерживаемых Linux. Начни с ARM, MIPS и PowerPC, потом поговорим о простоте прослойки. И не забудь узнать кто такой (PCI) bus master и чего может.

> в I/O-фильтре микроядра,

Устройства которые bus master - могут к памяти обращаться сами. Драйвер может попросить свое устройство сделать запрос как надо, анализировать все такие варианты путем анализа всех существующих протоколов драйвер-устройство нереально, придется в фильтр включить все драйверы устройств. Поэтому сделали IOMMU. Как MMU, но не со стороны процессора, а со стороны чипсета, так что обращения bus masters фильтруются железом наподобие того как MMU это делает со стороны процессора.

Ответить | Правка | Наверх | Cообщить модератору

41. "Релиз ОС Qubes 3.1, использующей виртуализацию для изоляции ..."  +/
Сообщение от Анонимо (?), 11-Мрт-16, 16:11 
> А теперь повтори смотрение на DMA-контроллеры всех архитектур поддерживаемых Linux. Начни
> с ARM, MIPS и PowerPC, потом поговорим о простоте прослойки.

Простота тоже относительна. Относительно решаемой задачи - секурити без компромисов.


> И не забудь узнать кто такой (PCI) bus master и чего может.

Дань скорости, наследие прошлого...


> Устройства которые bus master - могут к памяти обращаться сами.

Ну что ж, если железо против безопасности - софтом тяжко всё исправить.


> Поэтому сделали IOMMU. Как MMU, но не со стороны процессора, а со стороны чипсета

Ну, логичный шаг.
Т.е. всё-таки имеет место тенденция к разграничению областей доступа. И микроядро придёт в любом случае.

Ответить | Правка | Наверх | Cообщить модератору

49. "Релиз ОС Qubes 3.1, использующей виртуализацию для изоляции ..."  +/
Сообщение от Аноним (-), 16-Мрт-16, 02:18 
> Простота тоже относительна. Относительно решаемой задачи - секурити без компромисов.

Безопаснее всего - не включать. Или хотя-бы к сети не подключаться, но там уже возможны варианты.

Ты включаешь x86 компьютер. Что происходит? Management Engine - слышал? Прошивка подписана Intel, ее нельзя удалить: шатдаун через 30 мин. ME может использовать сеть чипсета, в обход ОС, делать DMA и проч. Даже ОС переставить можно. Исходники ME firmware - где? Подробнее - на сайте libreboot. Мало? Почитай про SMI. А equation умеет прошивку HDD патчить.

> Дань скорости, наследие прошлого...

В настоящем еще интереснее. В современном х86 компьютере есть с десяток служебных процессоров разной степени опасности. Тебе синюю или красную?

> Ну что ж, если железо против безопасности - софтом тяжко всё исправить.

Железо в x86 нашпиговано сюрпризами.

> Т.е. всё-таки имеет место тенденция к разграничению областей доступа.

Да. Но "без компромиссов" там и близко нет, а сколь-нибудь приличный уровень безопасности при наличии выхода в сеть обеспечить - та еще задача. Большинство софта вообще не писалось с security in mind, монолитные ядра в этом плане далеко не хучшие.

> И микроядро придёт в любом случае.

Смотря куда придет. Торвальдс начинал писать Linux на Minix, не став дожидаться когда Hurd допишут. Прошла четверть века - кто и где?

Ответить | Правка | Наверх | Cообщить модератору

42. "Релиз ОС Qubes 3.1, использующей виртуализацию для изоляции ..."  +/
Сообщение от Анонимо (?), 11-Мрт-16, 16:12 
Да, спасибо за ликбез!
И картину прояснили и время сэкономили!
Ответить | Правка | К родителю #38 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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