Доклад Александра Попова о безопасности ядра Linux был глубоким и запоминающимся🔝 Как и обещали, мы собрали все оставшиеся вопросы после трансляции и попросили Александра ответить на них для нашего канала:
Какая домашняя и рабочая ОС у Александра?
Fedora, Ubuntu, Debian. У меня много систем.
Когда вы говорили про контроль потока выполнения, то упомянули про способ защиты, основанный на контроле "джампов" только в начало функций. А как это реализовано?
Контроль потока управления реализуется с помощью инструментации кода на этапе компиляции. Иногда также используются специальные функции центрального процессора. На эту тему есть классная обзорная статья по выступлению Кейса Кука: https://lwn.net/Articles/810077
Разве не существует ситуаций, при которых нарушение потока выполнения осуществляется легитимными средствами? Например антивирусными средствами при установке хуков на функции?
Я думаю, если какое-то навесное средство защиты намеренно нарушает штатную работу системы, то это плохое средство защиты.
Антивирус, работающий в контексте ядра, не способен защитить от эксплуатации ядерных уязвимостей. Могу подтвердить на конкретном примере. Вот статья по моему исследованию защиты LKRG для ядра Linux: https://xakep.ru/2022/01/25/lkrg-linux
Все серьезно и круто. Как обеспечивать безопасность Linux реально? Никогда не будет такого продвинутого человека. Сканеры? Какие
Сканеры могут помочь, если ты уже построил модель угроз для своей системы и знаешь, как именно надо ее сканировать.
Можно ли Kconfig в пайплайн задеплоить, чтобы автоматически на стейдже изменять некоторые параметры ядра перед его билдом на следующем стейдже?
Да, можно. Такая задача стоит.
Это помогло бы выполнить детальное тестирование производительности: https://github.com/a13xp0p0v/kconfig-hardened-check/issues/66#issuecomment-1342846087
Присоединяйтесь, присылайте pull request или участвуйте в обсуждениях. Буду рад!
Получается, всё равно надо каждую опцию вручную проверять, что она делает, чтобы не рисковать превращением сервера на проде в кирпич?
Совершенно верно!
Нужно понимать, на что влияет конкретная опция, и выполнять функциональное тестирование твоей нагрузки с этой опцией на тестовой системе.
Какая домашняя и рабочая ОС у Александра?
Fedora, Ubuntu, Debian. У меня много систем.
Когда вы говорили про контроль потока выполнения, то упомянули про способ защиты, основанный на контроле "джампов" только в начало функций. А как это реализовано?
Контроль потока управления реализуется с помощью инструментации кода на этапе компиляции. Иногда также используются специальные функции центрального процессора. На эту тему есть классная обзорная статья по выступлению Кейса Кука: https://lwn.net/Articles/810077
Разве не существует ситуаций, при которых нарушение потока выполнения осуществляется легитимными средствами? Например антивирусными средствами при установке хуков на функции?
Я думаю, если какое-то навесное средство защиты намеренно нарушает штатную работу системы, то это плохое средство защиты.
Антивирус, работающий в контексте ядра, не способен защитить от эксплуатации ядерных уязвимостей. Могу подтвердить на конкретном примере. Вот статья по моему исследованию защиты LKRG для ядра Linux: https://xakep.ru/2022/01/25/lkrg-linux
Все серьезно и круто. Как обеспечивать безопасность Linux реально? Никогда не будет такого продвинутого человека. Сканеры? Какие
Сканеры могут помочь, если ты уже построил модель угроз для своей системы и знаешь, как именно надо ее сканировать.
Можно ли Kconfig в пайплайн задеплоить, чтобы автоматически на стейдже изменять некоторые параметры ядра перед его билдом на следующем стейдже?
Да, можно. Такая задача стоит.
Это помогло бы выполнить детальное тестирование производительности: https://github.com/a13xp0p0v/kconfig-hardened-check/issues/66#issuecomment-1342846087
Присоединяйтесь, присылайте pull request или участвуйте в обсуждениях. Буду рад!
Получается, всё равно надо каждую опцию вручную проверять, что она делает, чтобы не рисковать превращением сервера на проде в кирпич?
Совершенно верно!
Нужно понимать, на что влияет конкретная опция, и выполнять функциональное тестирование твоей нагрузки с этой опцией на тестовой системе.