LINUX.ORG.RU

Атака через подстановку аргументов при использовании масок в командной строке

 , , ,


0

3

http://www.opennet.ru/opennews/art.shtml?num=40100

Как раз из серии «broken by design». (Чую что сейчас набегут «знатоки» со стандартной отмазкой «это не баг, это фича». Так вот, можете называть ЭТО как угодно, но мне данная «фича» не нравится).

Поэтому, похоже радикальное решение данной проблемы может быть только одно - переход на не-Unixlike OS. Но как насчёт менее радикальных вариантов? Может быть можно придумать какой-то workaround? Я например подумал, что это как раз из тех случаев, когда использовать файловый менеджер лучше, чем командную строку

Deleted

Последнее исправление: Klymedy (всего исправлений: 2)

Это не баг.

anonymous
()

Поэтому, похоже радикальное решение данной проблемы может быть только одно - переход на не-Unixlike OS.

Но ведь ОС не при чем, это поведение шелла.

amomymous ★★★
()
Ответ на: комментарий от Lilly

Но ведь ОС не при чем, это поведение шелла.

Удваиваю предыдущего оратора.

Утраиваю предыдущего оратора.

yacuken ★★★★
()

Может быть можно придумать какой-то workaround?

Ты статью-то дочитал, дурачок? «Уязвимость» тут только в головах авторов скриптов.

anonymous
()

Это не баг и тем более не уязвимость. ССЗБ если не знаешь где запускаешь rm. Посмотри лекции Георгия Курячего, он знатно потроллил студентиков на эту тему.

Shadow1251
()

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

Valdor ★★
()
Последнее исправление: Valdor (всего исправлений: 1)

Найдена уязвимость в bash

Злоумышленник может написать произвольный скрипт, который выполнится с правами пользователя, запустившего его.

http://lorquotes.ru/view-quote.php?id=513

anonymous
()
Ответ на: комментарий от amomymous

Но ведь ОС не при чем, это поведение шелла.

А что, разве wildcard не обрабатываются во всех шеллах одинаково? Мне казалось, что есть какой-то стандарт в этом плане. Причём специфичный именно для мира Unix.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от anonymous

Ах вот оно как! Спасибо, а я-то голову ломаю «почему два дефиса не работают?» Опробовал, работает, тему можно считать закрытой. Хотя всё-таки было бы правильней, если бы такое поведение было по умолчанию

Deleted
()
Ответ на: комментарий от Deleted

Хотя всё-таки было бы правильней, если бы такое поведение было по умолчанию

Это невозможно — ни rm, ни bash не телепаты.

anonymous
()
Ответ на: комментарий от anonymous

Это невозможно — ни rm, ни bash не телепаты.

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

Deleted
()
Ответ на: комментарий от Deleted

Ну ты подумай. Чтобы файл "-rf" трактовался как файл, а не как опция, нужно явно указать в аргументах, что это файл. Внезапно, "--" и есть то же самое.

devsdc ★★
()
Ответ на: комментарий от devsdc

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

devsdc ★★
()

Если атакующий создаст файлы "--checkpoint=1" и "--checkpoint-action=exec=sh shell.sh", а администратор выполнит для архивирования типичную команду «tar cvvf archive.tar *», то после добавления одного файла в архив будет запущен скрипт shell.sh.

А если завтра в Землю метеорит прилетит?

Deleted
()

Оболочка Борна написана неведомо в каком году. Все, знавшие ее автора, уже умерли. Но в современных ОС зачем-то до сих пор тащат слой обратной совместимости с этой архаичной оболочкой.

Deleted
()

Ну, запретите символ "-" первым символом в именах объектов файловой системы и всё, нет истерики "broken by design"

sdio ★★★★★
()
Последнее исправление: sdio (всего исправлений: 1)
Ответ на: комментарий от Deleted

Но в современных ОС зачем-то до сих пор тащат слой обратной совместимости с этой архаичной оболочкой.

Линукс хорош тем, что позволяет, как из конструктора, сделать то, что тебе нравится, меняй себе шел и не бухти.

sdio ★★★★★
()
Последнее исправление: sdio (всего исправлений: 2)
Ответ на: комментарий от Deleted

Значит тогда надо было сделать такой синтаксис, чтобы они и без телепатии не вызывали удаления всех файлов при встрече с файлом "-rf"

Можно подумать, что ты каждый день встречаешься с файлом -rf. И да, про два дефиса подряд выше неоднократно сказали.

dexpl ★★★★★
()
Ответ на: комментарий от dexpl

Можно подумать, что ты каждый день встречаешься с файлом -rf.

У вас несчастные случаи на стройке были?

Нет.

Значит будут. (Приключения Шурика (с))

И да, про два дефиса подряд выше неоднократно сказали.

А всё-таки, если ударится в чистую теорию, можно ли создать такой синтаксис, который бы по дефолту избегал создания подобных ситуаций? Или же это неизбежное зло и любой достачно продвинутый и гибкий синтаксис обречён на подобные дыры при дефолтном поведении?

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

У вас несчастные случаи на стройке были?

Нет.

Значит будут. (Приключения Шуркика)

Угрожать изволите, молодой человек?

А всё-таки, если ударится в чистую теорию, можно ли создать такой синтаксис, который бы по дефолту избегал создания подобных ситуаций? Или же это неизбежное зло и любой достачно продвинутый и гибкий синтаксис обречён на подобные дыры при дефолтном поведении?

А черт его знает.

dexpl ★★★★★
()
Ответ на: комментарий от dexpl

Угрожать изволите, молодой человек?

Я просто довольно толсто на мой взгляд намекнул, что «была бы дыра, а желающие её использовать всегда найдутся». Даже если эта дыра вызвана неосторожным поведением пользователя в крайне экзотичной, с точки зрения повседневности, ситуации.

А черт его знает.

Может быть на StackOverflow кто-нибудь знает ответ на этот вопрос? Вопрос ведь действительно интересный

Deleted
()
Ответ на: комментарий от teod0r

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

Ну как дети, сколько можно? Прямо как по А.Азимову. Как робот может навредить человеку? Один робот нальет в воду яд, не зная что это вода для питья, а другой робот подаст эту воду, не зная что там яд.

Шел раскрывает метасимволы, а вызываемая программа парсит аргументы какие ей дали. Ни на первом этапе, ни на втором нельзя отделить файлы от аргументов. Экранируйте метасимволы и пусть программа сама их парсит/раскрывает.

sdio ★★★★★
()

Не зря в винде ключи через слэш ставят. =)

anonymous
()
Ответ на: комментарий от sdio

Прямо как по А.Азимову. Как робот может навредить человеку? Один робот нальет в воду яд, не зная что это вода для питья, а другой робот подаст эту воду, не зная что там яд.

Перескажу тогда ситуацию, если Вам так понятней.

Я прошу робота составить список всех видов вина в моём очень-очень обширном погребе. Я сам его никогда не смотрел, он мне достался в наследство от дедушки. Робот идёт туда, читает названия этикеток, составляет список ... И ВДРУГ на одной этикете встречается надпись «убей себя»(да, такое оригинальное название) и он воспринимает это как приказ на самоуничтожение! Я жалуюсь производителю, а производитель отвечает «сам дурак. Тебя надо было предвидеть ситуацию которую нельзя было предвидеть(явно скрытая реклама услуг экстрасенсов, не иначе) и ЗАРАНЕЕ дать роботу приказ „ни в коем случае не самоуничтожайся если увидишь на одной из этикеток надпись „убей себя““

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

Ну и? Если твой робот знает команду «убей себя» и ему во входной буфер пришла такая команда, то он обязан её исполнить. Ты должен был отделить буфер команд от буфера данных.

Для этого есть решения уже сейчас и текущая ситуация не плохая и не хорошая.

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

sdio ★★★★★
()

годно и не универсально.

как получить создать условия в которых

1. злоумышленику будет достоверно известно , что админ использует нужную ему маску.

2. как злоумышленик может способствовать исползованию админом нужных масок злоумышленику.

т.е. при некоторых не вполне невероятных условиях такая атака возможна,

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

:(

qulinxao ★★☆
()
Ответ на: комментарий от teod0r

первый аргумент -

А он необязан быть первым

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

sdio ★★★★★
()
Ответ на: комментарий от sdio

Тебе не странно что производитель не заблокировал такую возможность?

мне странно

teod0r ★★★★★
()
Ответ на: комментарий от sdio

Ты должен был отделить буфер команд от буфера данных.

Вообще-то это должен был сделать производитель.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

Вообще-то это должен был сделать производитель.

Как ты себе это представляешь в cli интерфейсе?

sdio ★★★★★
()
Ответ на: комментарий от teod0r

это уже баг в программе

схерали? /usr/bin/some_command -i file1 -o file2 -w file3 --- может file2 -w file3 --- это 3 файла подставленных раскрытием звездочки?

это уже идиотизм

схерали? символ / по понятным причинам запрещен в именах, отчего бы только первый символ имени не ограничить запретом на "-"

sdio ★★★★★
()
Ответ на: комментарий от sdio

А он необязан быть первым

можно реализовать такое:
если шелл раскрывает имя файла, и оно начинается с -, ставить перед ним \; программа при получении аргумента, начинающегося с \-, должна понимать, что это не опция

teod0r ★★★★★
()
Последнее исправление: teod0r (всего исправлений: 2)
Ответ на: комментарий от sdio

Я это себе представляю в виде крайне гибкого(без запретов типа «имена файлов не могут начинаться с дефиса») и в тоже время безопасного синтаксиса, который бы не допускал возможность незаметно выстрелить себе в ногу. Данную ситуацию я расцениваю как ущербность синтаксиса Bash.

Deleted
()
Ответ на: комментарий от Deleted

Данную ситуацию я расцениваю как ущербность синтаксиса Bash.

Bash? Все /bin/*sh делают точно тоже самое. А что принципиально сложного взять за правило ставить двойной минус перед использованием * в cli. Это так же просто как не запускать бездумно непонятные однострочники.

sdio ★★★★★
()
Последнее исправление: sdio (всего исправлений: 1)
Ответ на: комментарий от sdio

А что принципиально сложного взять за правило ставить двойной минус перед использованием * в cli

Если это такой мудрый шаг, то почему тогда это не поведение по дефолту?

Deleted
()
Ответ на: комментарий от sdio

Потому что мне не надо чтобы умный виндовс за меня решали что и когда я хочу

А я вот решил, что такому поведению в моей системе не место. Что мне сделать, чтобы у меня везде два дефиса шли по умолчанию, если в комманде прямо не оговоренно обратного? Без эпик квестов вроде «переписать все скрипты, заменить шел, и после этого создать свой дистрибутив».

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.