Наскільки корисний монтаж / tmp noexec?


39

Багато людей (включаючи Посібник із захисту пристроїв Debian ) рекомендують монтувати /tmpза допомогою noexec,nodev,nosuidнабору параметрів. Зазвичай це представлено як один із елементів стратегії "глибокої оборони", запобігаючи ескалації атаки, яка дозволяє комусь писати файл, або атаки користувача з законним обліковим записом, але немає іншого місця для запису.

Однак з часом я зіткнувся з аргументами (найбільш чітким розробником Debian / Ubuntu Коліном Уотсоном), що noexecце марний захід з кількох можливих причин:

  1. Користувач може бігти /lib/ld-linux.so <binary>, намагаючись отримати той же ефект.
  2. Користувач все ще може запускати системні інтерпретатори на скриптах, які не можна запустити безпосередньо

Враховуючи ці аргументи, потенційна потреба в більшій конфігурації (наприклад, debconfподобається виконуваний тимчасовий каталог) та потенційна втрата зручності - це гідний захід безпеки? Які ще дірки ви знаєте, що дозволяють обійти?


1
@neoice: Я чув, що програми періодично ламаються, якщо / tmp не виконується. Я все ще насправді бачу, як це відбувається Подивіться на TuxGuitar-1.2 ... це буває. Не запуститься, якщо / tmp не монтується без опції noexec, тому що він розпаковує бібліотеки та намагається завантажити їх.

Менеджер відновлення веб-сайтів VMware запускає сценарії з "/ tmp": Під час налаштування IP-адреси або тестування відмови плану відновлення в vCenter Manager Recovery Manager (2021083): kb.vmware.com/selfservice/microsites/…

1
Я знаю, що утиліта стиснення під назвою snappy скидає файл .so в / tmp і не може працювати, якщо він встановлений noexec. (використовується за замовчуванням у кассандрі та кафці) ІМХО - це причина не використовувати швидку, а не причину не монтувати / tmp noexec
jorfus

Відповіді:


31

Ось аргументи щодо корисності, які я придумав поки що:

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

Точка перекладачів, безумовно, все ще викликає занепокоєння, хоча я думаю, що менше, ніж люди можуть стверджувати. Я можу прийти до висновку, що існувало чимало вразливих місць ескалації привілеїв, які залежали від створення конкретних неправильних системних викликів. Без того, як зловмисник надає двійковий код, було б набагато важче зробити злі системні дзвінки. Також інтерпретатори сценаріїв повинні бути непривілейованими (я знаю, що це історично часом не було, як, наприклад, з suid perl), і тому потрібна була б їхня власна вразливість, щоб бути корисною для нападу. Мабуть, можна використовувати принаймні Python для запуску деяких подвигів.

Багато експлуатованих "консервів" можуть намагатися записувати та запускати виконувані файли /tmp, і таким чином noexecзменшує ймовірність потрапляння на скриптовану атаку (скажімо у вікні між розкриттям вразливості та встановленням патчу).

Таким чином, є всі ще перевага безпеки для монтажу /tmpз noexec.

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


Однак, я вже чув , що додатки будуть іноді зламатися , якщо / TMP не є виконуваним. Я все ще насправді бачу, як це відбувається
neoice

Як зазначається в посібнику, пов’язаному з питанням, це пов'язане з попередньою конфігурацією пакета Debconf без встановлення альтернативи.
Філ Міллер

2
Так, noexec - це дуже гарний додатковий шар для безпеки, і я не бачив, щоб це гальмувало хаос через це. Установка пакету - це єдине, що навіть можна вирішити, як сказано у відповідях тут. Як моє рішення у мене є псевдонім на зразок цього: псевдонім update = "mount -o exec, remount / tmp && apt-get update && apt-get upgrade && mount -o noexec, remount / tmp"
Janne Pikkarainen

1
Я думаю, це нечасто, але пакети, написані для виконання чогось із / tmp поза контекстом встановлення пакету, існують (наприклад, поточна версія середнього програмного забезпечення для використання бельгійських електронних ідентифікаційних карт).
equaeghe

equaeghe: Що це за пакет? Ймовірно, це повинно бути повідомлено про помилку. Я готовий зробити ставку, що існує вразливість безпеки і в тому, як він це використовує.
Філ Міллер

7

Багато пакетів Debian вимагає виконання / tmp для виконання, щоб встановити пакет. Вони часто позначаються як помилки (серйозності "нормального" / "списку бажань"):

https://www.google.com/#q=site:bugs.debian.org+noexec+/tmp

Я отримав саме цю помилку під час встановлення оновленого ядра до стабільної гілки саме сьогодні.

Так виглядає, що Debian (& похідні?) Не готові до / tmp для монтажу noexec ...


6

додайте наступне в /etc/apt.conf, або, /etc/apt/apt.conf.d/50remount

DPkg::Pre-Install-Pkgs {"mount -o remount,exec /tmp";};
DPkg::Post-Invoke {"mount -o remount /tmp";};

6
Я замінив mountна /bin/mountвипадок, коли PATH буде змінено. Ти ніколи не дізнаєшся.
Лекенштейн

4

Незважаючи на те, що існують шляхи вирішення більшості додаткових заходів безпеки, які ви можете вирішити застосувати, навіть найзахищеніші заходи безпеки (наприклад, встановлення / tmp noexec або запуску SSH на альтернативному порті) призведе до запобігання автоматизованим або скриптованим атак, які покладаються на значення за замовчуванням. функціонувати. Це не захистить вас від рішучого та знаючого нападника, але значно більше 99% часу ви не будете проти рішучого чи знаючого нападника. Натомість, ви будете захищатись від сценарію автоматизованої атаки.


2

По-перше: він охоплює багато різних випадків нападу Вимкнення його, оскільки навколо нього було кілька відомих способів (деякі з яких навіть виправлені) дивно. Зловмисники, які завантажують код у / dev / shm або / tmp - це звичайна справа.

Захист у глибині полягає у забезпеченні більшості загальних точок, кожна, що зупиняє їх, робить вашу систему більш життєздатною. Не безпечно. Але це також матиме шанс . Якщо вони не зможуть отримати свою вторинну корисну навантаження, це дуже непоганий шанс.

  • Його також можуть зупинити обмеження користувача iptables.
  • Його також може зупинити SELinux.
  • Він також не може бути зупинений через легко доступний інший подвиг.

Сенс у тому, щоб зробити це настільки важко, як легко , і вирізати 99% атак.

По-друге: це зупиняє погану практику (запускати матеріали з temp, робити основні встановлення додатків через / tmp замість користувача tmpdir), залишаючи дані в / tmp. Призначені для користувача установники зазвичай розумію TMPDIR також: навіть якщо немає: час установки, як дія на певний момент часу, не є поважною причиною , щоб відключити проблему безпеки постійно .

По-третє: Розглядаючи анонімні простори імен в / tmp ("функція"), ви дійсно хочете обмежити те, що там розміщено, і запустити звідти.

По-четверте: зручність не є важливим фактором у цьому. Якщо припустити, що ми запускаємо сервери на гроші та на мету: ми відповідаємо за цей матеріал. "О, я не заблокував / tmp, тому що тоді мені потрібно ще кілька хвилин, коли я оновлюю програмне забезпечення наступного року". Безумовно, це буде не лише ця річ, яка стоїть між шантажем і просто тим, що добре. Чудова причина? Я не думаю, що так.

Як щодо цього:

"Ми дізналися, що вороги можуть нападати без попередження. Вони також могли використовувати сотні шпигунів, щоб отруїти їжу. Тож ми перестали роздавати гармати нашим солдатам".

Чекати, що?

Є й інші заходи, які потребують набагато більше зусиль, досвіду та удачі для забезпечення системи, а знаючи, що люди мають обмежені гроші, тривалість життя, а також хотіли б провести час зі своїми сім’ями: Не пропускайте легких речей.


1

Є програми, для встановлення яких потрібно виконати / tmp для виконання. На попередній роботі, перш ніж я потрапив туди, адміністратори встановили / tmp noexec, але я виявив, що пакет db2 не встановиться. Навіть якщо ви знімаєте пакет db2 десь в іншому місці, процедура встановлення копіює деякі файли в / tmp і очікує, що зможе виконати його, що, звичайно, не вдалося, якщо дозвіл відмовлено. Якщо ви не знаєте, що файлова система встановлена ​​noexec, це може бути трохи оманливим. Встановити програму вдалося лише після того, як я перерахував / tmp без noexec.

У будь-якому разі, справа в тому, що принаймні один комерційний продукт вимагає / tmp не монтуватися noexec, а можуть бути й інші. Я не знайшов для цього дійсно переконливої ​​причини. Якщо ви хочете покращити безпеку, я б замість цього поїхав із selinux.


Аналіз експлуатування вразливості Samba, який зупинився б на noexec / tmp: bobao.360.cn/learning/detail/4168.html (рекомендується перекласти Google від Google. Це дозволить порушити початковий експлуатацію, а також значна частина корисного навантаження ...) (Ви можете зламати багато поширених автоматичних подвигів таким чином ....). mount -o remount,exec /tmpпрацює, коли вам потрібно встановити речі ... (Так, обходитись банально, але багато нападників, здається, не турбуються ...)
Герт ван ден Берг
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.