The OpenNET Project / Index page

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



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

Оглавление

Уязвимость в ядре Linux, позволяющая получить права root, opennews (??), 22-Фев-17, (0) [смотреть все]

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


156. "Уязвимость в ядре Linux, позволяющая получить права root"  –1 +/
Сообщение от andrcmdremail (?), 23-Фев-17, 18:17 
Микроядро породит неизбежные проблемы IPC взаимодействия между процессами, что более медленно из-за частой смены уровней привелегий в рамках процессов и сохранения контекста вызовов. Интерфейсы механизма IPC между процессами и микроядром только усложнят код и породят ещё больше ошибок. При этом не нужно забывать, что ядро Linux имеет хорошую модульность и продуманную архитектуру, не смотря на монолитность, в угоду простоте и скорости работы.

Проблема не в архитектуре ядра - проблема в устаревшей технологии программирования и разработки, когда используется прямой доступ к памяти с ручным опасным управлением её сегментами (ещё и c оператором goto) в привелегированном режиме процессора и это считается нормой в системной и embedded разработке! Опасная технология системной разработки в среде Linux возводится в ранк фетишизма, как бритьё с опасным лезвием.

Но есть альтернативы - языки Rust и D.
Взять Rust.
Rust более сложный general purpose язык чем Си (позиционируется как безопасная альтернатива C++), безопасность заложена концептуально в основу языка, при этом язык по настоящему системный, с прямым и безопасным! доступом к памяти, благодаря умным runtime указателям и деструкторам, которые подчищают неиспользуемую программно память, используя подсчёт ссылок и представлены как типы данных в языке, т.е. указатели типизированные! и всего их два вида, но есть и возможность небезопасного доступа к памяти через объявление unsafe блока кода.

https://doc.rust-lang.org/std/rc/struct.Rc.html - умный указатель с подсчётом ссылок для однопоточного кода

https://doc.rust-lang.org/std/sync/struct.Arc.html - tread-safe тип умных указателей с подсчётом ссылок для многопоточного кода

В Rust используется весьма эффективная давно забытая конструкторно-деструкторная техника программирования, называемая RAII в C++, изобретённая в конце 80-х.
В разной литературе она также называется CADR (Constructor Acquires, Destructor Releases, CADRe) или SBRM (Scope-based Resource Management).

https://en.wikipedia.org/wiki/Resource_acquisition_is_initia...

https://en.wikipedia.org/wiki/Automatic_variable

На Rust можно безопасно писать любые системные программы - драйверы, работающие с оборудованием, подключенным к компьютерным шинам, модули ядра, как интерфейс между двайверами и системными вызовами, API ОС, с её ядром, можно даже своё ядро написать - проект микроядерной ОС Redox на Rust уже есть.

https://redox-os.org

https://github.com/redox-os/redox/

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

177. "Уязвимость в ядре Linux, позволяющая получить права root"  +/
Сообщение от Аноним (-), 23-Фев-17, 20:58 
> настоящему системный, с прямым и безопасным! доступом к памяти, благодаря умным
> runtime указателям и деструкторам, которые подчищают неиспользуемую программно память,
> используя подсчёт ссылок и представлены как типы данных в языке, т.е.
> указатели типизированные! и всего их два вида,

Палишься. Используются владения, заимствования и время жизни. А подсчетом ссылок даже питонщиков не удивишь.
Но вброс был неплох.

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

188. "Уязвимость в ядре Linux, позволяющая получить права root"  –2 +/
Сообщение от Анонимм (??), 23-Фев-17, 22:51 
О, первый внятный ответ.

> Микроядро породит неизбежные проблемы IPC взаимодействия между процессами, что более медленно
> из-за частой смены уровней привелегий в рамках процессов и сохранения контекста
> вызовов.

Счас что просто переключить окно в иксах - столько всего происходит и такая куча процессов взаимодействует - и ничего.

Так что, пока что думаю, что это просто пугало.

Да и есть примеры успешных микроядер (QNX, VxWorks и т.д.), и даже с иксами.


> Интерфейсы механизма IPC между процессами и микроядром только сложнят код
> и породят ещё больше ошибок.

Кода станет больше. Это да.
Но всё как раз упроститься: есть исходники одного сервиса, другого и т.д. А есть исходники интерфейса, общего для всех.
Как раз так сейчас и живёт юзер-левел: каждая прога - в отдельной дире исходников - никто в обморок не падает, что фаерфокс это одни сырцы, а иксы - другие.
Слышали про "разделяй и властвуй"? - Микроядро о этом. Так что, код станет как раз проще: есть интерфейс, одна сторона реализует, другая использует.
Количество ошибок - может и увеличится (поначалу) - возможно. Но это не вся правда. Ведь в микроядре сырцы ж принадлежат к разному уровню доступа. И критичным будет именно код самого микроядра и пары неотъемлемых сервисов - это несколько десятков тысяч строк (а не неск миллионов, как сейчас). Вылизать десятки тысяч строк несказанно проще, чем неск миллионов. Так что, число КРИТИЧЕСКИХ ошиок будет стремиться к нулю. А некритических - они будут уже некритичны. Что и требовалось.


> При этом не нужно забывать, что
> ядро Linux имеет хорошую модульность и продуманную архитектуру, не смотря на
> монолитность, в угоду простоте и скорости работы.

Речь о безопасности и надёжности сейчас, а не простоте и скорости.
Эта самая "продуманная" архитектура порождает проблемы, как в данном посте. (левый модуль ведёт к локаруту!) Так что, давайте не будем о продуманности...


> проблема в устаревшей технологии программирования ... как бритьё
> с опасным лезвием.

Да, это согласен. Как-то бы ближе к каким-то шаблонам в коде - было бы больше самоконтроля в модулях.
Но это просто понижает вероятность подобных проблем, но не закрывает вопрос.


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

И заметьте, эти накладные расходы Вы не относите на счёт падения производительности, как то делаете по микроядреному IPC.
Почему?


> На Rust можно безопасно писать любые системные программы - драйверы...

Но как совершенно очевидно, любая безопасность значит доп. проверки, что требует доп. ресурсов, но эти затраты Вы снова не отмечаете. Стереотипы? Дескать где-то кто-то сказал, что "микроядро - это тормозно", а "руст - это круто, стильно, модно". Но нужно же реально оценивать все + и - всех подходов.


> можно даже своё ядро написать

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

> проект микроядерной ОС Redox на Rust уже есть.
> https://redox-os.org
> https://github.com/redox-os/redox/

Да, интересно. И заметьте: микроядро. Они не боятся тормозов?

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

193. "Уязвимость в ядре Linux, позволяющая получить права root"  –1 +/
Сообщение от Аноним (-), 24-Фев-17, 05:08 
Аргументация на уровне ПТУ. То, что на опеннете пачка фанбоев линукс годами вопила "линукс - это круто, стильно, модно" это тоже туфта была, да? Нужно же было реально оценивать все + и - всех подходов, да, родной?
Ответить | Правка | Наверх | Cообщить модератору

199. "Уязвимость в ядре Linux, позволяющая получить права root"  +/
Сообщение от Анонимм (??), 24-Фев-17, 11:50 
А разве нет?
Ответить | Правка | Наверх | Cообщить модератору

208. "Уязвимость в ядре Linux, позволяющая получить права root"  +/
Сообщение от Michael Shigorinemail (ok), 24-Фев-17, 13:22 
> Аргументация на уровне ПТУ. То, что на опеннете пачка фанбоев линукс годами
> вопила "линукс - это круто, стильно, модно" это тоже туфта была, да?

Да.  И им, как и фанбоям фри (или отдельно взятых слаки, генты, арчика, убунточки -- особенно после выхода очередной книжки или очередной тогда ещё бесплатной рассылки дисков) это некоторые из нас терпеливо или не очень объясняли.

> Нужно же было реально оценивать все + и - всех подходов, да, родной?

Это свойственно специалистам или хотя бы просто людям честным, но никак не тем, кто ведётся на "круто".

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

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

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




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

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