Как делает mmap'ing/dev/mem, работают несмотря на то, чтобы быть от непривилегированного режима?

FreeBSD имеет замечательное руководство.

http://www.freebsd.org/doc/en/books/handbook/boot.html

4
14.11.2014, 14:15
3 ответа

, позволяющий доступу к / dev / mem неподваривающимися процессами, действительно будет проблемой безопасности и не должна быть разрешена.

На моей системе ls -l / dev / mem выглядит так:

crw-r----- 1 root kmem 1, 1 Sep  8 10:12 /dev/mem

Итак CORT может прочитать и написать его, члены KMEM Группа (из которых не может быть ничего), может прочитать ее, но не писать, и все остальные не могут открыть его вообще. Так что это должно быть безопасно.

Если ваш / dev / mem - это что-то вроде шахты, ваш безвивальный процесс даже не смогли открыть файл вообще, не говоря уже MMAP .

Проверьте разрешения / dev / mem в вашей системе, чтобы убедиться, что они защищены!

7
27.01.2020, 20:47

Адреса, видимые для пользовательского процесса (независимо от того, работает ли он как root или непривилегированный пользователь), являются виртуальными адресами, которые MMU преобразует в физические адреса через таблицы страниц. Настройка таблиц страниц - это привилегированная операция, которая может выполняться только кодом ядра; однако после того, как таблицы страниц установлены, доступ к памяти разрешен в пользовательском режиме.

Конкретно, ваш код использует mmap , чтобы запросить у ядра настройку таблиц страниц, чтобы разрешить доступ к заданному диапазону физической памяти. Ядро проверяет привилегии процесса (у него есть доступ для чтения / записи к / dev / mem ) и настраивает таблицы страниц, чтобы разрешить ему доступ к физической памяти.

4
27.01.2020, 20:47

Значение leds - это виртуальный адрес. Пока оно находится в пространстве пользователя текущего процесса, процесс может обращаться к нему напрямую через инструкции типа leds[0] = val без необходимости находиться в привилегированном режиме, независимо от того, куда в оперативной памяти сопоставлен этот виртуальный адрес

.
0
27.01.2020, 20:47

Теги

Похожие вопросы