Security

Насколько полезен mounting/tmp noexec?

Многие (включая Руководство по обеспечению безопасности Debian) рекомендуют монтировать /tmp с набором опций noexec, nodev, nosuid. Обычно это представляется как один из элементов стратегии «защита в глубину», предотвращающий эскалацию атаки, позволяющей кому-то записать файл, или атаку пользователя с легитимной учетной записью, но не имеющего другого пространства для записи.

Однако со временем я столкнулся с аргументами (наиболее заметными со стороны разработчика Debian/Ubuntu), что noexec бесполезная мера по нескольким возможным причинам:

  1. Пользователь может запустить /lib/ld-linux.so <binary> в попытке получить тот же эффект.

  2. Пользователь все еще может запустить системные интерпретаторы на скриптах, которые нельзя запустить напрямую.

Учитывая эти аргументы, потенциальную необходимость дополнительной настройки   и потенциальную потерю удобства, является ли это стоящей мерой безопасности? Какие еще проблемы вы знаете, которые можно обойти?

Ответ 1

Вот аргументы в пользу утилиты, которые я придумал на данный момент:

Современные ядра исправляют ошибку в безопасности /lib/ld-linux.so, так что она не сможет отображать исполняемые страницы из файловой системы noexec.

Я могу объяснить это тем, что существует множество уязвимостей повышения привилегий, которые зависят от выполнения определенных неправильных системных вызовов. Если злоумышленник не предоставит двоичный файл, сделать злонамеренные вызовы системы будет гораздо сложнее. Кроме того, интерпретаторы скриптов должны быть непривилегированными (я знаю, что исторически иногда это не так, например, в случае suid perl), и поэтому для того, чтобы быть полезными в атаке, им нужна собственная уязвимость. Судя по всему, можно использовать Python, по крайней мере, для запуска некоторых эксплойтов.

Многие «консервированные» эксплойты могут пытаться писать и запускать исполняемые файлы в /tmp, поэтому noexec снижает вероятность того, что вы попадете под сценарную атаку (скажем, в промежутке между раскрытием уязвимости и установкой патча).

Таким образом, монтирование /tmp с помощью noexec все еще имеет преимущество с точки зрения безопасности.

Как описано в багтрекере Debian, установка APT::ExtractTemplates::TempDir в apt.conf в каталог, который не является noexec и доступен для root, устранит проблему debconf.

Ответ 2

Во-первых: Система охватывает множество различных случаев атак. Отключать ее, потому что было несколько известных способов ее обойти (некоторые из которых даже исправлены), странно. Злоумышленники загружают код на /dev/shm или /tmp это обычная вещь, которую они делают. «Защита в глубину» это защита наиболее распространенных точек, каждая из которых останавливает их, делает вашу систему более предсказуемой. Если они не могут получить свою вторичную полезную нагрузку, это довольно хороший шанс.

  1. Она также может быть остановлена пользовательскими ограничениями iptables.

  2. Она также может быть остановлена посредством SELinux.

  3. Она также может быть не остановлена из-за простого эксплойта.

Смысл в том, чтобы сделать систему настолько сложной, насколько это возможно, и отсечь 99% атак.

Второе: Это останавливает простую практику (запуск вирусов из temp, установку основных приложений через /tmp вместо пользовательского tmpdir, оставление данных в /tmp). Пользовательские программы установки обычно понимают TMPDIR.

В-третьих: Учитывая анонимные пространства имен в /tmp, вы действительно можете ограничить то, что помещается и запускается из этого места.

В итоге:

Есть и другие меры, которые требуют гораздо больше усилий, опыта и удачи, чтобы обезопасить систему.

Ответ 3

Есть приложения, для установки которых требуется, чтобы /tmp был исполняемым. На предыдущей работе до моего прихода администраторы установили /tmp noexec, но я обнаружил, что пакет db2 не устанавливается. Даже если вы распаковываете пакет db2 в другом месте, процедура установки копирует некоторые файлы в /tmp и ожидает, что их можно будет выполнить, чего, конечно же, не удается сделать, так как разрешение на выполнение запрещено. Если вы не знаете, что файловая система смонтирована noexec, это может немного ввести в заблуждение. Я смог продолжить установку только после того, как перемонтировал /tmp без noexec.

 

Схожие статьи

Security

Опасно ли иметь сервер базы данных и веб-сервер на одном компьютере?

Security

Как я могу загрузить исполняемый файл внутри сети компании, если она заблокирована?

Security

Необходимы ли анонимные имена пользователей?

Введение в лучшие практики по безопасности Kubernetes
Security

Введение в лучшие практики по безопасности Kubernetes

×