ядро: отключение/dev/kmem и/dev/mem

Используя портативное решение (для Unix - любит),

perl -e '`rm -rf "$_"/*.pdf` for "a" .. "z"'

Это будет удалять подкаталоги рекурсивно под a..z директора

8
27.04.2014, 02:13
3 ответа
[114897] Есть слайд дека из Scale 7x 2009 под названием: [115250] Подчинение ядра Linux: Инъекция вредоносного кода через /dev/mem[115251], который содержал эти 2 пули.

Кому это нужно?

X Server (Video Memory & Control Registers)

DOSEmu

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

  2. Ссылки

  3. Энтони Лайнберри на /dev/mem Rootkits - LJ 8/2009 от Мика Бауэра

  4. Кому нужен /dev/kmem?

6
27.01.2020, 20:12

Как вы знаете, /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.

2
27.01.2020, 20:12

Я не включал /dev/memв свою систему с самого начала. Я использую Gentoo Linux, так что это неудивительно, поскольку с этим дистрибутивом Linux вы практически сами собираете каждый пакет, включая ядро ​​Linux.

Никогда не замечал проблем из-за отсутствия /dev/mem, даже при использовании X.org X11. Только сегодня я заметил, что emerge пакета x11-drivers/xf86-video-vesaвыводит сообщение о том, что он требует /dev/mem, вот так:

* This driver requires /dev/mem support in your kernel
*   Device Drivers --->
*     Character devices  --->
*       [*] /dev/mem virtual device support

Поскольку я не устанавливал драйвер VESA для XServer намеренно, а если и так, то только в качестве запасного варианта, мне никогда не приходилось его использовать, и поэтому я не замечал его — до сих пор.

Но это доказывает, что a)X11 больше не нужен /dev/mem, а b)что некоторые видеодрайверы X11 все равно могут это делать.

Более новые видеодрайверы для определенного оборудования, скорее всего, будут работать без него. Точно так же, как современный X.org -X11 (на Gentoo,x11-base/xorg-server)даже не обязательно должен быть suid root , так выглядит прогресс...

1
27.01.2020, 20:12

Теги

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