У меня было несколько вопросов по защите записи на странице памяти ядра Linux.
Как я могу выяснить, защищен ли код ядра (текстовый сегмент) от записи или нет.Я могу посмотреть на /proc/<process-id>/map, чтобы увидеть карту памяти для различных процессов.Но не уверен, где искать карту памяти кода ядра.
/proc/<process-id>/map
Если сегмент кода ядра защищен от записи, тогда возможно, что страницы сегмента кода будут перезаписаны любым другим ядромкод уровня.Другими словами, защищает ли защита от записи на странице текстового сегмента защиту от записи только кода пользовательского пространства или она предотвращает запись даже из кода пространства ядра.
Спасибо
Код, работающий в ядре, имеет прямой доступ к таблицам страниц для текущего адресного пространства, поэтому он может проверить доступ на запись, изучив их. Вероятно, есть функции, которые помогут вам с этой проверкой, но я недостаточно знаком с кодом mm, чтобы указать на них. Есть ли более простой способ? Я не уверен.
Текст ядра никогда не должен быть доступен для записи из пространства пользователя. Текст также может быть защищен от записи из кода ядра (я думаю, это то, о чем вы говорите). Это только базовая защита от ошибок. Код ядра, если он действительно этого хочет, может отключить эту защиту, напрямую изменив таблицы страниц.
Об этом говорит одна газета.По сути, он использует небольшой гипервизор для защиты ядра ОС.
SecVisor: крошечный гипервизор для обеспечения целостности кода ядра на протяжении всей жизни для товарных ОС.