Многие люди (включая Руководство по безопасности Debian ) рекомендуют монтировать /tmp
с noexec,nodev,nosuid
набором опций. Обычно это представляется как один из элементов стратегии «глубокоэшелонированной защиты», поскольку предотвращает эскалацию атаки, которая позволяет кому-либо записать файл, или атаки пользователя с законной учетной записью, но без другого доступного для записи пространства.
Однако со временем я столкнулся с аргументами (наиболее заметными из которых является разработчик Debian / Ubuntu Колин Уотсон), которые noexec
являются бесполезной мерой по нескольким возможным причинам:
- Пользователь может запустить
/lib/ld-linux.so <binary>
в попытке получить тот же эффект. - Пользователь по-прежнему может запускать предоставленные системой интерпретаторы сценариев, которые не могут быть запущены напрямую
Учитывая эти аргументы, потенциальная debconf
мера безопасности - потенциальная потребность в дополнительной конфигурации (например, любит исполняемый временный каталог) и потенциальная потеря удобства? Какие еще дыры вы знаете о том, что позволяют обойти?
Ответы:
Вот аргументы за полезность, которую я придумала до сих пор:
Современные ядра исправляют эту
/lib/ld-linux.so
дыру, так что она не сможет отображать исполняемые страницы изnoexec
файловой системы.Точка зрения переводчиков, безусловно, по-прежнему вызывает озабоченность, хотя я думаю, что меньше, чем люди могут утверждать. Я могу прийти к выводу о том, что было множество уязвимостей, связанных с повышением привилегий, которые основывались на создании определенных искаженных системных вызовов. Без злоумышленника, предоставляющего двоичный файл, было бы намного сложнее создавать злые системные вызовы. Кроме того, интерпретаторы сценариев должны быть непривилегированными (я знаю, что исторически это иногда не имело место, например, с использованием suid perl), и поэтому им нужна была бы их собственная уязвимость, чтобы быть полезной в атаке. По-видимому, можно использовать Python, по крайней мере, для запуска некоторых эксплойтов.
Многие «консервированные» эксплойты могут пытаться писать и запускать исполняемые файлы
/tmp
, чтоnoexec
снижает вероятность попадания в атаку по сценарию (скажем, в окне между раскрытием уязвимости и установкой патча).Таким образом, есть все еще преимущество безопасности для монтажа
/tmp
сnoexec
.Как описано в трекере ошибок Debian , установка
APT::ExtractTemplates::TempDir
вapt.conf
каталог, который неnoexec
доступен и недоступен для root, устранит проблему debconf.источник
Многие пакеты Debian требуют, чтобы / tmp был исполняемым для установки пакета. Они часто помечаются как ошибки (с серьезностью 'normal' / 'wishlist'):
https://www.google.com/#q=site:bugs.debian.org+noexec+/tmp
Я только что получил эту ошибку при установке обновленного ядра в стабильную ветку только сегодня.
Похоже, что Debian (& производные?) Не готов к монтированию / tmp noexec ...
источник
добавьте следующее в /etc/apt.conf или /etc/apt/apt.conf.d/50remount
источник
mount
на/bin/mount
в случае изменения PATH. Ты никогда не узнаешь.Несмотря на то, что существуют обходные пути для большинства дополнительных мер безопасности, которые вы можете выбрать, даже самые легко обходимые меры безопасности (такие как монтирование / tmp noexec или запуск SSH на альтернативном порту) будут препятствовать автоматическим или скриптовым атакам, которые полагаются на значения по умолчанию в порядке функционировать. Это не защитит вас от решительного и знающего злоумышленника, но в более чем 99% случаев вы не будете против решительного или знающего злоумышленника. Вместо этого вы будете защищаться от сценария автоматической атаки.
источник
Во-первых: он охватывает множество различных случаев атаки. Отключить его, потому что было несколько известных способов обхода (некоторые из которых даже исправлены), странно. Злоумышленники загружают код в / dev / shm или / tmp - обычное дело.
Глубокая защита - это защита наиболее распространенных путевых точек, каждая из которых останавливает их, делает вашу систему более жизнеспособной. Не безопасно. Но у него тоже будет шанс . Если они не могут получить свою дополнительную полезную нагрузку, это очень хороший шанс, который вы получаете.
Суть в том, чтобы сделать это как можно сложнее , и исключить 99% атак.
Во-вторых, это останавливает плохую практику (запуск вещей из temp, установка основных приложений через / tmp вместо пользовательского tmpdir), оставляя данные в / tmp. Пользовательские установщики обычно также понимают TMPDIR : даже если нет: время установки, как действие на определенный момент времени, не является веской причиной для окончательного отключения проблемы безопасности .
Третье: рассматривая анонимные пространства имен в / tmp («особенность»), вы действительно хотите ограничить то, что помещается туда и запускается оттуда.
В-четвертых: удобство не является важным фактором в этом. Предполагая, что мы запускаем серверы за деньги и с определенной целью: мы несем ответственность за это. «О, я не заблокировал / tmp, потому что тогда мне нужно еще несколько минут, чтобы обновить программное обеспечение в следующем году». Конечно, это не будет только одна вещь, которая стоит между шантажом и просто в порядке. Отличная причина? Я так не думаю.
Как насчет этого:
Чего ждать?
Существуют и другие меры, которые требуют гораздо больше усилий, опыта и удачи для обеспечения безопасности системы, а также знание того, что люди имеют ограниченные деньги, продолжительность жизни, а также хотели бы проводить время со своими семьями: не пропустите простые вещи.
источник
Есть приложения, которые требуют, чтобы / tmp был исполняемым для установки. На предыдущей работе до того, как я туда попал, администраторы установили / tmp noexec, но я обнаружил, что пакет db2 не будет установлен. Даже если вы распакуете пакет db2 где-то еще, процедура установки скопирует некоторые файлы в / tmp и ожидает, что сможет выполнить его, что, конечно, не удалось с запрещенным разрешением. Если вы не знаете, что файловая система смонтирована noexec, это может немного ввести в заблуждение. Он смог продолжить установку только после того, как я перемонтировал / tmp без noexec.
В любом случае, дело в том, что по крайней мере один коммерческий продукт требует, чтобы / tmp не монтировался noexec, а могут быть и другие. Я не нашел действительно веской причины для этого. Если вам нужна лучшая безопасность, я бы выбрал selinux.
источник
mount -o remount,exec /tmp
работает, когда вам нужно что-то установить ... (Да, обойти это тривиально, но многие злоумышленники, похоже, не беспокоятся ...)