3

Я прочитал здесь, что любое приложение, работающее в режиме root, может выполнить вызов ядра и выполнить в режиме ядра. Возможно, что ЛЮБОЕ приложение, работающее в режиме root, может выполнить вызов ядра, перейти в режим ядра и изменить область памяти другой программы или испортить раздел памяти операционной системы, потому что почти все учебники, которые я нахожу, говорят, что режим ядра дает ПОЛНЫЙ ДОСТУП к мое оборудование, и если это так, разве это не будет большим недостатком безопасности, когда программа сразу после получения доступа к корневому уровню будет иметь доступ к любой ячейке памяти на RAM/DISK?

(У меня в голове Linux, пока я задаю этот вопрос)
РЕДАКТИРОВАТЬ:
Ну, я действительно убежден в том факте, что в Linux полностью раскрыта память, кто-то может объяснить, если это так же в Windows и Unix

2 ответа2

2

Да, это, безусловно, возможно - многие системы Linux даже предоставляют доступ к памяти через два файла устройства /dev/mem (для физической памяти) и /dev/kmem (для виртуальной памяти). Вы можете получить доступ к виртуальному адресному пространству ядра через /proc/kcore . Конечно, не рекомендуется записывать на эти устройства, так как вы можете легко очистить вашу систему.

Я не уверен, почему это может считаться проблемой безопасности - для записи на эти устройства вам обычно нужно иметь права root, а если у вас есть root-доступ, вы уже можете делать все, что захотите.

2

Вы, кажется, смешиваете яблоки и апельсины.  Процитируем ответ на тот самый вопрос, на который вы ссылаетесь: «Режим ядра и root - это две разные идеи, которые на самом деле не связаны друг с другом.  Концепция запуска процесса от имени root - это термин Unix/Linux, который означает, что вы вошли в систему как администратор системы.  ... Любой процесс, который вы запускаете, будь то пользователь root или обычный пользователь, обычно работает как в режиме пользователя, так и в режиме ядра ».  Таким образом , приложение, работающее от имени пользователя root, обычно не может просто переключиться и начать работать в режиме ядра.  Все, что он может сделать, это то же самое, что может сделать процесс без полномочий root: вызвать системную функцию, которая заставляет ядро операционной системы работать в режиме ядра.

Тем не менее, это правда, что большинство систем на основе Unix предоставляют привилегии пользователя root, которые недоступны для пользователей / процессов без полномочий root.  Например, как указывает user55325, большинство систем на основе Unix имеют псевдоустройства, такие как /dev/mem , /dev/kmem и /proc/kcore которые предоставляют привилегированным процессам доступ к памяти, которая им не принадлежит.  Кроме того, корневые процессы могут kill любой процесс и могут различными способами управлять процессом через /proc .  И, конечно же, root имеет полный доступ к каждому файлу.  Так что, безусловно, верно, что процесс, который получает root-доступ, обладает большими возможностями; но так оно и есть.

По этой причине, если вы не всегда загружаетесь с оптического диска (CD/DVD) или по сети, операционная система хранится в дисковых файлах, и злоумышленник, получивший доступ к вашей машине в качестве пользователя root, может переписать всю ОС, а затем сидеть назад и жду, пока вы перезагрузитесь.  (И, о, да, я почти забыл; корневой процесс тоже может перезагрузить вашу систему.)  Итак, опять же, да, привилегия root очень мощная.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .