Хабрахабр

Security Week 09: 19-летняя уязвимость в WinRAR

Объявляем неделю доисторических багов. Уязвимость в архиваторе WinRAR, обнаруженную и закрытую в конце января, подробно описали специалисты компании Check Point Software (новость, оригинальное исследование). В худшем случае брешь позволяет распаковать вредоносный файл в произвольное место на жестком диске, например в директорию автозапуска Windows.

Сегодня мы кратко расскажем о самой проблеме, о решении разработчиков WinRAR отказаться от библиотеки для распаковки архивов в формате ACE, а также поднимем тему обновления WinRAR на компьютерах пользователей. Эта уязвимость заставляет задуматься по поводу использования труднопроверяемых сторонних библиотек в своем софте, но не только. А вот на класс уязвимостей, связанных с обработкой любых прилетающих на ваш компьютер архивов, стоит обратить особое внимание.
В оригинальном отчете перед демонстрацией проблемы приводится много (интересных) деталей, но давайте сразу посмотрим на результат. Забегая вперед: хотя новость и вызвала серьезный резонанс, это скорее история с хеппи-эндом.

Как так вышло? Подготовленный архив сохранен на рабочем столе, пользователь пробует распаковать его туда же, но вместо этого исполняемый файл записывается в директорию автозапуска. Как и другие подобные инструменты, WinAFL позволяет исследовать защищенность (или стабильность) программного обеспечения, передавая приложению случайные (или не совсем) данные и сохраняя реакцию. Исследователи использовали технологию фаззинга, а именно — пакет WinAFL, поддерживаемый командой Google Project Zero и являющийся Windows-версией программы american fuzzy loop. Они помогают обнаруживать разнообразные сбои программы в тех местах, где их не должно быть. Фаззеры можно считать своего рода «волшебной палочкой» исследователя по безопасности.

Исследование WinRAR с помощью WinAFL помогло выявить несколько неожиданных падений приложения и вывело исследователей на библиотеку, обрабатывающую архивы в формате ACE — проприетарном архивном стандарте. Впрочем, отчет компании Check Point показывает, что не все так просто. При этом она присутствовала во всех версиях WinRAR за последние 19 лет и, как позднее выяснилось, все это время была уязвима. Эта библиотека (unacev2.dll) последний раз обновлялась в 2006 году и не имела стандартных механизмов защиты (таких как ASLR или DEP). ACE вообще в свое время был коммерческим архиватором, библиотека распаковки была бесплатная, а вот легально создавать архивы в этом формате можно было только с помощью фирменной утилиты WinACE (обновлялась вплоть до 2007 года, сайт программы существовал до 2017 года; а теперь это явно заброшенный софт). На момент обнаружения бага у разработчиков WinRAR не было доступа к ее исходному коду.

В очередном походе за рандомными глюками исследователи обнаружили файл, сохраненный вообще не туда, куда WinAFL должен был сохранять результат запуска библиотеки. Найти простую уязвимость типа Path Traversal, когда архиватор распаковывает файл в произвольную директорию, не получилось, пришлось снова натравить утилиту для фаззинга, но в этот раз после изучения особенностей формата как с использованием оригинальной программы WinACE, так и с помощью свободно распространяемого кода для распаковки на Питоне.

В нормальной ситуации этот путь добавляется к выбранному при разархивировании пути распаковки. Дело в том, что архиватор ACE позволяет сохранять полный путь к запаковываемому файлу. Дальше вроде бы просто — нужно применить тот же самый трюк при работе не с библиотекой напрямую, а с самим WinRAR, правильно? В ходе фаззинга получилось, что какой-то набор данных позволил сделать путь абсолютным, то есть распаковать файл не куда указал пользователь, а куда угодно, а это уже не очень хорошо. Не буду пересказывать всю историю поиска правильной комбинации параметров и обхода еще одного этапа валидации в самом WinRAR: программа проверяет и удаляет криминал из пути сохранения, чтобы избежать как раз таких вот ситуаций. Не совсем: уязвимость не воспроизводилась. Но проверяет, как выяснилось, не все возможные варианты.

Это скриншот анализа «подготовленного» архива с помощью упомянутого выше кода на Питоне. Получилось вот что. Вроде бы эксплойт готов? Двойное c:\\ в начале пути обрабатывается библиотекой unacev2 и самим WinRAR так, что файл записывается в произвольный каталог. Попытка записи исполняемого файла в директорию автозапуска в такой конфигурации вызовет срабатывание защиты Windows. Опять нет, точнее не совсем. Как показано на видео в начале, подготовленный файл удалось сохранить в пользовательскую директорию автозапуска путем перехода на одну папку выше в пути файла. Но исследователям удалось найти способ обхода и этого ограничения, если файл сохраняется в директории пользователя, например в папку Downloads или на рабочий стол (что вполне вероятно).

В версии WinRAR 5. Что в итоге получилось? Вряд ли кто-то по этому поводу серьезно расстроится. 70 Beta 1 уязвимость исправили, полностью отказавшись от использования устаревшей библиотеки для работы с файлами ACE. WinRAR не определяет файлы по разрешению, и эксплойт будет работать с уязвимой версией программы, даже если подготовленный архив ACE имеет расширение RAR (или любое другое). Кстати, совет, приведенный в статье на сайте ZDNet, —«не открывать подозрительные архивы в формате ACE» — немного неправильный. Не открывать подозрительные архивы — это хорошо, но вообще надо обновляться.

Для ориентировки: версия 5. А теперь отвлекитесь на минуту от поста и посмотрите, какая версия WinRAR у вас установлена (если, конечно, вы этим архиватором пользуетесь). 00 — в 2012-м, 3. 50 выпущена в 2017 году, 5. С некоторой вероятностью дата выпуска WinRAR будет примерно соответствовать дате первоначальной настройки системы, так как в этой программе до сих пор нет функции автоматического обновления. 90 — в 2009-м. Уязвимости, подобные обнаруженной в библиотеке для архивов ACE, могут использоваться для массовых либо целевых атак на компьютеры жертв. Как видно из твита компании — брокера уязвимостей Zerodium, спрос на работающие эксплойты в архиваторах имеется. С высокой вероятностью зараженный архив будет заблокирован почтовой службой (верно, например, для GMail, там теперь не пропускаются запароленные архивы и архивы с исполняемыми файлами внутри) либо антивирусным ПО. Надо отметить, что шансы на успешную эксплуатацию подобного бага далеки от стопроцентных. Если, конечно, оно у вас есть.

Иначе легко пропустить серьезную уязвимость, которая сработает в самый неподходящий момент. Тем не менее все эти надоедливые напоминания о необходимости обновить одну из десятков установленных на компьютере программ — имеют смысл. Справедливости ради отметим, что серьезные проблемы именно в WinRAR появляются нечасто.

Дорогая редакция вообще рекомендует относиться к любым мнениям со здоровым скептицизмом. Disclaimer: Мнения, изложенные в этом дайджесте, могут не всегда совпадать с официальной позицией «Лаборатории Касперского».

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть