Чому "AcceptEnv *" вважається небезпечним?


12

В /etc/ssh/sshd_config, існує опція, яка називається, AcceptEnvщо дозволяє клієнту ssh надсилати змінні середовища. Мені потрібно вміти надсилати велику кількість змінних середовища. Вони змінюються при кожному підключенні від клієнта, тому помістити їх у сценарій входу на сервер було б складніше.

Я читав, що "AcceptEnv *"це небезпечно. Я хотів би зрозуміти, чому перед тим, як спробувати отримати список всіх змінних оточуючих середовищ, які намагаються встановити, щоб розмістити їх.

Чому це вважається небезпечним? Чи можу я отримати приклад?

Відповіді:


11

Увімкнення обробки середовища може дозволяти користувачам обходити обмеження доступу в деяких конфігураціях за допомогою механізмів, таких як LD_PRELOAD.

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

Погляньте на http://www.dankalia.com/tutor/01005/0100501004.htm та знайдіть "LD_PRELOAD Exploit". На жаль, на цій сторінці немає прив’язних посилань.

Дивіться також це запитання StackOverflow " Що таке фокус LD_PRELOAD? "

Встановлення змінних середовища після з'єднання добре, але коли ця змінна інтерпретується демоном ssh як встановлений AcceptEnv, можуть виникнути погані речі.


1
Чим це відрізняється від того, коли вони встановлювали змінні вручну після входу?
Джозеф Гарвін

1
@JosephGarvin, деякі системи обмежують оболонки або дозволяють лише одну конкретну команду, так що "вони" не можуть . Отже, проблема полягає у наданні засобів, за допомогою яких такі заходи безпеки можна обійти.
Чарльз Даффі

0

Не приймайте змінні середовища:

Ознайомтеся з експлуатуванням Shellshock, що з’явився нещодавно .. якщо ви приймаєте змінні середовища, то ви відкриваєте справді неприємний подвиг.


1
Ви поширюєте страх ІМО. Якщо ви переживаєте, чому вони мають доступ до SSH? І btw ви не можете зупинити їх від встановлення змінних середовища, коли вони знаходяться в оболонці або навіть функціях. Цей подвиг стосується несанкціонованого доступу до оболонки через такі речі, як nginx, не дозволений доступ до оболонки.
Джордон Бедвелл

У будь-якому випадку ви приймаєте принаймні одне оточення. змінна з назвою TERM. Можливо, потрібно прийняти інші змінні, такі як PRINTER, EDITOR, PAGER, ...
ibre5041

@JordonBedwell, не кожен SSH-з'єднання має право доступу до оболонки. У мене є декілька систем, де є облікові записи, для яких єдиною автентифікацією є ключ SSH, який дозволив запускати лише одну конкретну команду (із особою власника цього ключа та іншими деталями, зафіксованими).
Чарльз Даффі

... це було сказано, я згоден, що станом на 2017 рік ShellShock тут сильно перекритий. При поточній реалізації, породжуючи експортованої функції не вимагає контролю не тільки над змінної навколишнього середовища в значенні , але і його ім'я (і процес оцінки експортованих функцій при запуску оболонки вже саме по собі не схильні до атак нагнітальних).
Чарльз Даффі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.