| |
Специализирующаяся на компьютерной безопасности компания DefenseСode обратила внимание на реальность эксплуатации особенностей обработки масок при выполнении утилит в командной строке. Суть проблемы в том, что при указании масок, таких как "*", осуществляется простая замена списка в командной строке, при которой имена файлов начинающиеся с символа "-" интерпретируются не как файлы, а как переданные утилите опции. Данное поведение до сих пор рассматривалось не как уязвимость, а как известная особенность командных интерпретаторов.
Например, если запустить "rm *" и в текущей директории окажется файл с именем "-rf", то будет применена опция "rm -rf", что приведёт к удалению не только файлов, но и директорий. Другим примером может послужить создание файла с именем "--reference=.file.php", что при выполнении команды "chown nobody:nobody *.php" (или "chmod 000 *") приведёт к смене владельца не на пользователя nobody, а на владельца файла ".file.php" (или к смене прав на права файла ".file.php", которые могут быть -rwxrwxrwx). Если этот файл является символической ссылкой на /etc/shadow и команда выполнена под пользователем root, то смена владельца/прав будет произведена и для /etc/shadow.
Исследователи из DefenseСode считают, что такое поведение следует рассматривать как уязвимость, в доказательство чего опубликовали технику атаки, которая может привести к выполнению кода при использовании утилиты tar. Если атакующий создаст файлы "--checkpoint=1" и "--checkpoint-action=exec=sh shell.sh", а администратор выполнит для архивирования типичную команду "tar cvvf archive.tar *", то после добавления одного файла в архив будет запущен скрипт shell.sh.
Аналогичного эффекта можно добиться при использовании утилиты rsync: создание файла "-e sh shell.c" и запуск "rsync -t *.c foo:src/" приведёт к выполнению скрипта "shell.c". Метод работает и для утилиты scp: создание файла "-o ProxyCommand shell.sh %h %p" и выполнение "scp *
Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра.
:/var/www/" приведёт к запуску скрипта shell.sh и передаче ему в качестве аргументов имени хоста и номера порта. В качестве средства для защиты от подобных атак рекомендуется использовать "--" или "./" перед маской, например, "rm -- *" или "rm ./*".
|
|
- Главная ссылка к новости (http://blog.defensecode.com/2014/06/back...)
| Тип: Проблемы безопасности | Ключевые слова: shell, security, (найти похожие документы) | При перепечатке указание ссылки на opennet.ru обязательно | Реклама |
id=adv>
| |
| 2.12, бедный буратино, 12:24, 28/06/2014 [ ^] [ ответить] [ смотреть все] [ показать ветку] –1 +/– 2.19, Журналовращатель, 13:59, 28/06/2014 [ ^] [ ответить] [ смотреть все] [ показать ветку] +/–
1.2, Аноним, 10:59, 28/06/2014 [ответить] [смотреть все] +2 +/–Во FreeBSD, кстати, не сработает ... весь текст скрыт [ показать]
1.5, Аноним, 11:07, 28/06/2014 [ответить] [смотреть все] –1 +/–
1.6, Аноним, 11:18, 28/06/2014 [ответить] [смотреть все] +12 +/–
два минуса придумали как раз для этого, для разделения интерпретируемых аргументов и подставленных имён файлов
5.33, Аноним, 15:52, 28/06/2014 [ ^] [ ответить] [ смотреть все] +3 +/–А в некоторых его может и не быть Облом, правда ... весь текст скрыт [ показать] 4.42, Ordu, 17:51, 28/06/2014 [ ^] [ ответить] [ смотреть все] +/–Вообще-то, для решения этой проблемы были придуманы библиотеки, в т ч и shared ... весь текст скрыт [ показать] 4.65, Аноним, 01:15, 29/06/2014 [ ^] [ ответить] [ смотреть все] +/–А обрабатывать два минуса в каждой программе, это умно, ага ... весь текст скрыт [ показать] |
6.121, arisu, 23:32, 29/06/2014 [^] [ответить] [смотреть все] | +/– |
>> А обрабатывать два минуса в каждой программе, это умно, ага.
> man 3 getopt
cуровые джедаи не пользуются библиотеками. даже libc.
| | | 3.20, Аноним, 14:21, 28/06/2014 [ ^] [ ответить] [ смотреть все] +2 +/–Работа с аргументной строкой как с монолитной raw строкой в принципе broken by ... весь текст скрыт [ показать] |
10.136, Crazy Alex, 04:42, 30/06/2014 [^] [ответить] [смотреть все] | +/– |
Мне не шелл бы, а соглашение о формате. В идеале - поддержанная на уровне системы метаинформация для пайпов, чтобы реципиент мог узнать хоть что-то о получаемом потоке данных не полагаясь на его контент (который, разумеется, может быть каким угодно). К примеру, уметь устанавливать писателем и получать читателем mimetype или что-о подобное. Дальше - делать форк coreutils, умеющий это дело понимать.
А шелл - это уже глазурь на торте, хотя я не могу понять, чего они до сих пор такие уродливые.
| | |
|
11.137, arisu, 04:47, 30/06/2014 [^] [ответить] [смотреть все] | +/– |
> Мне не шелл бы, а соглашение о формате.
так в чём проблема-то? пишешь библиотеку сборки и парзинга твоего нового формата, пишешь шелл, который её использует — телемаркет! ну, и дальше усердно пишешь обёртки.
но всё это лишнее, на самом деле. по крайней мере, для консоли — лишнее.
| | | 9.128, vi, 00:25, 30/06/2014 [ ^] [ ответить] [ смотреть все] +/–
> Майкрософт вообще
> угробила кучу хороших идей
Послушайте Изя, он нас еще и коммерции учить будет ;)
9.140, rob pike, 05:41, 30/06/2014 [ ^] [ ответить] [ смотреть все] +/–
> И, право, я не вижу ничего ужасного в том, чтобы отдавать вывод
> какого-нибудь PS в формате protocol buffers или аналогичном - с именованными
> и типизированными полями.
Теперь смотрим в сторону XML-RPC, и долго думаем почему он таки не взлетел.
> А PowerShell - это всего лищь паршивая реализация, и только.
Нет, не только.
> Майкрософт вообще угробила кучу хороших идей убогой релаизацией - хотя бы идею компонентной
> ОС вспомнить, когда у большинства майкрософтовских продуктов COM-интерфейсы дают все возможности
> гуя и даже большие - но при этом пользоваться этой мерзостью предельно неприятно.
Только если не понимать как она работает и пытаться её использовать через десяток кривых прокладок типа С++ с MFC.
|
10.142, arisu, 05:45, 30/06/2014 [^] [ответить] [смотреть все] | +/– |
> Только если не понимать как она работает и пытаться её использовать через
> десяток кривых прокладок типа С++ с MFC.
да даже если понимать — это ужас. интерфейсы, которые спрашивают интерфейсы у интерфейсов, и всё это надо руками рефкаунтить, и… и ну его нафиг, такой хлебушек.
| | | 6.61, Аноним, 21:31, 28/06/2014 [ ^] [ ответить] [ смотреть все] +/–Пусть он им попробует попользоваться Интересно через сколько часов или дней о... весь текст скрыт [ показать] 6.74, Аноним, 01:42, 29/06/2014 [ ^] [ ответить] [ смотреть все] +/–товарищ имел явно в виду только то что написал, а именно речь шла о протоколе пе... весь текст скрыт [ показать] 7.86, rob pike, 11:24, 29/06/2014 [ ^] [ ответить] [ смотреть все] +/–И получится у вас XML-RPC Это именно то чего не хватало командной строке, да ... весь текст скрыт [ показать] 5.72, Аноним, 01:28, 29/06/2014 [ ^] [ ответить] [ смотреть все] +/–если говорить о linux и юниксах, где значительная часть операций идёт через шел,... весь текст скрыт [ показать] 8.78, vle, 03:44, 29/06/2014 [ ^] [ ответить] [ смотреть все] +/–Если разработчик вменяемый, он использует getopt 3 или getopt_long 3 В обоих ... весь текст скрыт [ показать] 6.83, Anonym2, 10:52, 29/06/2014 [ ^] [ ответить] [ смотреть все] +1 +/–Вызывающая сторона как раз должна знать И эта сторона - не sh Однако sh делает... весь текст скрыт [ показать] 6.90, Ordu, 13:02, 29/06/2014 [ ^] [ ответить] [ смотреть все] +/–Простите, я полагаю порезку примерно по пробелам неизбежной Можно конечно зам... весь текст скрыт [ показать] |
9.139, rob pike, 05:30, 30/06/2014 [^] [ответить] [смотреть все] | +/– |
> Вам объяснят, что если у вас слово тег ассоциируется только с XML,
> а конкретнне даже с xml-rpc, то это ешё не значит, что
> все ваши скудные познания о XML нужно переностить в тему где
> вы встретили слово тег.
Вы зря так плохо думаете о людях. Если бы в XML-RPC использовался не XML, а какой-то иной синтаксис, я бы с не меньшей вероятностью привел его в пример того какая переусложненная и отвратительная хрень получается из попыток "всё упорядочить" там где этого делать не след.
| | | 7.96, all_glory_to_the_hypnotoad, 15:00, 29/06/2014 [ ^] [ ответить] [ смотреть все] +/–Ты ничего не разбиваешь пробелами в командной строке, это фикция в твоей голове ... весь текст скрыт [ показать] 4.49, Crazy Alex, 19:44, 28/06/2014 [ ^] [ ответить] [ смотреть все] +/–Проблема в том, чтобы получить с правильной архитектурой ту же простоту А так... весь текст скрыт [ показать] 3.67, arisu, 01:19, 29/06/2014 [ ^] [ ответить] [ смотреть все] –1 +/–тридцать два килобайта демоны, ЧТО можно делать с командной строкой, чтобы наср... весь текст скрыт [ показать] |
4.109, Алексей, 21:38, 29/06/2014 [^] [ответить] [смотреть все] | +/– |
ну во-первых не 32кб, реально можно столько использовать, на сколько памяти хватит. это вполне удобным бывает (чисто практически, а то что изначально механизм не предназначен был для больших объемов - так это эстетство уже).
| | |
|
5.112, arisu, 22:05, 29/06/2014 [^] [ответить] [смотреть все] | +/– |
реально это зависит от многих факторов, включая то, какой shell используется. на современных GNU/Linux с bash 32 килобайта точно пролазит, поэтому я взял это как минимум.
| | |
|
6.125, Алексей, 00:03, 30/06/2014 [^] [ответить] [смотреть все] | +/– |
лимит - четверть максимального размера стека (RLIMIT_STACK), гарантируется не менее 128кб, по дефолту мне везде попадалось 2мб (макс. память, занятая аргументами execve, включая env). но это искуственное ограничение, в баше достаточно сделать ulimit -s unlimited, и пролезет столько, сколько памяти хватит. и сами данные не в стеке находятся (ограничение на аргументы ставится для того, чтобы обеспечить выделение памяти под стек).
| | |
|
|
8.134, Алексей, 02:23, 30/06/2014 [^] [ответить] [смотреть все] | +/– |
так shell сам не ограничивает длину, ограничивает ядро.
и если уж старперствовать по-полной, то лучше ограничиться 4кб :)
| | | 3.93, анон, 13:45, 29/06/2014 [ ^] [ ответить] [ смотреть все] +/–это broken by design обсуждается с конца 80-х и есть антидоты плотно эти ребя... весь текст скрыт [ показать]
1.11, Аноним, 12:20, 28/06/2014 [ответить] [смотреть все] +/–
1.13, бедный буратино, 12:26, 28/06/2014 [ответить] [смотреть все] +1 +/–
tar cf archive.tar *
это же тар-бомба, которая крайне редко где применяется (а там, где применяется, уже один раз поймал и попортил себе систему :).
обычно tar cf archive.tar archive, чтобы потом удобно распаковывать было.
1.14, Xasd, 12:56, 28/06/2014 [ответить] [смотреть все] +10 +/–
mv -t /blahblah -- *
в чём проблема-то?
всегда так делаю.. и всегда делал раньше...
стоило ради этого писать новость?
вы ещё написали бы новость о том типа "О БОЖЕ, ЕСЛИ НЕ ЗАЭКРАНИРОВАТь В PHP HTML-ВЫВОД ЗНАЧЕНИЯ ПЕРЕМЕННОЙ ТО ПОЛУЧИТСЯ XSS!!"
ну детский сад же!
# P.S.: а по теме говоря -- всё идёт из-за непонимания того кто именно обрабатывает этот <*> (его обрабатывает BASH, но кто-то может подумать что это аргумент для mv, по аналогии с Microsoft Windows cmd.exe) .
|
|
5.144, rob pike, 08:54, 30/06/2014 [^] [ответить] [смотреть все] | +/– |
Одна из главных проблем с Леннартом - в том что все постоянно недооценивают уровень его притязаний.
Он пойдет пилить только _meta_kerneld.
| | |
|
6.145, arisu, 09:09, 30/06/2014 [^] [ответить] [смотреть все] | +/– |
> Одна из главных проблем с Леннартом - в том что все постоянно
> недооценивают уровень его притязаний.
> Он пойдет пилить только _meta_kerneld.
чёрт, да хоть universed, лишь бы побыстрее и подальше…
| | | 2.146, PnDx, 16:52, 30/06/2014 [ ^] [ ответить] [ смотреть все] [ показать ветку] [ к модератору] +/–
Дет.сад для того, кто успел перелопатить гору документации и протоптаться по граблям.
До сих пор ньюбов тыкают в маны, не обладающие, между прочим, выражаясь на математический манер, ни свойством полноты, ни свойством связности. Редких приличных ресурсов типа xgu явно недостаточно для формирования системного мышления.
ЧСХ, я тоже начинал с подобных ляпов. Причём, перелопачивание инета зачастую помогает формированию бажного мировоззрения. Чего стоит "#!/usr/bin/env python" в скриптах, потенциально вызываемых из крона (с вычищенным окружением).
2.31, Аноним, 15:29, 28/06/2014 [^] [ответить] [смотреть все] [показать ветку] +1 +/– 3.47, Аноним, 18:29, 28/06/2014 [^] [ответить] [смотреть все] +/–Вы еще один ненужный кэп Антивирус попова легко отлавливает таких ботов Так чт... весь текст скрыт [ показать]
1.39, Аноним, 17:14, 28/06/2014 [ответить] [смотреть все] +/–Проблема из за того как аргументы обрабатывает сам getopt h и то как они подаютс... весь текст скрыт [ показать]
1.40, Аноним, 17:18, 28/06/2014 [ответить] [смотреть все] +1 +/–На самом деле такие атаки вполне применимы на серверах хостинговых компаний Там... весь текст скрыт [ показать]
1.45, Kroz, 18:06, 28/06/2014 [ответить] [смотреть все] +/–
Как от этого защититься?
2.69, arisu, 01:23, 29/06/2014 [ ^] [ ответить] [ смотреть все] [ показать ветку] +/– 2.110, Алексей, 21:50, 29/06/2014 [ ^] [ ответить] [ смотреть все] [ показать ветку] +/–
> Как от этого защититься?
не использовать маски в шелл-скриптах (а там где нужно через командную строку передавать программе списки файлов - использовать для запуска например find ... -print0|xargs -r0 ..., чтобы ситуации с левыми символами в именах обрабатывались явным образом).
а при интерактивной работе перед запуском команды маски удобно заменять на конкретные списки (в разных шеллах по-разному, но функция стандартная).
2.58, Аноним, 21:09, 28/06/2014 [^] [ответить] [смотреть все] [показать ветку] +1 +/–Миш, через несколько лет жди новость британские учёные обнаружили, что если от... весь текст скрыт [ показать] [ показать ветку] 2.79, RNZ, 05:42, 29/06/2014 [^] [ответить] [смотреть все] [показать ветку] +/–
1.64, Аноним, 00:39, 29/06/2014 [ответить] [смотреть все] +1 +/–О, УЖАС 1 man -- 2 Реальные перцы не используют thread b ... весь текст скрыт [ показать]
1.66, arisu, 01:16, 29/06/2014 [ответить] [смотреть все] +/–
молодцы, чо. они, наконец, начали читать unix haters handbook, видимо. там их ещё много чудных открытий поджидает, ждём ещё пачку Ломающих Новостей.
Ваш комментарий
Read more |