Я прочитал здесь, что любое приложение, работающее в режиме root, может выполнить вызов ядра и выполнить в режиме ядра. Возможно, что ЛЮБОЕ приложение, работающее в режиме root, может выполнить вызов ядра, перейти в режим ядра и изменить область памяти другой программы или испортить раздел памяти операционной системы, потому что почти все учебники, которые я нахожу, говорят, что режим ядра дает ПОЛНЫЙ ДОСТУП к мое оборудование, и если это так, разве это не будет большим недостатком безопасности, когда программа сразу после получения доступа к корневому уровню будет иметь доступ к любой ячейке памяти на RAM/DISK?
(У меня в голове Linux, пока я задаю этот вопрос)
РЕДАКТИРОВАТЬ:
Ну, я действительно убежден в том факте, что в Linux полностью раскрыта память, кто-то может объяснить, если это так же в Windows и Unix
Будут ли приложения, работающие в режиме root, перезаписывать раздел памяти ОС или другой программы?
2 ответа
Да, это, безусловно, возможно - многие системы Linux даже предоставляют доступ к памяти через два файла устройства /dev/mem
(для физической памяти) и /dev/kmem
(для виртуальной памяти). Вы можете получить доступ к виртуальному адресному пространству ядра через /proc/kcore
. Конечно, не рекомендуется записывать на эти устройства, так как вы можете легко очистить вашу систему.
Я не уверен, почему это может считаться проблемой безопасности - для записи на эти устройства вам обычно нужно иметь права root, а если у вас есть root-доступ, вы уже можете делать все, что захотите.
Вы, кажется, смешиваете яблоки и апельсины. Процитируем ответ на тот самый вопрос, на который вы ссылаетесь: «Режим ядра и 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 очень мощная.