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

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

В оригинальном отчете перед демонстрацией проблемы приводится много (интересных) деталей, но давайте сразу посмотрим на результат.



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

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

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



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



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

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



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

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

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

Комментарии (13)


  1. Zarf
    25.02.2019 19:37
    +1

    WinRAR около 500 миллионов пользователей из которых 99% используют уязвимую версию. Автообновлений нет и уведомить пользователей нет никакой возможности (кроме тех кто всё таки купил лицензию).

    Да пройдёт ещё лет 10-15 пока процентов 70% обновится, но даже тогда уязвимость будет актуальна!


    1. sdveg
      25.02.2019 22:23

      около 500 миллионов пользователей из которых 99% используют уязвимую версию.

      Уже обновляются на 5.70 Beta 2, на неизвестном сайте :)


    1. Kyller
      26.02.2019 17:52

      Добавят dll в ежемесячное обновление Microsoft Removal Tool.
      Пока VirusTotal 1/69


  1. firk
    25.02.2019 20:20

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

    И это, несмотря на всё вышеописанное, хорошо.


  1. akhalat
    25.02.2019 21:53

    WinRAR не определяет файлы по разрешению, и эксплойт будет работать с уязвимой версией программы, даже если подготовленный архив ACE имеет расширение RAR (или любое другое).

    Переименованный .ace в .rar WinRAR откроет, но ругнется на формат архива, что должно насторожить.
    Ну и вместо обновления версия, можно самому из своей вручную удалить эту dll-ку.


  1. ReklatsMasters
    25.02.2019 23:05
    -1

    Эта уязвимость такая старая, что уже закончила школу и поступила в универ.


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


  1. Sdima1357
    26.02.2019 01:50

    У WinRARа даже баги винрарные!


  1. eStellar
    26.02.2019 02:29

    Будет ли аналогичный баг убран у Total Commander? Там тоже используется библиотека unace


    1. sklart
      26.02.2019 09:11

      Автор выложил пропатченную версию библиотеки.

      I have patched the unacev2 dll so it's not prone to the bug anymore. The DLL immediately terminates the unpacking process if it finds the string ../ or… \ in the path name. In the process, directories with the name «test ..» are wrongly recognized as dangerous. Since such names are not normally found on Windows, that's better than the vulnerability.
      © C. Ghisler


    1. Sedge
      26.02.2019 09:19

      С большой долей вероятности Гислер пойдет по пути команды WinRar'а, так что можно эту библиотеку с чистой совестью отправить в треш самостоятельно.

      PS. А, нет… Надо же :)


  1. Zarf
    26.02.2019 12:22

    Чтобы создать ACE-архив нужна платная версия WinACE, а официальный сайт не работает, купить её нельзя.
    Значит будет спрос на ломаную версию.

    Распространяем в интернете зараженный архив с PRO версией WinACE

    Профит


    1. akhalat
      26.02.2019 13:58
      +1

      > официальный сайт не работает, купить её нельзя.

      Можно взять здесь www.shareware.de/download/winace. И покупать не обязательно, у проги есть триал, чтобы создать архив и поиграться вполне достаточно.


  1. tyomitch
    28.02.2019 11:01

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

    Ещё, по его словам, Рошал на него страшно зол, что эту историю опубликовали и раскрутили как «уязвимость в WinRAR», тогда как проблема в сторонней библиотеке, поставляемой в составе WinRAR.