Недавнее известие об уязвимости оболочки bash несколько поколебала уверенность пользователей в безопасности свободного ПО. Тем более, что речь шла о программе, установленной на большинстве компьютеров.

Увы, на этом неприятные новости не закончились. Как говориться, «пришла беда — отворяй ворота». Инженер по безопасности Google Михал Залевски рассказал на ресурсе seclists.org, что нашёл уязвимость в текстовой утилите less, предназначенной для вывода на экран содержимого файла.

Эта программа пользуется заслуженной популярностью прежде всего благодаря простоте и удобству. Она не позволяет редактировать файл и отображает данные «на лету», не загружая при этом в память весь файл.

Чаще всего программа less применяется для просмотра текстов. Однако, в ряде систем она поддерживает достаточно много типов файлов, поскольку её функциональность расширена при помощи скрипта lesspipe, использующего сторонние инструменты. В частности, в Ubuntu lesspipe может отображать содержимое файлов следующих форматов: .arj, .bz, .bz2, .deb, .udeb, .doc,*.gif, .jpeg, .jpg, .pcd, .png, .tga, .tiff, .iso, .raw, .bin, .pdf, .rar и некоторые другие. А создатели этих инструментов, в свою очередь, не уделили достаточно внимания возможности ввода вредоносного кода.

Для проверки Залевски использовал специальную программу для fuzzing-теста. Он выяснил, что в используемом lesspipe архиваторе cpio содержится ошибка, которая может привести к выполнению произвольного кода в системе.

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

На сегодняшний день пользователи могут обезопасить свои данные, удалив переменные окружения LESSOPEN и LESSCLOSE. Правда, это автоматически приведёт к снижению функциональности как самой программы less, так и других обращающихся в ней программ.

Также интересно, что эта уязвимость совершенно не угрожает пользователям «недружелюбных» дистрибутивов. Например, в Arch Linux пакет lesspipe устанавливается отдельно от less и эти программы автоматически никак не связываются.