LINUX.ORG.RU

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

 , , ,


0

3

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

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

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

Deleted

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

почему тогда это не поведение по дефолту?

а как по-твоему программа должна отличать ключи от имён, начинающихся с - ?

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

Потому что все аргументы равнозначны. Как ты собираешься это сделать по-другому?

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

1. -- понимают не все команды;

2. Возможно, я захочу указать флаги после файлов.

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

В том-то и дело: шелл — не телепат, и не знает, где именно вставить --, т.е. где заканчиваются флаги и бесфлаговые аргумены (да, это не только к файлам относится, пример — echo, которое — вообще не понимает).

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

а как по-твоему программа должна отличать ключи от имён, начинающихся с - ?

Как насчет такого порядка? Программа при поведении по дефолту игнорирует существование файлов начинающихся с дефиса. Однако данное дефолтное поведение можно изменить специальной временной коммандой.

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

Это только для rm. А как такое сделать для всех комманд? Без создания алиасов для каждой из них, конечно же.

Deleted
()

Лол. В этом случае атакующий как то получил уже доступ к системе. Причем с правом записи в директррий данных.

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

Замечательная интерактивная оболочка ipython – высокоскоростная, современная, с широкими возможностями кастомизации, с огромной стандартной библиотекой.

Deleted
()

Я что-то не понял: а что мешает шеллу при подстановке просто заворачивать имена файлов в кавычки?

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

Я что-то не понял: а что мешает шеллу при подстановке просто заворачивать имена файлов в кавычки?

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

u285
()

Суть проблемы в том, что при указании масок, таких как «*», осуществляется простая замена списка в командной строке, при которой имена файлов начинающиеся с символа "-" интерпретируются не как файлы, а как переданные утилите опции.

Вы прослушали лекцию «Как прострелить себе голову из гвоздомёта».

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

подставлять ./ для локальных файлов достаточно

А в чём подвох? Что мешает переписать баш, чтобы он подставлял вместо * имена файлов начинающиеся с ./

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

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

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

Если передавать программам имена файлов в кавычках, то они не поймут.

Многие понимают. Под форточками это вообще норма.

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

А в чём подвох? Что мешает переписать баш, чтобы он подставлял вместо * имена файлов начинающиеся с ./

Исторически так сложилось, теперь менять сложно, мало ли что где сломается.

sdio ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.