Головная боль любой ОС — разграничение доступа и уязвимости, которые приводят к повреждению памяти. Исторически сложилось так, что для создания ОС используются языки программирования, которые имеют определенные проблемы при неверной обработке памяти.
В ОС Linux с точки зрения защиты от различных атак на разграничение доступа и эксплуатацию уязвимостей используют следующие механизмы:
LSM фреймворк — механизм перехвата системных функций для обработки расширениями ядра Linux;
KASLR — рандомизация адресного пространства ядра;
HW-Vuln — митигации и патчи, которые используются против Hardware уязвимостей (Meltdown, Spectre, и т.д.);
Параметризация сборки и запуска ядра. Большое количество работающих алгоритмов в ядре — это потенциальный вектор для атаки, поэтому здесь исходят из минимально необходимого функционала, который можно оставить и при этом максимально уменьшить возможности проведения атак.
Большая часть механизмов противодействия атакам на разграничение доступа и эксплуатации уязвимостей находится в разделе linux/security
Здесь в явном виде представлены модули ядра, которые можно использовать для улучшения механизмов защиты. Есть только маленькая неприятность — некоторые модули из этой директории не могут быть совместимы. На сегодняшний день, к сожалению, нет метода использования сразу несколько модулей LSM. Поэтому предполагается, что тот, кто хочет собрать себе ядро для своей ОС, должен самостоятельно решить, что за модуль ему подойдет больше.
В директории "security" есть описания для защит от различных техник, которые позволяют проводить эксплуатацию уязвимостей. Например — min_addr. Этот механизм защиты, который резервирует адреса в оперативной памяти, которые находятся рядом с нулевым адресом. Сделано это для того, чтобы нельзя было использовать начальные страницы в оперативной памяти для хранения данных эксплойта. Часть остальных «противодействий» в ядре запускается только с использованием дополнительных опций запуска ядра и компиляции. Обнаружить эти данные можно в hardening конфиге. Вся информация предоставляется только как описание отдельных параметров.
Выходит, что механизмы есть, но на выбор нужно собирать себе обойму самостоятельно. Это не удивительно, так как ядро Linux предоставляется для большого количества дистрибутивов, и поэтому разработчики отдельных дистрибутивов должны заниматься более тонкой настройкой. Давайте попытаемся выяснить, а что работает в конкретных дистрибутивах.
Популярный дистрибутив, который используется и как сервер, и для десктопов. Проверять будем с помощью вот этого инструмента — kconfig hardened check. Инструмент проверяет текущую настройку ядра с точки зрения безопасности и демонстрирует, какие параметры были установлены при установке системы. Репозиторий постоянно обновляется, поэтому список подсистем защит и параметров компиляции ядра намного больше того, что мы смогли обнаружить при исследовании исходного кода. Репозиторий предоставляет скрипт на Python для проверки опций в уже собранном дистрибутиве. Стоит отметить, что без использования эталонного конфига, инструмент показывает информацию по дистрибутиву, не указывая, что есть. Он показывает, что желательно бы иметь в качестве установленных параметров. Запускать проверку можно так:
kconfig-hardened-check -p X86_64 -c kspp-recommendations-x86-64.config
Вообще в репозитории есть 2 вида конфигов — обычный, который создан для конкретного дистрибутива, и рекомендуемый с точки зрения наибольшего количества безопасных опций. Ресурс kernsec характеризует KSSP конфиг как наиболее параноидальный с точки зрения количества применяемых параметоров.
Для исследования Debian был выбран неофициальный дистрибутив Debian, а его модификация — Kali Linux. Этот дистрибутив, который используют для тестирования на проникновение, посмотрим что у него у самого с параметрами безопасности:
Дистрибутив несмотря на то, что используется для узкого спектра задач все же содержит в себе достаточное количество опций и параметров ядра для противодействия атакам.
Таким образом можно выяснять, как настроен тот дистрибутив, которым вы пользуетесь на базе ядра ОС Linux.
В данном разделе перечислены опции sysctl и опции загрузки ядра (kernel cmdline parameters), которые позволяют усложнить эксплуатацию уязвимостей в ядре Linux.
СЗ-1 Включить защиту JIT-компилятора eBPF ядра Linux В эксплойтах для ядра Linux может использоваться техника JIT spraying. Чтобы предотвратить атаки с применением данной техники, следует включить механизм защиты JIT-компилятора eBPF.
Рекомендации по настройке: установить значение опции sysctl net.core.bpf_jit_harden=2.
Класс: влияет на локальный вектор атаки.
Последующие ограничения: нет.
Снижение производительности: данное средство защиты незначительно замедляет только движок eBPF JIT. Его замедление на 8% можно измерить на микробенчмарке из test_bpf.ko. С включением bpf_jit_harden движок eBPF JIT все равно остается почти в два раза быстрее, чем интерпретатор eBPF.
СЗ-2 Инициализировать нулем динамическую память ядра при выделении Инициализация динамической памяти ядра нулем при выделении затрудняет эксплуатацию уязвимостей типа Use After Free (использование после освобождения). Данная технология успешно применяется в ядре Linux для Android.
Безопасное значение по умолчанию также можно настроить с помощью параметра компиляции ядра Linux CONFIG_INIT_ON_ALLOC_DEFAULT_ON.
Рекомендации по настройке: установить значение опции загрузки ядра init_on_alloc=1.
Класс: влияет на сетевой и локальный вектор атаки.
Последующие ограничения: нет.
Снижение производительности: возможно незначительное падение производительности (считается приемлемым для Android).
СЗ-3. Запретить слияние кэшей slab-аллокатора ядра Запрет слияния кэшей slab-аллокатора ядра существенно затрудняет эксплуатацию повреждения памяти в динамической памяти ядра (heap).
Рекомендации по настройке: установить опцию загрузки ядра slab_nomerge.
Класс: влияет на сетевой и локальный вектор атаки.
Последующие ограничения: нет.
Снижение производительности: нет.
СЗ-4. Включить IOMMU Модуль управления памятью для операций ввода-вывода (IOMMU) ограничивает доступ к системной памяти для устройств на шине ввода-вывода, например PCI. Это необходимо для изоляции устройств и противодействия DMA-атакам. Для повышения безопасности системы следует включить IOMMU.
Примечание. Степень защиты от DMA-атак зависит от возможностей IOMMU на конкретной платформе, а также от настройки доменов IOMMU со стороны прошивки и операционной системы.
Рекомендации по настройке: установить значения для следующих опций загрузки ядра:
iommu=force iommu.strict=1 iommu.passthrough=0 Класс: влияет на физический вектор атаки.
Последующие ограничения: нет. При этом необходимо обязательно проверить, что после установки данных параметров устройства на шине ввода-вывода работают корректно.
Снижение производительности: возможно при определенных сценариях.
СЗ-5 Включить рандомизацию расположения стека ядра Рандомизация расположения стека ядра при каждом очередном системном вызове мешает работе эксплойтов, использующих данные в стеке ядра.
Рекомендации по настройке: установить значение опции загрузки ядра randomize_kstack_offset=1.
Класс: влияет на сетевой и локальный вектор атаки.
Последующие ограничения: нет.
Снижение производительности: сопоставимо с погрешностью измерения.
СЗ-6 Включить средства защиты от аппаратных уязвимостей центрального процессора В ядре Linux присутствуют средства защиты от аппаратных уязвимостей центрального процессора, также известных как Transient Execution Vulnerabilities, таких как Meltdown, Spectre, MDS. Параметр загрузки ядра mitigations позволяет включить эти средства защиты.
Рекомендации по настройке: возможны следующие варианты настройки:
mitigations=auto — все средства защиты будут включены, однако для архитектуры x86 при этом останется включенной одновременная многопоточность (Simultaneous Multithreading, SMT), даже если эта технология подвержена указанным уязвимостям; mitigations=auto,nosmt — будут использоваться все средства защиты, для архитектуры x86 будет дополнительно отключена технология SMT, если она уязвима. Примечание. Установка значения auto,nosmt может привести к снижению производительности.
При принятии решения о том, включать ли данные средства защиты, необходимо учитывать следующие факторы:
модель безопасности информационной системы; необходимость исполнения недоверенного кода в конкретной системе; использование средств виртуализации в конкретной системе. Примечание. Многие из данных средств защиты для архитектуры x86 требуют также обновления микрокода.
Класс: влияет на локальный вектор атаки.
Последующие ограничения: нет.
Снижение производительности: зависит от типа нагрузки системы, поэтому рекомендуется предварительно провести нагрузочное тестирование информационной системы.
СЗ-7 Включить изоляцию таблиц страниц ядра Аппаратная уязвимость Meltdown (Spectre v3, CVE-2017-5754) позволяет злоумышленнику получить несанкционированный доступ на чтение к привилегированной памяти (памяти ядра ОС). Изоляция таблиц страниц ядра (Kernel Page Table Isolation, KPTI) затрудняет проведение данной атаки. Кроме того, механизм KPTI предотвращает исполнение пользовательского кода из контекста ядра (этот метод эксплуатации уязвимостей называется ret2usr).
Рекомендации по настройке: установить значение опции загрузки ядра pti=on.
Класс: влияет на сетевой и локальный вектор атаки.
Последующие ограничения: нет.
Снижение производительности: Возможно снижение быстродействия, которое зависит от типа функциональной нагрузки ОС. Для точного ответа необходимо тестирование производительности системы с типовой нагрузкой.
СЗ-8. Запретить аллокацию первых страниц виртуальной памяти Для пользовательских процессов не следует разрешать аллокацию первых страниц виртуальной памяти, так как это может быть использовано атакующим для эксплуатации уязвимостей разыменования нулевого указателя в ядре. Рекомендуем настроить sysctl-параметр vm.mmap_min_addr, чтобы запретить выделение первых 64 KiB адресного пространства.
Безопасное значение по умолчанию также можно настроить с помощью параметра компиляции ядра Linux CONFIG_DEFAULT_MMAP_MIN_ADDR.
Рекомендации по настройке: установить значение опции sysctl vm.mmap_min_addr=65536.
Примечание. Для 32-битной микроархитектуры arm из-за особенностей загрузчика следует использовать vm.mmap_min_addr=32768.
Класс: влияет на локальный вектор атаки.
Последующие ограничения: нет. Установка данного параметра не влияет на нормальную функциональность современных пользовательских программ.
Снижение производительности: нет.
Уменьшение периметра атаки ядра Linux ПА-1. Ограничить доступ к журналу ядра Доступ непривилегированных пользователей к журналу ядра с помощью команды dmesg приводит к утечке информации, которой может воспользоваться атакующий при эксплуатации уязвимостей ядра. Следует ограничить доступ к журналу ядра для непривилегированных пользователей: он должен быть доступен только администраторам системы, имеющим разрешение CAP_SYSLOG.
Рекомендации по настройке: установить значение опции sysctl kernel.dmesg_restrict=1.
Класс: влияет на локальный вектор атаки.
Последующие ограничения: нет. Это не вредит обычным сценариям использования систем.
Снижение производительности: нет.
ПА-2. Предотвратить утечку информации об адресах объектов ядра через /proc и другие интерфейсы При эксплуатации уязвимостей в ядре Linux атакующий может воспользоваться утечкой информации через /proc и другие интерфейсы. Чтобы ее предотвратить, следует включить механизм замены на 0 для адресов объектов ядра, доступных через данные интерфейсы.
Рекомендации по настройке: установить значение опции sysctl kernel.kptr_restrict=2.
Класс: влияет на локальный вектор атаки.
Последующие ограничения: это в некоторой мере затрудняет отладку ядра Linux для разработчиков, но никак не влияет на обычные сценарии использования систем.
Снижение производительности: нет.
ПА-3. Ограничить доступ к событиям производительности События производительности (performance events) представляют ценность для атакующего. Следует ограничить доступ к событиям производительности для непривилегированных пользователей: данная информация должна быть доступна только администраторам системы, имеющим разрешение CAP_PERFMON.
Рекомендации по настройке: установить значение опции sysctl kernel.perf_event_paranoid=3.
Класс: влияет на локальный вектор атаки.
Последующие ограничения: нет. Это не вредит обычным сценариям использования систем.
Снижение производительности: нет.
ПА-4. Отключить системный вызов kexec_load() С помощью системного вызова kexec_load() атакующий может подменить образ ядра и нарушить цепочку доверенной загрузки. Это один из способов установки руткитов в Linux-системах. Следует отключить системный вызов kexec_load().
Рекомендации по настройке: установить значение опции sysctl kernel.kexec_load_disabled=1.
Класс: влияет на локальный вектор атаки.
Последующие ограничения: сценарии использования систем, задействующих kexec_load(), становятся недоступны. Однако системы с повышенными требованиями к безопасности и с построенной цепочкой доверенной загрузки не используют такие сценарии.
Снижение производительности: нет.
ПА-5. Ограничить использование user namespaces Функциональность user namespaces (USER_NS) позволяет независимо назначать идентификаторы пользователей (UID) внутри контейнеров Linux. В частности, с ее помощью можно создать ненастоящего пользователя root, который будет администратором только в конкретном контейнере.
Функциональность USER_NS используется веб-браузерами для изоляции своих процессов друг от друга. Однако данная функциональность критически увеличивает поверхность атаки ядра Linux, так как ненастоящий пользователь root внутри контейнера имеет доступ к привилегированным API ядра.
Многие эксплойты для ядра Linux работают именно из USER_NS. Поэтому множество авторитетных источников рекомендуют отключать USER_NS, если эта функциональность не является критически важной для выполнения бизнес-задачи информационной системы.
Обзор дискуссии о USER_NS в списке рассылки LKML: https://lwn.net/Articles/673597/
Рекомендации по настройке: установить значение опции sysctl user.max_user_namespaces=0.
Класс: влияет на локальный вектор атаки.
Последующие ограничения: если система на базе Linux не использует user namespaces для выполнения своей задачи, то установка данного параметра никак не повлияет на работу системы. Рекомендуется проверить функциональность на тестовой системе после настройки.
Снижение производительности: нет.
ПА-6. Запретить системный вызов bpf() для непривилегированных пользователей Системный вызов bpf() позволяет использовать технологию eBPF (extended Berkeley Packet Filter) для загрузки кода в ядро Linux. Многие атаки на ядро Linux становятся возможными из-за того, что системный вызов bpf() доступен непривилегированным пользователям. Следует запретить системный вызов bpf() для непривилегированных пользователей.
Рекомендации по настройке: установить значение опции sysctl kernel.unprivileged_bpf_disabled=1.
Класс: влияет на локальный вектор атаки.
Последующие ограничения: если непривилегированные процессы в системе на базе Linux не используют BPF для выполнения своей задачи, то установка данного параметра никак не повлияет на работу системы. Рекомендуется проверить функциональность на тестовой системе после настройки.
Снижение производительности: нет.
ПА-7. Запретить системный вызов userfaultfd() для непривилегированных пользователей Системный вызов userfaultfd() часто используется атакующими в эксплойтах для уязвимостей ядра Linux. Один из многочисленных примеров: https://a13xp0p0v.github.io/2021/02/09/CVE-2021-26708.html.
Данная функциональность, доступная непривилегированному пользователю, позволяет атакующему построить надежный эксплойт-примитив для выполнения heap spraying: https://duasynt.com/blog/linux-kernel-heap-spray.
Следует запретить системный вызов userfaultfd() для непривилегированных пользователей.
Рекомендации по настройке: установить значение опции sysctl vm.unprivileged_userfaultfd=0.
Класс: влияет на локальный вектор атаки.
Последующие ограничения: нет, начиная с версии ядра 5.11. В ядре Linux версии выше 5.11 был изменен принцип работы данного параметра. Теперь вместо запрета userfaultfd() для непривилегированных пользователей установка vm.unprivileged_userfaultfd=0 запрещает им использовать данный системный вызов для памяти ядра. Это предотвращает атаки с помощью userfaultfd() и при этом не вредит обычным сценариям использования систем. Для систем, использующих более старое ядро Linux, рекомендуется проверить функциональность на тестовой системе после настройки.
Снижение производительности: нет.
ПА-8. Запретить автоматическую загрузку модулей ядра, отвечающих за поддержку дисциплины линии терминала Модули ядра Linux, отвечающие за поддержку дисциплины линии (ldisc) для терминала (tty), могут содержать уязвимости, которые позволяют атакующему повысить привилегии в системе. Следует отключить автоматическую загрузку таких модулей, чтобы уменьшить периметр атаки ядра.
Рекомендации по настройке: установить значение опции sysctl dev.tty.ldisc_autoload=0.
Класс: влияет на локальный вектор атаки.
Последующие ограничения: модули ldisc могут быть загружены только привилегированным пользователем. Это не вредит обычным сценариям использования систем.
Снижение производительности: нет.
ПА-9. Отключить vsyscall Если устаревший интерфейс vsyscall включен, то ядро размещает функции vsyscall по фиксированным адресам 0xffffffffff600x00, что дает атакующему большие возможности при перехвате потока управления. Следует отключить этот устаревший механизм, если в его использовании нет необходимости.
Рекомендации по настройке: установить значение опции загрузки ядра vsyscall=none.
Класс: влияет на локальный вектор атаки.
Последующие ограничения: это никак не помешает, если на системе не запускаются статически слинкованные исполняемые файлы и программы, использующие glibc до версии 2.14.
Снижение производительности: нет.
ПА-10. Отключить монтирование debugfs Виртуальная файловая система debugfs дает дополнительные возможности атакующему, а также значительно увеличивает периметр атаки ядра. Необходимо отключить монтирование debugfs. Кроме того, если есть возможность, следует полностью отключить эту функциональность.
Рекомендации по настройке: установить значение опции загрузки ядра debugfs=no-mount (или лучше off).
Класс: влияет на локальный вектор атаки.
Последующие ограничения: установка данного параметра делает интерфейсы debugfs недоступными для прикладных программ, поэтому предварительно стоит уточнить необходимость в таком доступе для них.
Снижение производительности: нет.
ПА-11. Отключить TSX Технология Transactional Synchronization Extensions (TSX), которая присутствует в процессорах Intel, подвержена аппаратной уязвимости TSX Asynchronous Abort (TAA) (CVE-2019-11135). Следует отключить технологию TSX, если система не работает с транзакционной памятью.
Рекомендации по настройке: установить значение опции загрузки ядра tsx=off.
Класс: влияет на локальный вектор атаки.
Последующие ограничения: установка данного параметра отключает инструкции TSX-NI (Transactional Synchronization Extensions New Instructions) для работы с транзакционной памятью.
Снижение производительности: нет.
ПА-12. Ограничить опасное использование механизма TIOCSTI Устаревший ioctl-вызов TIOCSTI для терминала (tty) позволяет атакующему выполнить локальное повышение привилегий в системе. Этот механизм не должен быть доступен для непривилегированных пользователей. В ядре Linux с версии 6.2 можно ограничить использование TIOCSTI с помощью sysctl-опции dev.tty.legacy_tiocsti.
Безопасное значение по умолчанию также можно настроить с помощью отключения параметра компиляции ядра Linux CONFIG_LEGACY_TIOCSTI.
Рекомендации по настройке: установить значение опции sysctl dev.tty.legacy_tiocsti=0.
Класс: влияет на локальный вектор атаки.
Последующие ограничения: нет. Установка данного параметра не влияет на нормальную функциональность современных пользовательских программ. Однако после настройки рекомендуем проверить работу tty.
Снижение производительности: нет.
Настройка средств защиты пользовательского пространства со стороны ядра Linux ПП-1. Запретить подключение к процессам с помощью ptrace() Атакующие могут подключаться к процессам с помощью системного вызова ptrace(), что позволяет им перехватывать SSH-сессии и внедрять произвольный код. Следует установить ограничения на использование ptrace().
Рекомендации по настройке: установить значение опции sysctl kernel.yama.ptrace_scope=3.
Класс: влияет на локальный вектор атаки.
Последующие ограничения: нет. Механизм ptrace используется разработчиками при отладке. Системы в промышленной эксплуатации его не используют.
Снижение производительности: нет.
ПП-2. Запретить небезопасный переход по символическим ссылкам В Linux при обработке символических ссылок (symlinks) может возникать состояние гонки. Ошибки такого типа используются для атак с целью повышения привилегий в системе.
Пример атаки: привилегированный процесс проверяет отсутствие некоторого файла, который собирается создать. В момент между этой проверкой и созданием файла атакующий может успеть создать символическую ссылку с таким же именем, но указывающую на другой файл. В результате привилегированный процесс произведет запись в файл, указанный атакующим.
Следует запретить небезопасный переход по символическим ссылкам.
Рекомендации по настройке: установить значение опции sysctl fs.protected_symlinks=1.
Класс: влияет на локальный вектор атаки.
Последующие ограничения: нет. Установка данного параметра не влияет на нормальную функциональность прикладных программ и блокирует только вредоносное поведение.
Снижение производительности: нет.
ПП-3. Запретить небезопасные операции с жесткими ссылками В Linux при обработке жестких ссылок (hard links) может возникать состояние гонки. Ошибки такого типа используются для атак с целью повышения привилегий в системе.
Метод эксплуатации аналогичен с атакой через symlink: привилегированный процесс проходит по ссылке, созданной другим пользователем.
Следует запретить небезопасные операции с жесткими ссылками: пользователь должен иметь возможность создать жесткую ссылку на файл, только если он является владельцем этого файла или имеет права доступа к файлу на чтение и запись.
Рекомендации по настройке: установить значение опции sysctl fs.protected_hardlinks=1.
Класс: влияет на локальный вектор атаки.
Последующие ограничения: нет. Установка данного параметра не влияет на нормальную функциональность прикладных программ и блокирует только вредоносное поведение.
Снижение производительности: нет.
ПП-4. Запретить небезопасные операции с FIFO-объектами Операционные системы на базе ядра Linux подвержены атакам, при которых пользовательская программа вместо нормальной работы с файлом выполняет непреднамеренную запись в FIFO-объект, контролируемый атакующим. В ядре Linux существует механизм защиты от таких атак, запрещающий небезопасные операции с FIFO-объектами. Например, операция open для FIFO-объекта с флагом O_CREAT блокируется, если файл уже существует или пользователь не является владельцем директории. Следует включить данный механизм защиты.
Рекомендации по настройке: установить значение опции sysctl fs.protected_fifos=2.
Класс: влияет на локальный вектор атаки.
Последующие ограничения: нет. Установка данного параметра не влияет на нормальную функциональность прикладных программ и блокирует только вредоносное поведение.
Снижение производительности: нет.
ПП-5. Запретить небезопасную запись файлов Операционные системы на базе ядра Linux подвержены атакам, при которых пользовательская программа вместо нормальной работы с исходным файлом выполняет непреднамеренную запись в файл, контролируемый атакующим. В ядре Linux существует механизм защиты от таких атак, запрещающий небезопасную работу с файлами. Следует включить данный механизм защиты.
Рекомендации по настройке: установить значение опции sysctl fs.protected_regular=2.
Класс: влияет на локальный вектор атаки.
Последующие ограничения: нет. Установка данного параметра не влияет на нормальную функциональность прикладных программ и блокирует только вредоносное поведение.
Снижение производительности: нет.
ПП-6. Запретить создание дампа памяти для некоторых процессов Создание дампа памяти (core dump) для некоторых процессов представляет угрозу безопасности системы. Например, это относится к процессам, запущенным с измененными привилегиями за счет бита SUID. Чтобы предотвратить утечку информации, необходимо ограничить возможность создания дампа памяти для данных процессов.
Рекомендации по настройке: установить значение опции sysctl fs.suid_dumpable=0.
Класс: влияет на локальный вектор атаки.
Последующие ограничения: нет. Установка данного параметра не влияет на нормальную функциональность прикладных программ и блокирует только потенциально опасное поведение.
Снижение производительности: нет.
ПП-7. Включить полную рандомизацию размещения адресного пространства (ASLR) Рандомизация размещения адресного пространства (ASLR) затрудняет перехват потока управления и эксплуатацию уязвимостей в пользовательском пространстве, которые связаны с повреждением памяти по заданным адресам. Рекомендуем включить ASLR в полном режиме.
Рекомендации по настройке: установить значение опции sysctl kernel.randomize_va_space=2.
Класс: влияет на сетевой и локальный вектор атаки.
Последующие ограничения: нет. Установка данного параметра не влияет на нормальную функциональность современных пользовательских программ.
Снижение производительности: нет.
ПП-8. Запретить доступ к прямой работе с floppy-дисками для непривилегированных пользователей Модуль drivers/block/floppy.c для поддержки floppy-дисков является устаревшим и неактивно поддерживаемым драйвером. Код модуля во многом сильно полагается на ограничения, определяемые физическим устройством, и также не предполагает никакой защиты от несанкционированных действий со стороны пользователя. Это подтверждается сопровождающим floppy-драйвера Денисом Ефремовым.
На общедоступных ресурсах был выявлен ряд потенциальных уязвимостей в драйвере. Один из многочисленных примеров доступен по ссылке.
Следует запретить доступ к прямой работе с floppy-дисками для непривилегированных пользователей, или рассмотреть возможность исключения модулей для поддержки floppy-дисков, активируемых опцией конфигурации BLK_DEV_FD, из используемой базовой конфигурации ядра.
Рекомендации по настройке: добавить udev-правило KERNEL=="fd[0-9]*", OWNER="root", MODE="0600".
Класс: влияет на локальный вектор атаки.
Последующие ограничения: нет. Установка ограничения не влияет на стандартную функциональность прикладных программ и блокирует только вредоносное поведение.
Снижение производительности: нет.
https://portal.linuxtesting.ru/LVCKernelHardening.html
https://habr.com/ru/companies/otus/articles/540922/