Михал Залевский (Michal Zalewski), известный эксперт по компьютерной безопасности, работающий в Google Security Team, опубликовал (http://seclists.org/fulldisclosure/2014/Nov/74) предупреждение о возможности скрытой эксплуатации уязвимостей в различных обработчиках контента, при использовании утилиты less. Во многих дистрибутивах Linux, включая CentOS и Ubuntu, для выводимого через less контента используются скрипты lesspipe, которые осуществляют вызов сторонних утилит для преобразования различных форматов в читаемый вид. В том числе вызываются isoinfo, iconv, groff, troff, grotty, man и cpio.
Проблема заключается в том, что многие из таких утилит потенциально уязвимы, а использование less, который по умолчанию применяется в различных программах для постраничного вывода на экран, может привести к неосознанной передаче данным утилитам внешних непроверенных данных, которые могут быть специально адаптированы для проведения атаки. Для демонстрации сути атаки подготовлены специально оформленные архив cpio (http://lcamtuf.coredump.cx/afl/vulns/lesspipe-cpio-bad-write...) и
образ iso (http://seclists.org/oss-sec/2014/q4/773), просмотр которых через less приводит к краху. В качестве решения проблемы предлагается уйти от практики установки в дистрибутивах дополнительных обработчиков через переменные окружения LESSOPEN и LESSCLOSE.URL: http://seclists.org/fulldisclosure/2014/Nov/74
Новость: http://www.opennet.me/opennews/art.shtml?num=41120
Ни о чём, на самом деле.
Если less используется достаточно часто/активно, то unset на LESSOPEN, прописанный в ~/.bashrc, напрашивается: если мне хочется просмотреть html не как текстовый файл, а отобразить его в links, то я буду использовать links, а не less. Вбивать же в каждом таком случае --no-lessopen промежь аргументов задалбывает.
Если же less не используется прямо и непосредственно, то как она может быть вызвана? Через $PAGER? Но вот тут, чтобы оценить существенность проблемы, не помешал бы списочек утилит, которые используют этот PAGER. man? Ну дык man не по рандомным файлам шарится, а по тем которым в общем следует доверять. git? Я не уверен на 100%, но по-моему, git использует PAGER исключительно для вещей типа вывода многостраничных log'ов, которые в less загружаются через pipe, и посему LESSOPEN не отрабатывает.
> Если less используется достаточно часто/активно, то unset на LESSOPEN, прописанный в ~/.bashrc, напрашивается: если мне хочется просмотреть html не как текстовый файл, а отобразить его в links, то я буду использовать links, а не less. Вбивать же в каждом таком случае --no-lessopen промежь аргументов задалбывает.Зависит от. У меня, например, 10500 разных фильтров в кастомном LESSOPEN, как раз чтобы можно было less использовать часто и не париться на тему, открываю я html, pdf или там хочу посмотреть информацию по видео- или аудио-файлу. И это довольно удобно...
> Через $PAGER? Но вот тут, чтобы оценить существенность проблемы, не помешал бы списочек утилит, которые используют этот PAGER. man?
Если кто-то дергает $PAGER /tmp/tmpfile, достаточно добавить -L в опции $PAGER и проблем никаких.. А через пайп да, он и не сработает...
Руки прочь от unix way. Пофиксим уязвимость в одной утилите и её не станет во всех.
Скриптописание нынче не в тренде. Водить пальцами по ведрофону - это стильно, молодёжно, а, главное, секурно.
> не станет во всех.Да щаз. Это судя по всему будет напоминать картинку Волка из электронной игры "Ну, погоди!". Только вместо яиц - патчи, а если вы не успели вовремя крутануться - у вас ненавязчиво поселится какая-нибудь дрянь.
$ echo $LESSOPEN $LESSCLOSE $PAGER $LESS$
Debian 8
Честно говоря, я эти переменные давно не встречал.
А Свидетели Поттеринговы ваще не в курсе что это такое.
Стал использовать vim и отказался от mcedit. Захотелось также чего нить легкого и для просмотра файлов less устраивал, но после того как узнал комбинацию Ctrl+F для less, то стал пользоваться tail намного реже. И тут вот такое прилетает.
Обидно.
Вы про
SPACE or ^V or f or ^F
Scroll forward N lines, default one window...?А что тут интересного?
Видимо, опечатался человек, а имелось в виду следующее:
F Scroll forward, and keep trying to read when the end of file is reached. Normally this command would be used when already
at the end of the file. It is a way to monitor the tail of a file which is growing while it is being viewed. (The behav‐
ior is similar to the "tail -f" command.)
Спасибо! Опечатался
Конечно же Shift+F
> Стал использовать vim и отказался от mcedit. Захотелось также чего нить легкого
> и для просмотра файлов less устраивалОбычно использую view ради подсветки синтаксиса и возможности при необходимости тут же поправить (понятно, что less тоже умеет позвать $EDITOR, но...).
> но после того как узнал комбинацию Ctrl+F для less,
> то стал пользоваться tail намного реже.Есть ещё tailf -- минус две кнопки при наборе tail -f.
> Есть ещё tailf -- минус две кнопки при наборе tail -f.А он вообще убог :(
Не понимает tail -f *.log...
Да уж, если в less, куда казалось бы дальше, может в утилите 'true' есть уязвимость?
Статистический анализ показывает, что во всех уязвимых продуктах используется операция сложения...
> Да уж, если в less, куда казалось бы дальше, может в утилите
> 'true' есть уязвимость?Поставил себе в качестве PAGER = most. (Где-то давно вычитал про него). Про less забыл :).
а чем more плох ?
Сразу выключается в конце файла, урод такой.
в некоторых дистрах он является линком на less.
И назад листать не позволяет.
> И назад листать не позволяет.man more
ps: b
потому что неправильно утилиту пользуют.
правильно так: cat file.ext | less
тогда не будет он гроффами исходники манов портить и т.д.
при правильном использовании автор перед форматами бессилен.
less < file.extМожет так лучше?
> правильно так: cat file.ext | lessuseless use of cat(1)
unix-way, каждый делает свое дело. cat читает файл, bash организует пайп, ядро пересылает данные, less выводит. Все четко!
Предвижу, на следующей неделе будет новость, как в утилите cat выявлена уязвимость.
будем делать тогда
tac file | tac | less
> Михал Залевский (Michal Zalewski)Интересно, откуда автор новости букву "й" взял? Сам придумал или марсиане подсказали?
Если ты чего-то не знаешь, то лучше молчи, а не рассказывай свои фантази на тему марсиан. Окончание польских фамилии -ski/-cki/-dzki передаются на русский как -ский/-цкий/-дский
> Окончание польских фамилии -ski/-cki/-dzki передаются на русский как -ский/-цкий/-дскийНу вот, сейчас в этом усмотрят имперские амбиции, стремление захватить и русифицировать всю европу, и прочую в/на тематику...
Никогда не понимал, вот вроде бы у людей есть свой язык, по крайней мере они так заявляют, так чего лезть других учить разговаривать на их родном языке. Я же не учу китайцев, какой предлог им использовать с названием моей страны, если у них вообще предлоги есть. Да мне вообще параллельно, как они там чего говорят. Это, по-ходу, какие-то исторические комплексы...
Они и на польском произносятся как "-кий". Это англо-американцы читают их как "-ки".
>Это англо-американцы читают их как "-ки".Как посмели? Кто разрешил?!
Вас кто-то обманул: по-польскі -ski произносится именно как -ски, безо всяких "й".
Да какая разница как оно по-польски? Это должно только поляков волновать, что у них и как произносится. В русском языке добавляется Й, а если будете спорить, то можно и еще пару букв спереди добавить.И да, я буду говорить Лондон а не ландан, и Голландия вместо Nederland, потому что это мой язык, как хочу, так и говорю...
Сами поляки в свое время ничтоже сумняшеся писали "Малгожата Тетчерова", и срaть хотели на то, что там ангельчане про них подумают.
используются скрипты lesspipe, которые осуществляют вызов сторонних утилит для преобразования различных форматов в читаемый вид. В том числе вызываются isoinfo, iconv, groff, troff, grotty, man и cpio.
скрипты lesspipe вызывают сторонние утилиты, или это сторонние утилиты для вывода на stdout используют скрипты lesspipe ???
как-то слишком надумано
А завтра он предложит убрать запуск X по умолчанию.
На FreeBSD никак не могу задействовать more: всё время подставляется less(1).
Хочу прочесть man more — вылазит man less. Ну что за х...? Алиаса подмены нет. Куда копать?
> На FreeBSD никак не могу задействовать more: всё время подставляется less(1).
> Хочу прочесть man more — вылазит man less. Ну что за х...?
> Алиаса подмены нет. Куда копать?
type moreчто говорит?
>> На FreeBSD никак не могу задействовать more: всё время подставляется less(1).
>> Хочу прочесть man more — вылазит man less. Ну что за х...?
>> Алиаса подмены нет. Куда копать?
>type moreчто говорит?more is /usr/bin/more
>>> На FreeBSD никак не могу задействовать more: всё время подставляется less(1).
>>> Хочу прочесть man more — вылазит man less. Ну что за х...?
>>> Алиаса подмены нет. Куда копать?
>>type moreчто говорит?
> more is /usr/bin/moreЯ позже вспомнил, что у меня есть доступ к FreeBSD, и сам посмотрел. Короче, на FreeBSD 10.0:
$ stat /usr/bin/more /usr/bin/less
3341733987 690 -r-xr-xr-x 2 root wheel 4294967295 150152 "Apr 22 10:20:55 2014" "Jan 17 02:41:07 2014" "Apr 22 10:20:59 2014" "Apr 22 10:20:58 2014" 131072 529 0x800 /usr/bin/more
3341733987 690 -r-xr-xr-x 2 root wheel 4294967295 150152 "Apr 22 10:20:55 2014" "Jan 17 02:41:07 2014" "Apr 22 10:20:59 2014" "Apr 22 10:20:58 2014" 131072 529 0x800 /usr/bin/less
Это один и тот же бинарник, просто hardlinked.
> На FreeBSD никак не могу задействовать more: всё время подставляется less(1).
> Хочу прочесть man more — вылазит man less. Ну что за х...?
> Алиаса подмены нет. Куда копать?Нашёл следующее в man less:
COMPATIBILITY WITH MORE
If the environment variable LESS_IS_MORE is set to 1, or if the program
is invoked via a file link named "more", less behaves (mostly) in con‐
formance with the POSIX "more" command specification.
Просматривать .cpio и .iso при помощи less - это один из основных моих юз-кесов. Проблему надо немедленно чинить. Ага.