Я понимаю это /dev/kmem
и /dev/mem
предоставляю доступ к памяти (т.е. сырой оперативной памяти) системы. Я также знаю, что это /dev/kmem
может быть полностью отключено в ядре, и что доступ может быть ограничен для /dev/mem
.
Мне кажется, что необработанный доступ к памяти может быть полезен для разработчиков и хакеров, но зачем мне нужен доступ к памяти через /dev/mem
. AFAIK это нельзя отключить в ядре (в отличие от /dev/kmem
). Мне кажется, что наличие доступа к необработанной памяти, которая может быть потенциально злоупотреблена / использована, просто напрашивается на неприятности.
Есть ли какое-то практическое применение для этого? Требуются ли какие-либо пользовательские программы для правильной работы?
/dev/mem
. Не уверен, что это все еще актуально./dev/mem
. Загрузите модуль, запустите код в режиме ядра. И, кроме того, усиление защиты от злоумышленников с доступом с правами root имеет смысл только в том случае, если есть вещи, которые root не может сделать, что обычно не происходит в типичных установках.man mem
, доступ на запись в / dev / mem отключен исправлениями блокировки ядра, используемыми для поддержки «безопасной загрузки» (блокировка может быть включена без безопасной загрузки). phoronix.com/...Ответы:
Существует слайд-платформа из Scale 7x 2009 под названием: « Подрыв ядра Linux: внедрение вредоносного кода через / dev / mem», который содержал эти 2 маркера.
Из всего, что я нашел в результате поиска, покажется, что эти 2 пули являются лидерами для законного использования.
Ссылки
источник
X server
на моем сервере, и, следовательно, не нужно/dev/mem
. Есть ли способ полностью отключить/dev/mem
в ядре? Я мог только найти «Фильтр доступа к / dev / mem» (CONFIG_STRICT_DEVMEM
).Стоит отметить , что даже если вы отключили
/dev/mem
и/dev/kmem
что память может все еще быть сброшены; взгляните,man proc
чтобы раскрыть/proc/kcore
; это физическая память системы. У действительно хорошего набора инструментов судебной экспертизы есть инструмент, который уже делает это ; он сбрасывает память (и/boot
файлы), чтобы их можно было проанализировать.На самом деле Ubuntu по умолчанию отключает
/dev/kmem
:Ubuntu не отключается,
/dev/mem
потому что это нужно приложениям .Как отключить
/proc/kcore
?Не включайте
CONFIG_PROC_KCORE
при сборке ядра.Как вы отключаете
/dev/mem
?Что ж, просмотр
man mem
дает нам некоторые подробности о том, как он создан:Вы должны быть в состоянии просто
rm -rf /dev/mem
; вы можете отключить на этапе сборки ядра, не включивCONFIG_STRICT_DEVMEM
.Как отключить
/dev/kmem
?Убедитесь, что
CONFIG_DEVKMEM
он не включен при сборке ядра.Как предотвратить холодные атаки?
Что делать , если я был в состоянии отключить
/proc/kcore
,/dev/mem
,/dev/kmem
а затем используется зашифрованный раздел подкачки или не использовать своп вообще? Ну, ваша память может быть просто заморожена и доступна таким образом. Как вы предотвращаете эту атаку? Вы шифруете свою оперативную память; как вы шифруете свою оперативную память? Ты не можешь. Смотрите TRESOR для деталей .источник
/dev/kmem
в своем ядре, и я не вижу ничего/proc/kcore
в моей системе. Но у меня есть/dev/mem
, и я хотел бы отключить его./proc/mem
должно быть/dev/mem
, аналогично для/proc/kmem
.Как известно,
/dev/mem
обеспечивает доступ к физической памяти работающей системы./dev/kmem
обеспечивает доступ к виртуальной памяти ядра. Оба эти символьных устройства могут быть постоянно отключены с помощью параметров конфигурации ядра (код является наиболее авторитетным источником информации, поэтому он используется для справки). Отключение первых двух параметров ниже отключит соответствующие устройства.CONFIG_DEVKMEM
: определяет,/dev/kmem
создается ли при загрузкеCONFIG_DEVMEM
: определяет,/dev/mem
создается ли при загрузкеCONFIG_STRICT_DEVMEM
: если/dev/mem
существует, определяет, ограничен ли доступ к немуВ зависимости от вашего дистрибутива, текущая конфигурация ядра может быть видна с помощью чего-то вроде
zless /proc/config.gz
илиless /boot/config-$(uname -r)
.Я думаю, что первоначальная цель
/dev/mem
состояла в том, чтобы поддержать взаимодействие с отображенными в память периферийными устройствами. Очевидные негативные последствия для безопасности, связанные с доступностью этих виртуальных устройств (например, злоумышленник может на лету исправлять память другого процесса или даже ядра), известен уже как минимум десять лет. Ограничение доступа к/dev/mem
были поддержаны в магистральном ядре с началом 2008 года ,/dev/kmem
также были необязательным , так как вокруг тогда тоже.Десять лет назад кажется, что
X
это зависело/dev/mem
, я не думаю, что это все еще так. Чтобы проверить заявления оX
необходимости,/dev/mem
я вчера удалил виртуальное устройство из своего ноутбука, и с тех пор оно работает на первый взгляд безупречно. В 2017 году, похоже, нет практического применения этих устройств вне исследований и разработок.С точки зрения безопасности рекомендуется удалить эти устройства. Тем не менее, стоит отметить, что удаленный злоумышленник с повышенными привилегиями может читать память за пределами своего адресного пространства. Память других приложений пользовательского пространства может быть доступна с помощью
/proc/<pid>/mem
. Доступ к памяти ядра возможен с помощью/proc/kcore
.источник
Я не включил
/dev/mem
в свою систему с самого начала. Я использую Gentoo Linux, так что это неудивительно, поскольку с помощью этого дистрибутива Linux вы практически самостоятельно собираете каждый пакет, включая ядро Linux.Я никогда не замечал никаких проблем из-за отсутствия
/dev/mem
даже при использовании X.org X11. Только сегодня я заметил, что emerge пакетаx11-drivers/xf86-video-vesa
печатает сообщение о том, что оно требует/dev/mem
, например:Так как я не устанавливал драйвер VESA для XServer намеренно или хотя бы в качестве запасного варианта , мне фактически никогда не приходилось его использовать, и поэтому я его не заметил - до сих пор.
Но это доказывает, что а) X11 больше не нужен
/dev/mem
, и б) что некоторые видеодрайверы X11 все равно могут это сделать.Новые драйверы видео для конкретного оборудования, скорее всего, будут работать без него. Точно так же, как современный X.org-X11 (на Gentoo
x11-base/xorg-server
) больше не должен быть suid root , вот как выглядит прогресс ...источник