top
logo


Атака через подстановку аргументов при использовании масок в командной строке PDF Печать E-mail
28.06.14 06:54

Специализирующаяся на компьютерной безопасности компания 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 ./*".

  1. Главная ссылка к новости (http://blog.defensecode.com/2014/06/back...)
Тип: Проблемы безопасности
Ключевые слова: shell, security, (найти похожие документы)
При перепечатке указание ссылки на opennet.ru обязательно
Реклама
id=adv>
  1.1, Аноним, 10:44, 28/06/2014 [ответить] [смотреть все] +22 +/
OMG, незнал что такое возможно
 
  2.7, Аноним, 11:23, 28/06/2014 [^] [ответить] [смотреть все] [показать ветку] +/
 
  3.17, Аноним, 13:53, 28/06/2014 [^] [ответить] [смотреть все]  +/
stat -c A chmod -rw-r--r-- lib x86_64-linux-gnu ld-linux-x86-64 so 2 ... весь текст скрыт [показать]
 
  4.59, Аноним, 21:24, 28/06/2014 [^] [ответить] [смотреть все]  +3 +/
Русский chmod Бессмысленно и беспощадно ... весь текст скрыт [показать]
 
2.12, бедный буратино, 12:24, 28/06/2014 [^] [ответить] [смотреть все] [показать ветку]  –1 +/ 2.19, Журналовращатель, 13:59, 28/06/2014 [^] [ответить] [смотреть все] [показать ветку]  +/ 
1.2, Аноним, 10:59, 28/06/2014 [ответить] [смотреть все]  +2 +/
Во FreeBSD, кстати, не сработает ... весь текст скрыт [показать]
 
  2.3, A.Stahl, 11:00, 28/06/2014 [^] [ответить] [смотреть все] [показать ветку]  +10 +/
Как и многое другое:)
 
  3.4, Аноним, 11:02, 28/06/2014 [^] [ответить] [смотреть все]  +1 +/
Раньше считал это недальновидностью и непродуманностью UI, а оно вон как оказало... весь текст скрыт [показать]
 
2.16, vle, 13:53, 28/06/2014 [^] [ответить] [смотреть все] [показать ветку]  +4 +/ 2.23, Аноним, 14:27, 28/06/2014 [^] [ответить] [смотреть все] [показать ветку]  +/ 
  3.28, pavlinux, 15:02, 28/06/2014 [^] [ответить] [смотреть все]  +3 +/
Пусть - это ласковое название символа пробела ... весь текст скрыт [показать]
 
  4.57, Аноним, 21:01, 28/06/2014 [^] [ответить] [смотреть все]  +1 +/
Ну так пустота же ... весь текст скрыт [показать]
 
1.5, Аноним, 11:07, 28/06/2014 [ответить] [смотреть все]  –1 +/  1.6, Аноним, 11:18, 28/06/2014 [ответить] [смотреть все]  +12 +/ два минуса придумали как раз для этого, для разделения интерпретируемых аргументов и подставленных имён файлов
 
  2.8, Anonymus, 11:31, 28/06/2014 [^] [ответить] [смотреть все] [показать ветку]  +2 +/
 
  3.9, Аноним, 11:35, 28/06/2014 [^] [ответить] [смотреть все]  +5 +/
для этого и придумали два минуса, всё что после них обрабатывается как имя файла... весь текст скрыт [показать]
 
  4.10, Anonymus, 12:14, 28/06/2014 [^] [ответить] [смотреть все]  +/
ага, C startup code в каждой программе вообще глупость, да ... весь текст скрыт [показать]
 
  5.22, Аноним, 14:25, 28/06/2014 [^] [ответить] [смотреть все]  +/
идиотское сравнение ... весь текст скрыт [показать]
 
5.33, Аноним, 15:52, 28/06/2014 [^] [ответить] [смотреть все]  +3 +/
А в некоторых его может и не быть Облом, правда ... весь текст скрыт [показать]
 4.42, Ordu, 17:51, 28/06/2014 [^] [ответить] [смотреть все]  +/
Вообще-то, для решения этой проблемы были придуманы библиотеки, в т ч и shared ... весь текст скрыт [показать]
 4.65, Аноним, 01:15, 29/06/2014 [^] [ответить] [смотреть все]  +/
А обрабатывать два минуса в каждой программе, это умно, ага ... весь текст скрыт [показать]
 
  5.120, Аноним, 23:28, 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 ... весь текст скрыт [показать]
 
  4.41, Ordu, 17:47, 28/06/2014 [^] [ответить] [смотреть все]  +/
Если говорить о linux е, то ни о каких монолитных raw строках речи не идёт В по... весь текст скрыт [показать]
 
  5.43, rob pike, 17:54, 28/06/2014 [^] [ответить] [смотреть все]  +/
Товарищ явно имел в виду что-то типа Windows Shell, чтоб шаг влево-вправо - расс... весь текст скрыт [показать]
 
  6.50, Crazy Alex, 19:45, 28/06/2014 [^] [ответить] [смотреть все]  +/
Расстрелом делать не обязательно, но метаинформация - вообще штука хорошая... весь текст скрыт [показать]
 
  7.85, rob pike, 11:18, 29/06/2014 [^] [ответить] [смотреть все]  +1 +/
Для чего хорошая В каких случаях хорошая Вы серьезно готовы отстаивать точку з... весь текст скрыт [показать]
 
  8.95, Crazy Alex, 14:54, 29/06/2014 [^] [ответить] [смотреть все]  +/
Сильно зависит от реализации, конечно, но в общем - Я бы предпочёл для любых слу... весь текст скрыт [показать]
 
  9.105, arisu, 19:34, 29/06/2014 [^] [ответить] [смотреть все]  +/
как минимум шелл ты себе можешь заменить на что угодно знаешь, он ведь не приби... весь текст скрыт [показать]
 
  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.75, arisu, 01:59, 29/06/2014 [^] [ответить] [смотреть все]  +/
опять эти улучшатели 8230 всем лёнины лавры покоя не дают ... весь текст скрыт [показать]
 
7.86, rob pike, 11:24, 29/06/2014 [^] [ответить] [смотреть все]  +/
И получится у вас XML-RPC Это именно то чего не хватало командной строке, да ... весь текст скрыт [показать]
 
  8.89, all_glory_to_the_hypnotoad, 12:15, 29/06/2014 [^] [ответить] [смотреть все]  +/
В каком месте это хоть как-то похоже на xml-rpc Тут, конечно, понятно что ты хе... весь текст скрыт [показать]
 
5.72, Аноним, 01:28, 29/06/2014 [^] [ответить] [смотреть все]  +/
если говорить о linux и юниксах, где значительная часть операций идёт через шел,... весь текст скрыт [показать]
 
  6.73, arisu, 01:35, 29/06/2014 [^] [ответить] [смотреть все]  +/
это у говнокодеров нет у остальных нормальных людей есть конвенции по интерпрет... весь текст скрыт [показать]
 
  7.76, all_glory_to_the_hypnotoad, 02:04, 29/06/2014 [^] [ответить] [смотреть все]  +1 +/
обезьяна, ты что такая тупая -- всего лишь частный костылик который даже в сл... весь текст скрыт [показать]
 
  8.77, arisu, 02:13, 29/06/2014 [^] [ответить] [смотреть все]  –2 +/
хм, а раньше ты таким идиотом не был или маскировался хорошо in either case f... весь текст скрыт [показать]
 
8.78, vle, 03:44, 29/06/2014 [^] [ответить] [смотреть все]  +/
Если разработчик вменяемый, он использует getopt 3 или getopt_long 3 В обоих ... весь текст скрыт [показать]
 
  9.88, all_glory_to_the_hypnotoad, 12:12, 29/06/2014 [^] [ответить] [смотреть все]  +/
точно прочитал мой коммент прежде чем отвечать ... весь текст скрыт [показать]
 
6.83, Anonym2, 10:52, 29/06/2014 [^] [ответить] [смотреть все]  +1 +/
Вызывающая сторона как раз должна знать И эта сторона - не sh Однако sh делает... весь текст скрыт [показать]
 
  7.107, Алексей, 21:09, 29/06/2014 [^] [ответить] [смотреть все]  +/
Так это вызывающие стороны мануал по шеллу не читали, поэтому трудно предсказывать
 
6.90, Ordu, 13:02, 29/06/2014 [^] [ответить] [смотреть все]  +/
Простите, я полагаю порезку примерно по пробелам неизбежной Можно конечно зам... весь текст скрыт [показать]
 
  7.91, rob pike, 13:35, 29/06/2014 [^] [ответить] [смотреть все]  +/
Сейчас вам объяснят что раз угловых скобочек для тэгов не предлагалось в исходно... весь текст скрыт [показать]
 
  8.97, all_glory_to_the_hypnotoad, 15:06, 29/06/2014 [^] [ответить] [смотреть все]  –1 +/
Вам объяснят, что если у вас слово тег ассоциируется только с XML, а конкретнне ... весь текст скрыт [показать]
 
  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 [^] [ответить] [смотреть все]  +/
Ты ничего не разбиваешь пробелами в командной строке, это фикция в твоей голове ... весь текст скрыт [показать]
 
  8.98, Ordu, 16:14, 29/06/2014 [^] [ответить] [смотреть все]  +/
ммм 1 Как это связано между собой 2 Вы не думали о том, чтобы заменить для... весь текст скрыт [показать]
 
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, чтобы потом удобно распаковывать было.

 
  2.27, Xaionaro, 14:49, 28/06/2014 [^] [ответить] [смотреть все] [показать ветку]  +2 +/
image
 
2.34, Аноним, 15:54, 28/06/2014 [^] [ответить] [смотреть все] [показать ветку]  –2 +/
Знаешь, то что он тебе разъе систему - к лучшему Научишься вызывать программ... весь текст скрыт [показать] [показать ветку]
 2.38, cmp, 16:46, 28/06/2014 [^] [ответить] [смотреть все] [показать ветку]  +5 +/ 
1.14, Xasd, 12:56, 28/06/2014 [ответить] [смотреть все]  +10 +/ mv -t /blahblah -- *

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

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

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

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

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

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

 
  2.36, pv47, 16:33, 28/06/2014 [^] [ответить] [смотреть все] [показать ветку]  +1 +/
сугубо имхо, но, думаю, новость неспроста где-то в недрах redhat планируется за... весь текст скрыт [показать] [показать ветку]
 
  3.138, rob pike, 05:21, 30/06/2014 [^] [ответить] [смотреть все]  +/
Там всё куда интересней.
https://lwn.net/Articles/602579
 
    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.35, Аноним, 15:55, 28/06/2014 [^] [ответить] [смотреть все]  +2 +/
А можно мне копию бота pavlinux Он такой клевый ... весь текст скрыт [показать]
 
3.47, Аноним, 18:29, 28/06/2014 [^] [ответить] [смотреть все]  +/
Вы еще один ненужный кэп Антивирус попова легко отлавливает таких ботов Так чт... весь текст скрыт [показать]
 
  4.80, Аноним, 08:20, 29/06/2014 [^] [ответить] [смотреть все]  +/
А вот нас посетил бот Попoва ... весь текст скрыт [показать]
 
1.39, Аноним, 17:14, 28/06/2014 [ответить] [смотреть все]  +/
Проблема из за того как аргументы обрабатывает сам getopt h и то как они подаютс... весь текст скрыт [показать]
 
  2.53, Аноним, 20:20, 28/06/2014 [^] [ответить] [смотреть все] [показать ветку]  +/
Красноглазик, getopt h ничего не обрабатывает Даже если смотреть на исходники ... весь текст скрыт [показать] [показать ветку]
 
1.40, Аноним, 17:18, 28/06/2014 [ответить] [смотреть все]  +1 +/
На самом деле такие атаки вполне применимы на серверах хостинговых компаний Там... весь текст скрыт [показать]
 
  2.44, pavlinux, 17:59, 28/06/2014 [^] [ответить] [смотреть все] [показать ветку]  +/
image
 
2.60, Xaionaro, 21:26, 28/06/2014 [^] [ответить] [смотреть все] [показать ветку]  +/
От админа-идиота не спасёт ничего И не надо портить систему в глазах нормальных... весь текст скрыт [показать] [показать ветку]
image  2.68, arisu, 01:22, 29/06/2014 [^] [ответить] [смотреть все] [показать ветку]  +/
если там админы 8212 дауны, то описаное в новости будет самой маленькой и сам... весь текст скрыт [показать] [показать ветку]
 
1.45, Kroz, 18:06, 28/06/2014 [ответить] [смотреть все]  +/ Как от этого защититься?
 
  2.46, pavlinux, 18:09, 28/06/2014 [^] [ответить] [смотреть все] [показать ветку]  +1 +/
image
 
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 [^] [ответить] [смотреть все] [показать ветку]  +/image   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 http://www.opennet.ru/opennews/art.shtml?num=40100

 
Интересная статья? Поделись ей с другими:

bottom

 

Unreal Commander PfSense по русски Яндекс.Метрика