The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Атака через подстановку аргументов при использовании масок в..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Атака через подстановку аргументов при использовании масок в..."  +/
Сообщение от opennews (??) on 28-Июн-14, 10:44 
Специализирующаяся на компьютерной безопасности компания DefenseСode обратила (http://blog.defensecode.com/2014/06/back-to-future-unix-wild...) внимание на реальность эксплуатации особенностей обработки масок при выполнении утилит в командной строке. Суть проблемы в том, что при указании масок, таких как "*", осуществляется простая замена списка в командной строке, при которой имена файлов начинающиеся с символа "-" интерпретируются не как файлы, а как переданные утилите опции. Данное поведение до сих пор рассматривалось (http://seclists.org/fulldisclosure/2011/Sep/192) не как уязвимость,  а как известная особенность командных интерпретаторов.

Например, если запустить "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 считают, что такое поведение следует рассматривать как уязвимость, в доказательство чего опубликовали (http://www.defensecode.com/public/DefenseCode_Unix_WildCards...) технику атаки, которая может привести к выполнению кода при использовании утилиты 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". Метод работает (https://dicesoft.net/projects/wildcard-code-execution-exploi...) и для утилиты scp: создание файла "-o ProxyCommand shell.sh %h %p" и выполнение "scp * user@example.org:/var/www/" приведёт к запуску скрипта shell.sh и передаче ему в качестве аргументов имени хоста и номера порта. В качестве средства для защиты от подобных атак рекомендуется использовать  "--" или "./" перед маской, например, "rm -- *" или "rm ./*".


URL: http://blog.defensecode.com/2014/06/back-to-future-unix-wild...
Новость: http://www.opennet.ru/opennews/art.shtml?num=40100

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Атака через подстановку аргументов при использовании масок в..."  +25 +/
Сообщение от Аноним (??) on 28-Июн-14, 10:44 
OMG, незнал что такое возможно
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

7. "Атака через подстановку аргументов при использовании масок в..."  +/
Сообщение от Аноним (??) on 28-Июн-14, 11:23 
Ещё вот так можно: http://linsovet.org.ua/content/chmod-x-chmod
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

17. "Атака через подстановку аргументов при использовании масок в..."  +/
Сообщение от Аноним (??) on 28-Июн-14, 13:53 
# stat -c '%A' ./chmod
-rw-r--r--

# /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 ./chmod --help
Использование: ./chmod [КЛЮЧ]... РЕЖИМ[,РЕЖИМ]… ФАЙЛ
       или:    ./chmod [КЛЮЧ]… ВОСЬМ-РЕЖИМ ФАЙЛ…
       или:    ./chmod [КЛЮЧ]… --reference=ОФАЙЛ ФАЙЛ…
Смена РЕЖИМА доступа к указанным ФАЙЛАМ.
При задании --reference, установить режим
указанных ФАЙЛОВ как у ЭФАЙЛА.

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

59. "Атака через подстановку аргументов при использовании масок в..."  +6 +/
Сообщение от Аноним (??) on 28-Июн-14, 21:24 
> Использование: ./chmod [КЛЮЧ]... РЕЖИМ[,РЕЖИМ]… ФАЙЛ

Русский chmod. Бессмысленно и беспощадно.

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

12. "Атака через подстановку аргументов при использовании масок в..."  –2 +/
Сообщение от бедный буратино (ok) on 28-Июн-14, 12:24 
бывало, ловил. :) оттуда у меня и замена - на A в скриптах :)
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

19. "Атака через подстановку аргументов при использовании масок в..."  +/
Сообщение от Журналовращатель on 28-Июн-14, 13:59 
Не знал, что такое не возможно

//fixed

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

2. "Атака через подстановку аргументов при использовании масок в..."  +3 +/
Сообщение от Аноним (??) on 28-Июн-14, 10:59 
> [leon@defensecode WILD]$ strace rm *
> execve("/bin/rm", ["rm", "DIR1", "DIR2", "DIR3", "file1.txt", "file2.txt",
> "file3.txt", "-rf"], [/* 25 vars */]) = 0
>              ^- HERE

Во FreeBSD, кстати, не сработает.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Атака через подстановку аргументов при использовании масок в..."  +15 +/
Сообщение от A.Stahl (ok) on 28-Июн-14, 11:00 
Как и многое другое:)
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Атака через подстановку аргументов при использовании масок в..."  +1 +/
Сообщение от Аноним (??) on 28-Июн-14, 11:02 
Раньше считал это недальновидностью и непродуманностью UI, а оно вон как оказалось.
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

16. "Атака через подстановку аргументов при использовании масок в..."  +3 +/
Сообщение от vle (ok) on 28-Июн-14, 13:53 
>> [leon@defensecode WILD]$ strace rm *
>> execve("/bin/rm", ["rm", "DIR1", "DIR2", "DIR3", "file1.txt", "file2.txt",
>> "file3.txt", "-rf"], [/* 25 vars */]) = 0
>>              ^- HERE
> Во FreeBSD, кстати, не сработает.

Во FreeBSD в отличие от glibc несломанный POSIX getopt(3).
Так что передастся rm-у "-rf" как опция или как файларгумент будет зависеть от того,
на какое место она станет после раскрытия *.
Но в целом "проблема" глобальна.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

23. "Атака через подстановку аргументов при использовании масок в..."  +/
Сообщение от Аноним (??) on 28-Июн-14, 14:27 
нужно ещё после -rf добавить оидн пусть как минимум
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

28. "Атака через подстановку аргументов при использовании масок в..."  +3 +/
Сообщение от pavlinux (ok) on 28-Июн-14, 15:02 
Пусть - это ласковое название символа пробела?
Ответить | Правка | ^ к родителю #23 | Наверх | Cообщить модератору

57. "Атака через подстановку аргументов при использовании масок в..."  +1 +/
Сообщение от Аноним (??) on 28-Июн-14, 21:01 
> Пусть - это ласковое название символа пробела?

Ну так "пустота" же.

Ответить | Правка | ^ к родителю #28 | Наверх | Cообщить модератору

5. "Атака через подстановку аргументов при использовании масок в..."  –2 +/
Сообщение от Аноним (??) on 28-Июн-14, 11:07 
забавно.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

6. "Атака через подстановку аргументов при использовании масок в..."  +13 +/
Сообщение от Аноним (??) on 28-Июн-14, 11:18 
два минуса придумали как раз для этого, для разделения интерпретируемых аргументов и подставленных имён файлов
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

8. "Атака через подстановку аргументов при использовании масок в..."  +1 +/
Сообщение от Anonymus on 28-Июн-14, 11:31 
Всё равно это бага, broken by design по ихнему. Интерпретатор понятия не имеет о назначении аргументов. Правильное решение когда программа сама обрабатывает маски, а не когда приходится вбивать слеш или заворачивать маску в кавычки. И, кстате, в некоторых случаях (а у некоторых -- очень даже во многих) легко напороться на дофига файлов и упереться в ограничение длины командной строки.
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

9. "Атака через подстановку аргументов при использовании масок в..."  +6 +/
Сообщение от Аноним (??) on 28-Июн-14, 11:35 
для этого и придумали два минуса, всё что после них обрабатывается как имя файла, а реализовывать один и тот же алгоритм разбора масок в каждой программе достаточно глупо.
Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "Атака через подстановку аргументов при использовании масок в..."  –1 +/
Сообщение от Anonymus on 28-Июн-14, 12:14 
ага, C startup code в каждой программе вообще глупость, да?
Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

22. "Атака через подстановку аргументов при использовании масок в..."  +1 +/
Сообщение от Аноним (??) on 28-Июн-14, 14:25 
идиотское сравнение
Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

33. "Атака через подстановку аргументов при использовании масок в..."  +5 +/
Сообщение от Аноним (??) on 28-Июн-14, 15:52 
> ага, C startup code в каждой программе

А в некоторых его может и не быть. Облом, правда? :)

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

42. "Атака через подстановку аргументов при использовании масок в..."  +/
Сообщение от Ordu email(ok) on 28-Июн-14, 17:51 
> для этого и придумали два минуса, всё что после них обрабатывается как
> имя файла, а реализовывать один и тот же алгоритм разбора масок
> в каждой программе достаточно глупо.

Вообще-то, для решения этой проблемы были придуманы библиотеки, в т.ч. и shared библиотеки. И ведь в libc подобный алгоритм не был бы лишним, между прочим.

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

65. "Атака через подстановку аргументов при использовании масок в..."  –1 +/
Сообщение от Аноним (??) on 29-Июн-14, 01:15 
> для этого и придумали два минуса

А обрабатывать два минуса в каждой программе, это умно, ага.

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

120. "Атака через подстановку аргументов при использовании масок в..."  +1 +/
Сообщение от Аноним email(??) on 29-Июн-14, 23:28 
> А обрабатывать два минуса в каждой программе, это умно, ага.

man 3 getopt

Ответить | Правка | ^ к родителю #65 | Наверх | Cообщить модератору

121. "Атака через подстановку аргументов при использовании..."  +1 +/
Сообщение от arisu (ok) on 29-Июн-14, 23:32 
>> А обрабатывать два минуса в каждой программе, это умно, ага.
> man 3 getopt

cуровые джедаи не пользуются библиотеками. даже libc.

Ответить | Правка | ^ к родителю #120 | Наверх | Cообщить модератору

20. "Атака через подстановку аргументов при использовании масок в..."  +2 +/
Сообщение от Аноним (??) on 28-Июн-14, 14:21 
Работа с аргументной строкой как с монолитной raw строкой в принципе 'broken by design', случай с разворачиванием звёздочки только один из подобных негативных сайдэффектов. В нормальной архитектуре чанки аргументной строки должны быть теггированы.
Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

41. "Атака через подстановку аргументов при использовании масок в..."  +/
Сообщение от Ordu email(ok) on 28-Июн-14, 17:47 
Если говорить о linux'е, то ни о каких монолитных raw строках речи не идёт. В помощь вам: man 2 execve.
Затем, правда, мой склероз мне отказывает, и я уже не могу сказать, кто именно заполняет argv[] и envp[] для процесса -- libc или ядро, -- но даже если и libc, то всё равно речь идёт вовсе не о "монолитной raw" строке, но о argz/envz векторах, заботливо положенных ядром на стек. Что, вероятно, можно эксплуатировать, используя то, что символ '\0' имеет особое сакральное значение. Но, глядя на заголовок execve, признаемся себе, что вряд ли.
Так что случай с разворачиванием звёздочки -- это негативный сайдэффект какой-то другой проблемы, и вовсе не фиктивной проблемы каких-то там "монолитных raw-строк".
Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

43. "Атака через подстановку аргументов при использовании масок в..."  +1 +/
Сообщение от rob pike on 28-Июн-14, 17:54 
Товарищ явно имел в виду что-то типа Windows Shell, чтоб шаг влево-вправо - расстрел.
Ответить | Правка | ^ к родителю #41 | Наверх | Cообщить модератору

50. "Атака через подстановку аргументов при использовании масок в..."  –1 +/
Сообщение от Crazy Alex (ok) on 28-Июн-14, 19:45 
Расстрелом делать не обязательно, но метаинформация - вообще штука хорошая
Ответить | Правка | ^ к родителю #43 | Наверх | Cообщить модератору

85. "Атака через подстановку аргументов при использовании масок в..."  +2 +/
Сообщение от rob pike on 29-Июн-14, 11:18 
Для чего хорошая? В каких случаях хорошая?

Вы серьезно готовы отстаивать точку зрения о том что именно шелл - то самое место где имеет смысл жертвовать гибкостью ради прочего?

Тем более что пример-то - прямо перед глазами, Windows PowerShell же, в котором проще застрелиться (или, что чаще - написать скрипт прямо на С#) чем сделать что-то, чего разработчики не предусмотрели эксплицитно.

Ответить | Правка | ^ к родителю #50 | Наверх | Cообщить модератору

95. "Атака через подстановку аргументов при использовании масок в..."  +/
Сообщение от Crazy Alex (ok) on 29-Июн-14, 14:54 
Сильно зависит от реализации, конечно, но в общем - Я бы предпочёл для любых случаев иметь формализованный вариант и текущий как фоллбек. Потому что одно дело - быстро наляпать одноразовый скрипт для известных данных, а другое - какие-то долго/часто используемые инструменты или программы со сложным выводом вроде ps.

И, право, я не вижу ничего ужасного в том, чтобы отдавать вывод какого-нибудь PS в формате protocol buffers или аналогичном - с именованными и типизированными полями. И параметры командной строки иметь умные, со стандартно задаваемыми списками значений, без возни с кавычками и апострофами и так далее. А заодно - вместо sh/bash - что-нибудь хотя бы на уровне питона. Ну чтобы хоть арифметика нормальная была, переменные, контейнеры ключ-значение и т.д.

А PowerShell - это всего лищь паршивая реализация, и только. Майкрософт вообще угробила кучу хороших идей убогой релаизацией - хотя бы идею компонентной ОС вспомнить, когда у большинства майкрософтовских продуктов COM-интерфейсы дают все возможности гуя и даже большие - но при этом пользоваться этой мерзостью предельно неприятно. Тужа же - OLE.

Ответить | Правка | ^ к родителю #85 | Наверх | Cообщить модератору

105. "Атака через подстановку аргументов при использовании..."  +1 +/
Сообщение от arisu (ok) on 29-Июн-14, 19:34 
как минимум шелл ты себе можешь заменить на что угодно. знаешь, он ведь не прибит гвоздями к ядру.

более того: из этого своего шелла ты можешь вызывать другие программы, передавая им значения так, как хочешь. только свои, конечно, потому что остальные никто переписывать не станет. но можно сделать над ними обёртки, которые, зная параметры вызываемых программ, будут стараться обеспечивать какую-то безопасность и сервис.

Ответить | Правка | ^ к родителю #95 | Наверх | Cообщить модератору

136. "Атака через подстановку аргументов при использовании..."  –1 +/
Сообщение от Crazy Alex (ok) on 30-Июн-14, 04:42 
Мне не шелл бы, а соглашение о формате. В идеале - поддержанная на уровне системы метаинформация для пайпов, чтобы реципиент мог узнать хоть что-то о получаемом потоке данных не полагаясь на его контент (который, разумеется, может быть каким угодно). К примеру, уметь устанавливать писателем и получать читателем mimetype или что-о подобное. Дальше - делать форк coreutils, умеющий это дело понимать.

А шелл - это уже глазурь на торте, хотя я не могу понять, чего они до сих пор такие уродливые.

Ответить | Правка | ^ к родителю #105 | Наверх | Cообщить модератору

137. "Атака через подстановку аргументов при использовании..."  +1 +/
Сообщение от arisu (ok) on 30-Июн-14, 04:47 
> Мне не шелл бы, а соглашение о формате.

так в чём проблема-то? пишешь библиотеку сборки и парзинга твоего нового формата, пишешь шелл, который её использует — телемаркет! ну, и дальше усердно пишешь обёртки.

но всё это лишнее, на самом деле. по крайней мере, для консоли — лишнее.

Ответить | Правка | ^ к родителю #136 | Наверх | Cообщить модератору

154. "Атака через подстановку аргументов при использовании..."  –1 +/
Сообщение от Crazy Alex (ok) on 01-Июл-14, 10:10 
А теперь расскажи, как мне сделать, чтобы можно было из любого процесса, как-либо оплучившего fd, узнать, в каком формате  через него данные ждать. Ну, то есть можно в /tmp пытаться что-то вроде базы держать, но маразм же. А иначе - смысла не имеет, выдумывать способ детектирования - это нарываться на проблемы.

Что до консоли - я вообще не уверен, что она должна оставаться в нынешнем виде. Зачем нужна текстовая консоль, если везде графические терминалы? А вот иметь не тупой поток байт, а структуру - команды, коды возврата и история их stdin/stdout/stderr по отдельности (и не забываем - этот вывод тоже структурирован, что позволяет, например, сделать разумный фолдинг), те самые шелл-паттерны a-la списки файлов, выбираемые в каком-то своём интерфейсе и отображаемые соответственно, и так далее - было бы куда как интереснее. Например, в половине случаев те же severity levels консольного лога было бы удобнее в консоли обрабатывать, а не в приложении, когда нагрузку лог создаёт малую, а просто вывод флудит. А так - надо - открыл топ-левел, глянул, что нужно, закрыл и дальше смотришь одним глазом на консоль.

Ответить | Правка | ^ к родителю #137 | Наверх | Cообщить модератору

156. "Атака через подстановку аргументов при использовании..."  +2 +/
Сообщение от arisu (ok) on 01-Июл-14, 10:39 
> А теперь расскажи, как мне сделать, чтобы можно было из любого процесса,
> как-либо оплучившего fd, узнать, в каком формате  через него данные
> ждать.

1. уговорить автора использовать твою библиотеку для получения параметров.
2. написать очередную обёртку самому.

> Что до консоли - я вообще не уверен, что она должна оставаться
> в нынешнем виде. Зачем нужна текстовая консоль, если везде графические терминалы?

затем, что ничего мощнее и выразительней, при этом сравнимое по простоте использования, пока что не придумали.

задумайся над тем, что пиктографическое письмо вроде бы и красивей, и даже наглядней — но отчего-то не прижилось.

то, что ты предлагаешь, даёт усложнение концепции без явного выигрыша. подход никсов — «даём средства для построения механизмов». описываемый тобой подход: «вот вам готовые механизмы, кто недоволен — сам себе дурак.» у нас уже есть такая компания, сейчас они systemd занимаются.

Ответить | Правка | ^ к родителю #154 | Наверх | Cообщить модератору

163. "Атака через подстановку аргументов при использовании..."  +/
Сообщение от Crazy Alex (ok) on 01-Июл-14, 14:48 
Не, я просто хочу более мощные механизмы. В частности - мне не нравится, что куча инфы безвозвратно теряется при вываливании в байтовый поток, а я потом об это бьюсь, пытаясь понять, где там разделяются поля, где невесть что в имени файла, где формат поменялся потому что локаль не та и где я поставил три, а не четыре бэкслэша и поэтому экранирование кривое. Я, право же, не вижу, чем пачка инструментов, умеющих обрабатывать структуру, хуже такой же пачки, обрабатывающей текст, в который эту же структуру упростили. При том, что если нужен тупой текст, а получил структуру - это делается тривиально, а вот наоборот - шиш.

Мощность и выразительность при этом ни разу не теряются. Простота - сами тулзы (там, где разбор формата) получаются чуть сложнее, зато избавляем пользователя от кучи рутинных проблем и даём новые возможности. А как и насколько использовать эти возможности собственно в шелле/терминале - вот здесь уже дело хозяйское. Хоть вываливай как раньше, хоть делай возможность свертки вывода каждой команды и красивые диалоги выбора файлов - на усмотрение.

Ответить | Правка | ^ к родителю #156 | Наверх | Cообщить модератору

164. "Атака через подстановку аргументов при использовании..."  +3 +/
Сообщение от arisu (ok) on 01-Июл-14, 15:00 
хуже в том, что без специнструментов с этими структурами уже ничего не сделаешь. а текст можно руками напечатать и глазами прочитать. поэтому текст — универсален, хоть и немного неудобен временами. а спецструктуры — нет.

впрочем, это опыт, который приходит только после граблей. я, например, больше не делаю бинарных протоколов обмена. ибо граблями по лбу — больно.

Ответить | Правка | ^ к родителю #163 | Наверх | Cообщить модератору

165. "Атака через подстановку аргументов при использовании..."  +/
Сообщение от JL2001 (ok) on 14-Июл-14, 11:23 
в языках программирования это давно решено через Object.toString() и new Object(string)
не придумывайте граблей там где их нет

дико люто бешено не хватает нормально представления данных в консоли
на работе занимаюсь программированием и башобвязкой своих сервисов

Ответить | Правка | ^ к родителю #164 | Наверх | Cообщить модератору

166. "Атака через подстановку аргументов при использовании..."  +/
Сообщение от arisu (ok) on 14-Июл-14, 11:31 
хорошо, что мы никогда не столкнёмся в реале, товарищ Беспроблемный.
Ответить | Правка | ^ к родителю #165 | Наверх | Cообщить модератору

128. "Атака через подстановку аргументов при использовании масок в..."  +/
Сообщение от vi on 30-Июн-14, 00:25 

> Майкрософт вообще
> угробила кучу хороших идей

Послушайте Изя, он нас еще и коммерции учить будет ;)

Ответить | Правка | ^ к родителю #95 | Наверх | Cообщить модератору

140. "Атака через подстановку аргументов при использовании масок в..."  +/
Сообщение от rob pike on 30-Июн-14, 05:41 
> И, право, я не вижу ничего ужасного в том, чтобы отдавать вывод
> какого-нибудь PS в формате protocol buffers или аналогичном - с именованными
> и типизированными полями.

Теперь смотрим в сторону XML-RPC, и долго думаем почему он таки не взлетел.

> А PowerShell - это всего лищь паршивая реализация, и только.

Нет, не только.

> Майкрософт вообще угробила кучу хороших идей убогой релаизацией - хотя бы идею компонентной
> ОС вспомнить, когда у большинства майкрософтовских продуктов COM-интерфейсы дают все возможности
> гуя и даже большие - но при этом пользоваться этой мерзостью предельно неприятно.

Только если не понимать как она работает и пытаться её использовать через десяток кривых прокладок типа С++ с MFC.


Ответить | Правка | ^ к родителю #95 | Наверх | Cообщить модератору

142. "Атака через подстановку аргументов при использовании..."  +1 +/
Сообщение от arisu (ok) on 30-Июн-14, 05:45 
> Только если не понимать как она работает и пытаться её использовать через
> десяток кривых прокладок типа С++ с MFC.

да даже если понимать — это ужас. интерфейсы, которые спрашивают интерфейсы у интерфейсов, и всё это надо руками рефкаунтить, и… и ну его нафиг, такой хлебушек.

Ответить | Правка | ^ к родителю #140 | Наверх | Cообщить модератору

155. "Атака через подстановку аргументов при использовании масок в..."  +/
Сообщение от Crazy Alex (ok) on 01-Июл-14, 10:21 
Он много почему не взлетел. И потому что нефиг совать RPC туда, где должны быть сообщения, и потому что сам формат ужасен и в принципе не пригоден для быстрого обмена, особенно бинарными данными. И вообще XML-RPC - это не о том. Я не предлагаю на всё наклепать жесткие прототипы, а просто если есть в выводе поля - их аннотировать и разделять. То есть прилетает ридеру что-то - он в глаза может формата не знать, но если ему нужно поле "foo" - он смотрит в заголовок, видит, как это поле выгрести из структуры и выгребает. Ничего из возможностей того же grep и прочих утилит это не отменяет, просто избавляет от игр с разделителями, экранированием и тому подобным.


И с COM - та же проблема, что с XML-RPC - чересчур переусложнено, рефкаунтинг, RPC там, где сервер может и не ответить, и так далее.

Ответить | Правка | ^ к родителю #140 | Наверх | Cообщить модератору

167. "Атака через подстановку аргументов при использовании масок в..."  +/
Сообщение от Vkni (ok) on 14-Июл-14, 16:53 
> А PowerShell - это всего лищь паршивая реализация, и только.

Нет. Это именно дурная идея. PowerShell стоит на базе .NET'а, система типов которого крайне устарела, и многое не поддерживает. Чтобы заменить bash по удобству, нужно иметь что-то по мощности системы типов не уступающее Хаскеллю. Да и по другим параметрам bash на объектно-ориентированный язык не заменяется.

Ответить | Правка | ^ к родителю #95 | Наверх | Cообщить модератору

61. "Атака через подстановку аргументов при использовании масок в..."  +/
Сообщение от Аноним (??) on 28-Июн-14, 21:31 
> Товарищ явно имел в виду что-то типа Windows Shell, чтоб шаг влево-вправо - расстрел.

Пусть он им попробует попользоваться. Интересно через сколько часов (или дней) он застрелится.

Ответить | Правка | ^ к родителю #43 | Наверх | Cообщить модератору

74. "Атака через подстановку аргументов при использовании масок в..."  +/
Сообщение от Аноним (??) on 29-Июн-14, 01:42 
> Товарищ явно имел в виду что-то типа Windows Shell, чтоб шаг влево-вправо - расстрел.

товарищ имел явно в виду только то что написал, а именно речь шла о протоколе передачи аргументной строки. а не о форме реализации ui. PS в этом срезе ничего принципально не меняет.

В реализации к execve() кроме массива строк с аргументами добавляется ещё один массив с тегами, каждый тег чиселка чего-то означающая. По умолчанию все теги RAW, тогда программа должна интерпретировать их как делала это раньше. Кромe RAW могут быть другие хинты типа PATH, OPT, VALUE мб ещё несколько хинтов, много их не нужно. Вот и вся технология теггирования, полностью совместима со старым методом передачи аргументов и даёт возможность новому ПО не натыкаться на типичные проблемы. Это уже ответ на вопрос ниже как бы не поломать гибкость.

Ответить | Правка | ^ к родителю #43 | Наверх | Cообщить модератору

75. "Атака через подстановку аргументов при использовании..."  +/
Сообщение от arisu (ok) on 29-Июн-14, 01:59 
опять эти улучшатели… всем лёнины лавры покоя не дают.
Ответить | Правка | ^ к родителю #74 | Наверх | Cообщить модератору

86. "Атака через подстановку аргументов при использовании масок в..."  +/
Сообщение от rob pike on 29-Июн-14, 11:24 
И получится у вас XML-RPC.
Это именно то чего не хватало командной строке, да.
Ответить | Правка | ^ к родителю #74 | Наверх | Cообщить модератору

89. "Атака через подстановку аргументов при использовании масок в..."  –1 +/
Сообщение от all_glory_to_the_hypnotoad (ok) on 29-Июн-14, 12:15 
В каком месте это хоть как-то похоже на xml-rpc? Тут, конечно, понятно что ты херню несёшь составленную из незнакомых слов, но может потрудишься хотя бы в википедию сходить и сделать сравнение.
Ответить | Правка | ^ к родителю #86 | Наверх | Cообщить модератору

72. "Атака через подстановку аргументов при использовании масок в..."  +/
Сообщение от Аноним (??) on 29-Июн-14, 01:28 
если говорить о linux и юниксах, где значительная часть операций идёт через шел, то строки именно монолитные и в execve попадают порезанными примерно по пробелам шеллом. Покрути своей невнимательнйо мордочкой вверх и узри что речь идёт о sh.

И эта порезка на части для execve() даже при правильном использовании без теггирования мало чем помогает. Как правильно выше заметили, вызывающая сторона ничего не знает о семантике аргументов (sh или ей аналогичный генератор строк), либо легко ошибиться с порядком и кол-вом - нет никаких способов защиты от таких распрастранённых ошибок.

Ответить | Правка | ^ к родителю #41 | Наверх | Cообщить модератору

73. "Атака через подстановку аргументов при использовании..."  +1 +/
Сообщение от arisu (ok) on 29-Июн-14, 01:35 
> нет никаких способов защиты от таких распрастранённых ошибок.

это у говнокодеров нет. у остальных нормальных людей есть конвенции по интерпретации параметров и волшебный параметр «--».

тэгирование — это, конечно, стильно, модно и всё такое. а как тэгировать параметр «truiwghiuwhg»? это у меня кот пробежал? или это я файл такой создать хочу? или у меня уже есть такой файл, но я не его имел в виду, а вовсе даже выругался? угу, привет, очередные костыли для задания типов аргументов, экраны и прочая механика, которая уже и так есть. только на этот раз — с идиосткими усложнениями и тотальным ломанием интерфейсов, как любят хипстеры.

Ответить | Правка | ^ к родителю #72 | Наверх | Cообщить модератору

76. "Атака через подстановку аргументов при использовании..."  +2 +/
Сообщение от all_glory_to_the_hypnotoad (ok) on 29-Июн-14, 02:04 
> это у говнокодеров нет. у остальных нормальных людей есть конвенции по интерпретации параметров и волшебный параметр «--».

обезьяна, ты что такая тупая? '--' всего лишь частный костылик который даже в случае с передачей путей подходит не для каждой команды. И конвенций нигде никаких нет.

> тэгирование — это, конечно, стильно, модно и всё такое. а как тэгировать параметр «truiwghiuwhg»? это у меня кот пробежал? или это я файл такой создать хочу? или у меня уже есть такой файл, но я не его имел в виду, а вовсе даже выругался?

ну ты то со своей головой дружишь или совсем никак? Если передаёшь какой-то аргумент программе, то должен знать что передаёшь. Хотя бы должен занть что из передаваемого ключи, а что нет. Для хинтов этого хватит.

Если передаёшь аргумент из другой программы, например через execve(), то всегда знаешь как правильно расставить хинты. sh всегда может правильно расставить хинт для подстановки звёздочек и глоббинга. Придумать ui, который сможет догадываться где опции и где нет тоже можно.

Программы с далеко идущими сайдэффектами в свою очередь (rm, например) могут отказываться что-то делать с непроставленными тегами.

> угу, привет, очередные костыли для задания типов аргументов, экраны и прочая механика, которая уже и так есть. только на этот раз — с идиосткими усложнениями и тотальным ломанием интерфейсов, как любят хипстеры.

это всего лишь твои фантазии, интерфейс не ломается. Я честно не понимаю, почему всякое ламерьё постоянно додумывает решение в каком-то совершенно маразматическом виде из всех возможных

Ответить | Правка | ^ к родителю #73 | Наверх | Cообщить модератору

77. "Атака через подстановку аргументов при использовании..."  –2 +/
Сообщение от arisu (ok) on 29-Июн-14, 02:13 
хм, а раньше ты таким идиотом не был. или маскировался хорошо? in either case: fuck you.
Ответить | Правка | ^ к родителю #76 | Наверх | Cообщить модератору

78. "Атака через подстановку аргументов при использовании..."  +1 +/
Сообщение от vle (ok) on 29-Июн-14, 03:44 
>> это у говнокодеров нет. у остальных нормальных людей есть конвенции по интерпретации параметров и волшебный параметр «--».
> обезьяна, ты что такая тупая? '--' всего лишь частный костылик который даже
> в случае с передачей путей подходит не для каждой команды.

Если разработчик вменяемый, он использует getopt(3) или getopt_long(3).
В обоих случаях наличие "--" гарантировано.
В случае getopt(3) гарантировано по POSIX.

Ответить | Правка | ^ к родителю #76 | Наверх | Cообщить модератору

88. "Атака через подстановку аргументов при использовании..."  –1 +/
Сообщение от all_glory_to_the_hypnotoad (ok) on 29-Июн-14, 12:12 
точно прочитал мой коммент прежде чем отвечать?
Ответить | Правка | ^ к родителю #78 | Наверх | Cообщить модератору

83. "Атака через подстановку аргументов при использовании масок в..."  +1 +/
Сообщение от Anonym2 on 29-Июн-14, 10:52 
> если говорить о linux и юниксах, где значительная часть операций идёт через
> шел, то строки именно монолитные и в execve попадают порезанными примерно
> по пробелам шеллом. Покрути своей невнимательнйо мордочкой вверх и узри что
> речь идёт о sh.
> И эта порезка на части для execve() даже при правильном использовании без
> теггирования мало чем помогает. Как правильно выше заметили, вызывающая сторона ничего
> не знает о семантике аргументов (sh или ей аналогичный генератор строк),
> либо легко ошибиться с порядком и кол-вом - нет никаких способов
> защиты от таких распрастранённых ошибок.

Вызывающая сторона как раз должна знать. И эта сторона - не sh. Однако sh делает некоторое сложнопредсказуемое для некоторых вызывающих сторон преобразование...

Ответить | Правка | ^ к родителю #72 | Наверх | Cообщить модератору

107. "Атака через подстановку аргументов при использовании масок в..."  +/
Сообщение от Алексей (??) on 29-Июн-14, 21:09 
Так это вызывающие стороны мануал по шеллу не читали, поэтому трудно предсказывать
Ответить | Правка | ^ к родителю #83 | Наверх | Cообщить модератору

90. "Атака через подстановку аргументов при использовании масок в..."  +/
Сообщение от Ordu email(ok) on 29-Июн-14, 13:02 
> если говорить о linux и юниксах, где значительная часть операций идёт через
> шел, то строки именно монолитные и в execve попадают порезанными примерно
> по пробелам шеллом. Покрути своей невнимательнйо мордочкой вверх и узри что
> речь идёт о sh.

Простите, я полагаю порезку "примерно по пробелам" неизбежной. Можно конечно заменить "примерно пробелы" "примерно запятыми", или "примерно точками с запятой", но, по-моему, ничего от этого коренным образом не изменится: процесс парсинга скрипта/командной строки неизбежен. Будем ли мы дополнять его тегированием, или не будем, но резать строку на части всё равно придётся, потому что я вбиваю команды разбивая отдельные части пробелами.

> И эта порезка на части для execve() даже при правильном использовании без теггирования
> мало чем помогает.

Расскажите мне, как вы планируете тегировать поток черектеров проходящий через pipe. Ведь список аргументов может генерироваться сторонним процессом, и передаваться в качестве аргументов целевому. Можно не тегировать pipe, можно просто договориться, что через пайп можно передавать лишь аргументы отличные от опций. Но это тоже ведь не совсем удачно, а если я дополняю в стороннем процессе каждый аргумент опцией-"тегом", поясняющей что это за аргумент? Ну, например, генерирую последовательность: --ifile=a --ofile=b --ifile=c --ofile=d...

Отмечу, что теги придётся уметь хранить и в файле, потому, что создавая список файлов/опций для вызова программы (б.м. многократного), бывает удобно складывать список опций/файлов в файлик, по одной на строке. Отмечу, что механизм тегирования будет необходим в виде самостоятельного механизма, который я, как пользователь командной строки, должен иметь возможность использовать тогда, когда мне это удобно, потому что случается собирать аргументы из данных имеющих строковый или числовой тип. То есть из строк и чисел я хочу получать, по-желанию, имя файла или просто аргумент, так как я захочу, а не так как решит "эвристика" программы, которая будет заниматься тегированием.

В общем я к тому клоню, что если начать тегировать, то кончится это неуёмным использованием xml'я во все щели. Быть может, разработчики-таки придумают свой синтаксис, покомпактнее xml'я, но, боюсь, сильно лучше от этого не станет. От читабельности вывода программ придётся отказаться точно. Может это и к лучшему, но до тех пор, пока вы бестолково рассуждаете о том, как бы было хорошо, если бы кто-нибудь сделал хорошо, оценить ваши идеи мы не можем. Чтобы донести свои идеи до окружающих, надо писать код, вы ведь в курсе этого?

И, между прочим, чтобы решить описанную выше проблему, я могу предложить вам следующий скрипт в cron'е: find / -name '-*' -exec rm -rf -- {} \; Решение половинчатое, правильнее было бы на уровне vfs запретить создание файлов начинающихся с -. Но это уже для тех, кому больше всех надо. Отмечу что такое решение, по сравнению с вашим существенно проще и убивает проблему на корню, а не переносит её в другую плоскость. Создаётся, правда, второстепенная проблема -- невозможность иметь в файловой системе файлы начинающиеся с '-', но это не столь критично, по-моему: мне не приходилось сталкиваться с файлами, чьё имя начиналось бы с -.

Ответить | Правка | ^ к родителю #72 | Наверх | Cообщить модератору

91. "Атака через подстановку аргументов при использовании масок в..."  +1 +/
Сообщение от rob pike on 29-Июн-14, 13:35 
> кончится это неуёмным использованием xml'я во все щели

Сейчас вам объяснят что раз угловых скобочек для тэгов не предлагалось в исходном сообщении, то подобные аналогии неуместны. И в википедию отправят.

Ответить | Правка | ^ к родителю #90 | Наверх | Cообщить модератору

96. "Атака через подстановку аргументов при использовании масок в..."  –2 +/
Сообщение от all_glory_to_the_hypnotoad (ok) on 29-Июн-14, 15:00 
> Будем ли мы дополнять его тегированием, или не будем, но резать строку на части всё равно придётся, потому что я вбиваю команды разбивая отдельные части пробелами.

Ты ничего не разбиваешь пробелами в командной строке, это фикция в твоей голове. Даёшь одну монолитную строчку интерпретатору который решает как её бить на части. Обычно твоя интуитивная фикция совпадает с тем, что делает (ba)sh интерпретатор, но не всегда.

Снижение расхождения между интуитивной интерпретацией человеком входных данных с фактическими это задача UI и его возможности снижения ошибок полностью ограниченны сверху протоколом передачи аргументов в программу. Выше речь идёт о последнем, т.е. о протоколе, а не о принципах устройства твой оболочки.

Немного отхотя от темы замечу, что у шелла есть достаточно данных для анализа вводимой строки и теггирования её частей. Например, шелл всегда знает что является результатот глоббинга, знает через autocomplete что ожидается в какой-то позиции - через свою же подстановку путей или через вспомогательный скрипт, который делает некий синтаксический разбор и уже имеет теггированные части.

Всем срать что ты там делаешь у себя в командной строчке. (ba)sh используется для автоматизации различных процессов и большая часть проблем возникает именно здесь, а не у тебя в ручном режиме. Оснвная задача теггированя это дать возможность защиты от ошибок в автоматике.

> Расскажите мне, как вы планируете тегировать поток черектеров проходящий через pipe. Ведь список аргументов может генерироваться сторонним процессом, и передаваться в качестве аргументов целевому.

Я то тут причём? Мне лично до одного места как ты будешь решать эту проблему. Каждый делает всё в меру своего идиотизма. Даже сейчас так никто не делает если хоть как-то обеспокоен проблемами безопасности. В процесс переадются какие-то структруированные, либо скалярные тривиальные, данные на основе которых уже происходит генерация опций.

В очередной раз попробую заметить, теггирование идёт на уровне протокола передачи аргументов процессу. заколебали тупить.

> Отмечу, что теги придётся уметь хранить и в файле, потому, что создавая список файлов/опций для вызова программы (б.м. многократного), бывает удобно складывать список опций/файлов в файлик, по одной на строке.

Аналогично, фантазии гогнокодера нет предела. Нормальные люди в файлах хранят структруированные данные на основне которых можно генерировать аргументы.

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

Уже выше писал как это работает. Теги это хинты назначаения частей строки, не знаю почему вдруг у вас голове они стали типами. Легаси код, или в случае невозможности проставить тег, ставит неопределённый тег RAW.

Например

rm -rf some_path

в теггированном виде будет как

[ ('-rf', OPT), ('some_path', RAW)]

или

[ ('-rf', OPT), ('some_path', VALUE)]

или, если bash сделал свой комплит

[ ('-rf', OPT), ('some_path', PATH)]

или в легаси режиме

[ ('-rf', RAW), ('some_path', RAW)]

> В общем я к тому клоню, что если начать тегировать, то кончится это неуёмным использованием xml'я во все щели. Быть может, разработчики-таки придумают свой синтаксис, покомпактнее xml'я, но, боюсь, сильно лучше от этого не станет.

у вас в голове всё смешалось в одну кучу. Прежде чем рассуждать нужно разобраться где есть что.

> И, между прочим, чтобы решить описанную выше проблему, я могу предложить вам следующий скрипт

это не решение, это последние беспомощные вопли утопающего.

Ответить | Правка | ^ к родителю #90 | Наверх | Cообщить модератору

98. "Атака через подстановку аргументов при использовании масок в..."  +/
Сообщение от Ordu email(ok) on 29-Июн-14, 16:14 
> Немного отхотя от темы замечу, что у шелла есть достаточно данных для
> анализа вводимой строки и теггирования её частей. Например, шелл всегда знает
> что является результатот глоббинга, знает через autocomplete что ожидается в какой-то
> позиции - через свою же подстановку путей или через вспомогательный скрипт,
> который делает некий синтаксический разбор и уже имеет теггированные части.
> Всем срать что ты там делаешь у себя в командной строчке. (ba)sh
> используется для автоматизации различных процессов и большая часть проблем возникает именно
> здесь, а не у тебя в ручном режиме. Оснвная задача теггированя
> это дать возможность защиты от ошибок в автоматике.

ммм...
> знает через autocomplete
> большая часть проблем возникает именно здесь, а не в ручном режиме

1. Как это связано между собой?
2. Вы не думали о том, чтобы заменить для себя sh на что-нибудь другое. На python/ruby/php... На что-нибудь, что позволит вам при написании автоматизирующих скриптов, использовать более удачный интерфейс, который сможет исправлять недостатки? По-моему, это было бы правильно, ведь sh, всё же, не зря сокращение от shell -- это, в первую очередь, интерактивная командная строка.

>> Расскажите мне, как вы планируете тегировать поток черектеров проходящий через pipe. Ведь список аргументов может генерироваться сторонним процессом, и передаваться в качестве аргументов целевому.
> Я то тут причём? Мне лично до одного места как ты будешь
> решать эту проблему. Каждый делает всё в меру своего идиотизма.

Тогда поясните цели, которыми вы руководствуетесь, выступая здесь.

>> Отмечу, что теги придётся уметь хранить и в файле, потому, что создавая список файлов/опций для вызова программы (б.м. многократного), бывает удобно складывать список опций/файлов в файлик, по одной на строке.
> Аналогично, фантазии гогнокодера нет предела. Нормальные люди в файлах хранят структруированные
> данные на основне которых можно генерировать аргументы.

Этим я занимаюсь иногда, но не тогда, когда решаю задачу, которую надо решить *однократно*. Возиться со структурированными данными, писать программы и комплексы программ для *однократной* задачи -- это идиотизм по-определению, поскольку *однократную* задачу быстрее решить вручную, чем через полный цикл разработки программы.

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

Потому что "тип" -- это очень удобное понятие из программирования, на которое красивым образом ложатся ваши "хинты", и позволяют разговаривать в привычных терминах, не изобретая велосипеда.

> Легаси код, или в случае невозможности проставить тег, ставит неопределённый тег RAW.

Это понятно. Но было бы неплохо, если бы хотя бы что-нибудь гарантированно имело бы тег, отличный от RAW. Например, чтобы опции команды, гарантированно имели бы тег OPT. Иначе какой смысл во всём этом тегировании?

>> В общем я к тому клоню, что если начать тегировать, то кончится это неуёмным использованием xml'я во все щели. Быть может, разработчики-таки придумают свой синтаксис, покомпактнее xml'я, но, боюсь, сильно лучше от этого не станет.
> у вас в голове всё смешалось в одну кучу. Прежде чем рассуждать
> нужно разобраться где есть что.

Несмотря на это ваше заявление, я всё же остаюсь при мнении, что вы не представляете себе проблему во всей её сложности. Вы понимаете, что для решения вашей проблемы, придётся заталкивать в язык шелла типизацию? То есть, переменные типа RAW, хранящие строки неопределённого назначения, переменные типа OPT, в которых идёт накопление опций для команды, которая будет запущена ниже. Заодно уж тогда, придётся завести переменные типа INT, и пр, дабы получив себе геморрой связанный с типизацией, иметь возможность извлечь из него максимум удобств. Опять же возникает вопрос: может вы используете не тот инструмент, для решения задач? Может на самом деле, взять python и написать в нём целый API заменяющий вызов system, который будет реализовывать эти самые типы данных, и по типам раскидывать опции и не-опции в командной строке так, чтобы запускаемая программа не путалась бы в соплях?

>> И, между прочим, чтобы решить описанную выше проблему, я могу предложить вам следующий скрипт
> это не решение, это последние беспомощные вопли утопающего.

Обоснуйте.

Ответить | Правка | ^ к родителю #96 | Наверх | Cообщить модератору

49. "Атака через подстановку аргументов при использовании масок в..."  +/
Сообщение от Crazy Alex (ok) on 28-Июн-14, 19:44 
Проблема в том, чтобы получить с правильной архитектурой ту же простоту... А так - согласен, парсинг текста - хороший фоллбек, но в большинстве случаев что-то более структурированное было бы неплохо иметь.
Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

67. "Атака через подстановку аргументов при использовании..."  +/
Сообщение от arisu (ok) on 29-Июн-14, 01:19 
> И, кстате, в некоторых случаях (а у некоторых -- очень даже
> во многих) легко напороться на дофига файлов и упереться в ограничение
> длины командной строки.

тридцать два килобайта. демоны, ЧТО можно делать с командной строкой, чтобы насрать туда тридцать два килобайта? точнее, каким дауном надо быть, чтобы развести у себя на технике такую помойку, которая раскроется на тридцать два килобайта?

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

109. "Атака через подстановку аргументов при использовании..."  +/
Сообщение от Алексей (??) on 29-Июн-14, 21:38 
ну во-первых не 32кб, реально можно столько использовать, на сколько памяти хватит. это вполне удобным бывает (чисто практически, а то что изначально механизм не предназначен был для больших объемов - так это эстетство уже).
Ответить | Правка | ^ к родителю #67 | Наверх | Cообщить модератору

112. "Атака через подстановку аргументов при использовании..."  +/
Сообщение от arisu (ok) on 29-Июн-14, 22:05 
реально это зависит от многих факторов, включая то, какой shell используется. на современных GNU/Linux с bash 32 килобайта точно пролазит, поэтому я взял это как минимум.
Ответить | Правка | ^ к родителю #109 | Наверх | Cообщить модератору

125. "Атака через подстановку аргументов при использовании..."  +/
Сообщение от Алексей (??) on 30-Июн-14, 00:03 
лимит - четверть максимального размера стека (RLIMIT_STACK), гарантируется не менее 128кб, по дефолту мне везде попадалось 2мб (макс. память, занятая аргументами execve, включая env). но это искуственное ограничение, в баше достаточно сделать ulimit -s unlimited, и пролезет столько, сколько памяти хватит. и сами данные не в стеке находятся (ограничение на аргументы ставится для того, чтобы обеспечить выделение памяти под стек).
Ответить | Правка | ^ к родителю #112 | Наверх | Cообщить модератору

132. "Атака через подстановку аргументов при использовании..."  +/
Сообщение от arisu (ok) on 30-Июн-14, 01:15 
про shell тактично не заметил?

впрочем, я старпёр, предпочитаю ограничиваться 32kb.

Ответить | Правка | ^ к родителю #125 | Наверх | Cообщить модератору

134. "Атака через подстановку аргументов при использовании..."  +/
Сообщение от Алексей (??) on 30-Июн-14, 02:23 
так shell сам не ограничивает длину, ограничивает ядро.
и если уж старперствовать по-полной, то лучше ограничиться 4кб :)
Ответить | Правка | ^ к родителю #132 | Наверх | Cообщить модератору

135. "Атака через подстановку аргументов при использовании..."  +/
Сообщение от arisu (ok) on 30-Июн-14, 02:42 
> так shell сам не ограничивает длину

lolwut?! O_O

Ответить | Правка | ^ к родителю #134 | Наверх | Cообщить модератору

149. "Атака через подстановку аргументов при использовании..."  –1 +/
Сообщение от all_glory_to_the_hypnotoad (ok) on 30-Июн-14, 22:47 
>  и сами данные не в стеке находятся

они находятся в стеке. Точнее вначале куска памяти, конец которого потом превращается в стек. С точки зрения дяра это всё стек.

Ответить | Правка | ^ к родителю #125 | Наверх | Cообщить модератору

93. "Атака через подстановку аргументов при использовании масок в..."  +1 +/
Сообщение от анон on 29-Июн-14, 13:45 
это "broken by design" обсуждается с конца 80-х и есть антидоты.

плотно эти ребята занимаются безопасностью, если только открыли это для себя.

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

147. "Атака через подстановку аргументов при использовании масок в..."  +/
Сообщение от Андрей (??) on 30-Июн-14, 19:56 
> Правильное решение когда программа сама обрабатывает маски

Ну, т.е. как когда-то в DOS.

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

153. "Атака через подстановку аргументов при использовании..."  +2 +/
Сообщение от arisu (ok) on 01-Июл-14, 00:41 
>> Правильное решение когда программа сама обрабатывает маски
> Ну, т.е. как когда-то в DOS.

и в винде до сих пор.

конечно, забудьте про расширеные глобы, забудьте про регулярные выражения, ведь теперь этим занимается не шелл, а прикладной софт. каждая софтина в меру своей забагованности и неленивости её автора.

дальше они предложат запретить подстановку переменных в командных строках, а то и это тоже небезопасно: пусть каждая софтина сама как-нибудь это делает. правда, у софтины нет доступа к внутренним переменным шелла, но они и для этого какой-нибудь костыль выдумают, ведь придумывать костыли вместо того, чтобы включить мозг и прочесть документацию — это так увлекательно!

Ответить | Правка | ^ к родителю #147 | Наверх | Cообщить модератору

11. "Атака через подстановку аргументов при использовании масок в..."  +/
Сообщение от Аноним (??) on 28-Июн-14, 12:20 
> Например, если запустить "rm *" и в текущей директории окажется файл с именем "-rf"

Ололо...

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

13. "Атака через подстановку аргументов при использовании масок в..."  +/
Сообщение от бедный буратино (ok) on 28-Июн-14, 12:26 
tar cf archive.tar *

это же тар-бомба, которая крайне редко где применяется (а там, где применяется, уже один раз поймал и попортил себе систему :).

обычно tar cf archive.tar archive, чтобы потом удобно распаковывать было.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

27. "Атака через подстановку аргументов при использовании масок в..."  +3 +/
Сообщение от Xaionaro email(ok) on 28-Июн-14, 14:49 
Никогда не указываю «*» в таких командах. Во-первых не цепляет файлы «.*», во-вторых известно, что это ненадёжно (и небезопасно). Всегда тупо указываю путь к директории (и если это CWD, то тогда тупо «.»).
Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

34. "Атака через подстановку аргументов при использовании масок в..."  –1 +/
Сообщение от Аноним (??) on 28-Июн-14, 15:54 
> tar cf archive.tar *

Знаешь, то что он тебе разъе... систему - к лучшему. Научишься вызывать программы нормально, наконец.

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

38. "Атака через подстановку аргументов при использовании масок в..."  +6 +/
Сообщение от cmp (ok) on 28-Июн-14, 16:46 
угу, а еще ./*  разворачивается в ./-cheto-tam, то есть высосали из пальца проблему rm -rf *, времен 10-ти летней давности; а еще я читал историю в которой один мальчик набрал по приколу rm -rf * в корневой директории, мама позвола его обедать, а когда он вернулся, то нажал интер, чтобы разбудить комп и все убил;

Этим исследователям безопасности делать похоже нехер, если уж кому-то открылась консоль рута, то этот кто-то обязан отдавать себе отчет в каждом действии, иначе есть винда которая или переспросит, или тупо не даст совершить ошибку. А то вырастили поколение кликоманов, которые долбят по кнопкам не думая и не глядя, а вотом вопят на форумах, что система гавно раз не работает, а ведь они всего лишь случайно файлик удалили.

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

129. "Атака через подстановку аргументов при использовании масок в..."  +/
Сообщение от vi on 30-Июн-14, 00:37 

> он вернулся, то нажал интер, чтобы разбудить комп и все убил;

А почему не <CTRL>+<ALT>+<DEL>?

Ответить | Правка | ^ к родителю #38 | Наверх | Cообщить модератору

14. "Атака через подстановку аргументов при использовании масок в..."  +12 +/
Сообщение от Xasd (ok) on 28-Июн-14, 12:56 
mv -t /blahblah -- *

в чём проблема-то?

всегда так делаю.. и всегда делал раньше...

стоило ради этого писать новость?

вы ещё написали бы новость о том типа "О БОЖЕ, ЕСЛИ НЕ ЗАЭКРАНИРОВАТь В PHP HTML-ВЫВОД ЗНАЧЕНИЯ ПЕРЕМЕННОЙ ТО ПОЛУЧИТСЯ XSS!!"

ну детский сад же!

# P.S.: а по теме говоря -- всё идёт из-за непонимания того кто именно обрабатывает этот <*> (его обрабатывает BASH, но кто-то может подумать что это аргумент для mv, по аналогии с Microsoft Windows cmd.exe) .

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

36. "Атака через подстановку аргументов при использовании масок в..."  +1 +/
Сообщение от pv47 (ok) on 28-Июн-14, 16:33 
> стоило ради этого писать новость?

сугубо имхо, но, думаю, новость неспроста. где-то в недрах redhat планируется защита от таких "уязвимостей". например, перевод всех linux-утилит в стиль а-ля msdos, когда все маски обрабатываются не шеллом перед передачей команде, а самой командой. или вообще, systemd сочли законченным а поттернига занять нечем, и теперь он будет писать замену шеллу, в стиле PowerShell, с защитой от экранирования и пр.

по сути, аналогия с php на 100% верна.

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

138. "Атака через подстановку аргументов при использовании масок в..."  +1 +/
Сообщение от rob pike on 30-Июн-14, 05:21 
Там всё куда интересней.
https://lwn.net/Articles/602579
Ответить | Правка | ^ к родителю #36 | Наверх | Cообщить модератору

141. "Атака через подстановку аргументов при использовании..."  +2 +/
Сообщение от arisu (ok) on 30-Июн-14, 05:43 
> Там всё куда интересней.
> https://lwn.net/Articles/602579

когда же он уже уйдёт пилить свой kerneld-то?

Ответить | Правка | ^ к родителю #138 | Наверх | Cообщить модератору

144. "Атака через подстановку аргументов при использовании..."  +/
Сообщение от rob pike on 30-Июн-14, 08:54 
Одна из главных проблем с Леннартом - в том что все постоянно недооценивают уровень его притязаний.

Он пойдет пилить только _meta_kerneld.

Ответить | Правка | ^ к родителю #141 | Наверх | Cообщить модератору

145. "Атака через подстановку аргументов при использовании..."  +1 +/
Сообщение от arisu (ok) on 30-Июн-14, 09:09 
> Одна из главных проблем с Леннартом - в том что все постоянно
> недооценивают уровень его притязаний.
> Он пойдет пилить только _meta_kerneld.

чёрт, да хоть universed, лишь бы побыстрее и подальше…

Ответить | Правка | ^ к родителю #144 | Наверх | Cообщить модератору

146. "Атака через подстановку аргументов при использовании масок в..."  +2 +/
Сообщение от PnDx (ok) on 30-Июн-14, 16:52 
  Дет.сад для того, кто успел перелопатить гору документации и протоптаться по граблям.
  До сих пор ньюбов тыкают в маны, не обладающие, между прочим, выражаясь на математический манер, ни свойством полноты, ни свойством связности. Редких приличных ресурсов типа xgu явно недостаточно для формирования системного мышления.

  ЧСХ, я тоже начинал с подобных ляпов. Причём, перелопачивание инета зачастую помогает формированию бажного мировоззрения. Чего стоит "#!/usr/bin/env python" в скриптах, потенциально вызываемых из крона (с вычищенным окружением).

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

152. "Атака через подстановку аргументов при использовании..."  +1 +/
Сообщение от arisu (ok) on 01-Июл-14, 00:35 
> Чего стоит "#!/usr/bin/env python"

вот этого достаточно, в принципе.

Ответить | Правка | ^ к родителю #146 | Наверх | Cообщить модератору

157. "Атака через подстановку аргументов при использовании..."  –1 +/
Сообщение от Crazy Alex (ok) on 01-Июл-14, 10:59 
Знаешь, если выбирать между шеллом и питоном - то, пожалуй, питон всё же получше. Хоть инструменты приличные есть.
Ответить | Правка | ^ к родителю #152 | Наверх | Cообщить модератору

158. "Атака через подстановку аргументов при использовании..."  +/
Сообщение от arisu (ok) on 01-Июл-14, 11:03 
а зачем ограничивать выбор только ними двумя?
Ответить | Правка | ^ к родителю #157 | Наверх | Cообщить модератору

162. "Атака через подстановку аргументов при использовании..."  –1 +/
Сообщение от Crazy Alex (ok) on 01-Июл-14, 14:36 
Хм, логично. Хотя даже в питонине именно для "клея" между вызовами внешнего софта слишком много синтаксиса. Вот одно время был для перла модуль, который пытался все не найденные функции разрешать в вызовы system - примерно такое в питон бы надо. Но там думать и думать, чтобы сделать всё аккуратно.
Ответить | Правка | ^ к родителю #158 | Наверх | Cообщить модератору

26. "Атака через подстановку аргументов при использовании масок в..."  +2 +/
Сообщение от Психиатр (ok) on 28-Июн-14, 14:48 
> Специализирующаяся на компьютерной безопасности компания DefenseСode

так вот где работает КЭП.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

29. "Атака через подстановку аргументов при использовании масок в..."  +/
Сообщение от pavlinux (ok) on 28-Июн-14, 15:07 
> ... и команда выполнена под пользователем root

Чо, опять рута надо?!

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

31. "Атака через подстановку аргументов при использовании масок в..."  +1 +/
Сообщение от Аноним (??) on 28-Июн-14, 15:29 
>> ... и команда выполнена под пользователем root
> Чо, опять рута надо?!

Чтобы запустить бота под твоей учёткой рут нинужно.

Ответить | Правка | ^ к родителю #29 | Наверх | Cообщить модератору

35. "Атака через подстановку аргументов при использовании масок в..."  +2 +/
Сообщение от Аноним (??) on 28-Июн-14, 15:55 
> Чтобы запустить бота под твоей учёткой рут нинужно.

А можно мне копию бота "pavlinux"? Он такой клевый :).

Ответить | Правка | ^ к родителю #31 | Наверх | Cообщить модератору

47. "Атака через подстановку аргументов при использовании масок в..."  +/
Сообщение от Аноним (??) on 28-Июн-14, 18:29 
Вы еще один ненужный кэп?
Антивирус попова легко отлавливает таких ботов. Так что это неэффективно, кэп. Я могу написать такой анти вирус, если у вас болит.
Ответить | Правка | ^ к родителю #31 | Наверх | Cообщить модератору

80. "Атака через подстановку аргументов при использовании масок в..."  +/
Сообщение от Аноним (??) on 29-Июн-14, 08:20 
А вот нас посетил бот Попoва :).
Ответить | Правка | ^ к родителю #47 | Наверх | Cообщить модератору

39. "Атака через подстановку аргументов при использовании масок в..."  –1 +/
Сообщение от Аноним (??) on 28-Июн-14, 17:14 
Проблема из за того как аргументы обрабатывает сам getopt.h и то как они подаются в программу особенно если смешивать с getopt_long. Так как иногда не обязательно передавать полное имя аргумента чтобы он был воспринять программой
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

53. "Атака через подстановку аргументов при использовании масок в..."  +1 +/
Сообщение от Аноним (??) on 28-Июн-14, 20:20 
> "...как аргументы обрабатывает сам getopt.h"

Красноглазик, getopt.h ничего не обрабатывает. Даже если смотреть на исходники :)

Ответить | Правка | ^ к родителю #39 | Наверх | Cообщить модератору

40. "Атака через подстановку аргументов при использовании масок в..."  +/
Сообщение от Аноним email(??) on 28-Июн-14, 17:18 
На самом деле такие атаки вполне применимы на серверах хостинговых компаний. Там очень много скриптов автоматизации. Например такая частая штука как перенос аккаунта с сервера на сервер. Использование chown/chmod/rsync при таких операциях обычное дело и легко можно со стороны юзера инициировать атаку.

Поэтому аргумент, что админу нужно смотреть и думать перед выполнением каждой команды, не состоятелен. Не зная о таких методах атак легко напороться.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

44. "Атака через подстановку аргументов при использовании масок в..."  +/
Сообщение от pavlinux (ok) on 28-Июн-14, 17:59 
Пля, опять не работает. (Debian 6 LTS)
  
/etc/ssh/sshd_config: line 102: Bad configuration option: ProxyCommand

Ответить | Правка | ^ к родителю #40 | Наверх | Cообщить модератору

60. "Атака через подстановку аргументов при использовании масок в..."  +1 +/
Сообщение от Xaionaro email(ok) on 28-Июн-14, 21:26 
> На самом деле такие атаки вполне применимы на серверах хостинговых компаний. Там
> очень много скриптов автоматизации. Например такая частая штука как перенос аккаунта
> с сервера на сервер. Использование chown/chmod/rsync при таких операциях обычное дело
> и легко можно со стороны юзера инициировать атаку.
> Поэтому аргумент, что админу нужно смотреть и думать перед выполнением каждой команды,
> не состоятелен. Не зная о таких методах атак легко напороться.

От админа-идиота не спасёт ничего. И не надо портить систему в глазах нормальных админов потому, что админу-идиоту что-то не нравится.

Ответить | Правка | ^ к родителю #40 | Наверх | Cообщить модератору

68. "Атака через подстановку аргументов при использовании..."  +1 +/
Сообщение от arisu (ok) on 29-Июн-14, 01:22 
если там админы — дауны, то описаное в новости будет самой маленькой и самой неинтересной из вороха наличествующих там проблем.
Ответить | Правка | ^ к родителю #40 | Наверх | Cообщить модератору

45. "Атака через подстановку аргументов при использовании масок в..."  –1 +/
Сообщение от Kroz email(??) on 28-Июн-14, 18:06 
Как от этого защититься?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

46. "Атака через подстановку аргументов при использовании масок в..."  +1 +/
Сообщение от pavlinux (ok) on 28-Июн-14, 18:09 
> Как от этого защититься?

никого на сервер не пускать

Ответить | Правка | ^ к родителю #45 | Наверх | Cообщить модератору

69. "Атака через подстановку аргументов при использовании..."  +1 +/
Сообщение от arisu (ok) on 29-Июн-14, 01:23 
> Как от этого защититься?

купить где-нибудь рабочий мозг. или убить себя, это лучше и надёжней.

Ответить | Правка | ^ к родителю #45 | Наверх | Cообщить модератору

110. "Атака через подстановку аргументов при использовании масок в..."  +1 +/
Сообщение от Алексей (??) on 29-Июн-14, 21:50 
> Как от этого защититься?

не использовать маски в шелл-скриптах (а там где нужно через командную строку передавать программе списки файлов - использовать для запуска например find ... -print0|xargs -r0 ..., чтобы ситуации с левыми символами в именах обрабатывались явным образом).
а при интерактивной работе перед запуском команды маски удобно заменять на конкретные списки (в разных шеллах по-разному, но функция стандартная).

Ответить | Правка | ^ к родителю #45 | Наверх | Cообщить модератору

48. "Атака через подстановку аргументов при использовании масок в..."  +4 +/
Сообщение от Michael Shigorin email(ok) on 28-Июн-14, 19:34 
Здрасьте, не рассматривалось.  Они тоже вчера родившиеся убунтушники?

Оригинал текста на http://docs.altlinux.org/archive/2.2/master/devel-html/ch03.... датируется примерно 2001 или 2002 годом, самое позднее.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

58. "Атака через подстановку аргументов при использовании масок в..."  +2 +/
Сообщение от Аноним (??) on 28-Июн-14, 21:09 
> Здрасьте, не рассматривалось.  Они тоже вчера родившиеся убунтушники?
> Оригинал текста на http://docs.altlinux.org/archive/2.2/master/devel-html/ch03....
> датируется примерно 2001 или 2002 годом, самое позднее.

Миш, через несколько лет жди новость: "британские учёные обнаружили, что если открыть окно с эмулятором терминала, то А-А-А-А-А СТРАШНО ТУТ ЖЕ МОЖНО ВСЁ СНЕСТИ СЕВ ПОПОЙ НА КЛАВИАТУРУ!!!".

Ну или что-то в этом духе.

В общем, береги свой моск, с годами он будет цениться всё больше отнюдь не из-за антикварности. :)

Ответить | Правка | ^ к родителю #48 | Наверх | Cообщить модератору

161. "Атака через подстановку аргументов при использовании масок в..."  +/
Сообщение от Кирилл (??) on 01-Июл-14, 14:32 
> Миш, через несколько лет жди новость: "британские учёные обнаружили, что если открыть
> окно с эмулятором терминала, то А-А-А-А-А СТРАШНО ТУТ ЖЕ МОЖНО ВСЁ
> СНЕСТИ СЕВ ПОПОЙ НА КЛАВИАТУРУ!!!".

Попой то ладно. Но работа со строкой параметров в интерпретаторах, действительно, безальтернативно опасна: нет выбора между сложным, но безопасным, или простым, но опасным. Эту особенность никак ни обойти, ни нивелировать невозможно. Увы.

Ответить | Правка | ^ к родителю #58 | Наверх | Cообщить модератору

79. "Атака через подстановку аргументов при использовании масок в..."  +1 +/
Сообщение от RNZ (ok) on 29-Июн-14, 05:42 
Да. Эти чудеги могли-бы "Advanced Bash-Scripting Guide" почитать, разделы 3 и 9.1.
Ответить | Правка | ^ к родителю #48 | Наверх | Cообщить модератору

160. "Атака через подстановку аргументов при использовании масок в..."  +/
Сообщение от Кирилл (??) on 01-Июл-14, 14:28 
А вот представьте на секунду, что не только вы знаете об этом гиде. Более того, представьте, что баш не единственный интерпретатор на свете.
Ответить | Правка | ^ к родителю #79 | Наверх | Cообщить модератору

64. "Атака через подстановку аргументов при использовании масок в..."  +1 +/
Сообщение от Аноним (??) on 29-Июн-14, 00:39 
О, УЖАС.

1. man "--"

2. Реальные перцы не используют "*".

/thread

// b.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

66. "Атака через подстановку аргументов при использовании..."  +3 +/
Сообщение от arisu (ok) on 29-Июн-14, 01:16 
молодцы, чо. они, наконец, начали читать unix haters handbook, видимо. там их ещё много чудных открытий поджидает, ждём ещё пачку Ломающих Новостей.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

159. "Атака через подстановку аргументов при использовании масок в..."  +1 +/
Сообщение от Кирилл (??) on 01-Июл-14, 14:17 
Сей факт известен всем, кто хоть немного писал скрипты для bash-а. Проблема в том, что редко в каком языке вообще работа с вводом/вывод лишена такой же уязвимости.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру