Спуфинг расширения в winrar

    Топик одним предложением — есть техническая возможность заменить отображаемое имя файла в Winrar. И какой-нибудь image.jpeg успешно выполнится как .exe файл :) Я не буду делать полный перевод оригинального топика, но перескажу суть под катом.

    Если рассмотреть структуру zip файла


    То можно увидеть, что байты после смещения в 30 байт указывают на имя файла внутри архива.
    Но! Если запаковывать через WinRar в ZIP файл, то WinRaR добавляет еще свои байты (общая структура, конечно же, такая же).



    То можно увидеть, что имя файла (в примере выше запаковывался файл TEST1.txt) содержится два раза. И со вторым именем он распакуется, а с первым отобразится в проводнике Winrar.

    И главный момент: мы можем выставить второе значение любым другим, ошибки не будет. Соответственно, при «типичном» действии — двойной клик по файлу с расширением .txt мы можем выполнить бинарный файл.



    Уязвима версия 4.2, и скорее всего ниже. Решение — установить другой архиватор/или версию winrar из 5-ой ветки.

    PoC: sergeybelove.ru/downloads/ZIP_WINRAR_POC.zip (вместо txt файла откроется картинка).

    UPD: dMetrius сообщает, что в 5.01 не воспроизвелось
    Digital Security
    166.32
    Безопасность как искусство
    Share post

    Comments 67

      –3
      уязвима версия 4.2, скорее всего и другие

      На дворе версия 5.01.

      Можно ваш POC файл для проверки?
          +1
            0
            И ещё — у вас какой-то неправильный POC ;)
            Он и в WinRAR у вас показывает правильное расширение — своё родное.

            Вот у меня показывается «notepad.jpg», несмотря на то, что положил я туда «notepad.exe».

            baranov.in/notepad.zip
              0
              А нет, всё правильно, просто у вас в оригинале лежал .jpg, а вы поменяли ему расширение на .txt
                +4
                Скрытый текст
              +1
              В 5.01 показывается .jpg (и экстрактируется также .jpg) и интерпретируется как .jpg — пытается открыть программой просмотра изображений по-умолчанию.

              Всё это несмотря на то, что внутри был notepad.exe, замененный на notepad.jpg.
                –4
                Отлично, добавлю в топик, но это лишь означает, что есть решение проблемы.
                Прямо на главной www.win-rar.ru/download/winrar/ предлагается скачать 4.20
                  +16
                  Это не официальная, а какая-то левая страница…
                  Официальная всегда была тут: www.rarlab.com/
                    +4
                    Ох, точно, спасибо за наводку.
                    Жаль, что в моей выдаче гугла (думаю, как и многих) ссылка на win-rar.ru стоит выше.
                      0
                      В данном случае — хотя и не только в данном — более разумно использовать Wikipedia, а не Google.
                        +4
                        Ну, а почему бы и нет?! Я тоже часто смотрю ссылку на официальный сайт в вики.
                      +3
                      Левая, зато раскрученная! У меня, например, она тоже первой идёт.
                        +1
                        На эту «левую» страницу есть ссылка на официальном сайте www.rarlab.com/gp_country.php?country=Russia
                          0
                          Что с того, что на эту страницу есть ссылка на офф. сайте, если на ней выложены старые версии софта и выглядит она, мягко говоря, не очень?
                            +2
                            Какая разница, как она выглядит? Рарлаб тоже c 2002 года не сильно изменился и что с того?
                              0
                              Ну вы версии-то гляньте на официальном дилере…
                                +1
                                5.0 против 5.1 на rarlab. Мне кажется, это не столь серьёзное отставание.
                                  0
                                  Ага, а вы в локализованные версии загляните ;)
                                    0
                                    Не логичней ли за локальными версиями отправляться на локальные сайты коих довольно много на рарлаб?
                                      0
                                      Нет, не логичней. На локальном сайте, русская версия 4.2, а на офф. 5.01…
                                        0
                                        Меня уже утомил этот разговор. Лицензии продаются для 5.х. Скачивается 5.0ru.
                                        Что до устаревшего списка локализованных версий, то все не идеальны. Это не же повод называть что-то левым и не относящимся к делу.
                                          +1
                                          Ну хорошо, не левый, а просто устаревшее локальное зеркало, по видимому, поддерживаемое переводчиком. Мне приятнее софт качать с оригинального ресурса с гарантированно последними версиями.
                                          Засим откланяюсь…
                              0
                              Как понимаю, это вообще официальный дилер.
                                0
                                Угу, и архивы у них отличаются от оригинальных…
                          +1
                          Это не только левая версия, видимо и какая то правленая впридачу — попробовал на старых версиях 3.7, 3.95, 4.01 — никаких проблем — то что видим внутри, то и открываем.

                          Кстати другое поведение было бы как минимум странно, т.к. работая с одним заголовком в проводнике, использовать имя из другого заголовка при открытии файла видится мне специально сделаной «фичей» — мало того что не логично, еще и сложнее в реализации.
                            0
                            Бэкдор для NSA? :-)
                      +38
                      С уважением отношусь к автору замечательного архиватора WinRar и не хочу его «обворовывать», ставя на компьютеры всех родственников/знакомых архиватор. Ставлю 7-zip.

                      А вообще как то давно во времена CD сам придумал такую фишку в режиме командной строки винрару можно указать процент избыточности архива — вплоть до 90%. Т.о. «расширяем» архив с важными данными до размера CD-болванки и, в случае битых секторов царапания восстанавливаем данные
                        +5
                        Насколько я помню, максимальный размер информации для восстановления всегда (сколько я застал) был 10%. Или вы что-то другое имеете в виду?
                          0
                          Может тома для востановления?
                            +1
                            Это через GUI, а из командной строки — до 99%
                            +7
                            > С уважением отношусь к автору замечательного архиватора WinRar и не хочу его «обворовывать», ставя на компьютеры всех родственников/знакомых архиватор. Ставлю 7-zip.

                            Шедевр логики просто. Полагаете, Евгению Рошалу теперь спокойнее по ночем спится?
                              +1
                              Эээ, Евгению?

                              Copyright © 2002-2014 Alexander Roshal. All rights reserved.
                                0
                                А вот простите, не знал… Прочитал всё, понял, исправлюсь…
                                  +1
                                  Евгений и Александр — два брата. Пишет код Евгений.
                                    0
                                    Спасибо, я уже разобрался и прочитал об этом в Википедии!
                                  0
                                  Внимание вопрос — что для Евгения лучше — если мы пользуемся пиратским винраром или бесплатным 7zipом? Вариант «всё хуже, вы должны заплатить» не рассматриваем.
                                –13
                                Забыли упомянуть, что уязвимость только в Windows-версиях архиватора.
                                  +15
                                  Вроде бы взаимоисключающее выходит: проводник WinRAR есть только в Windows.
                                    0
                                    Формально на сайте есть «WinRAR for Linux»
                                      +1
                                      А Вы уверены что там нет ошибки? Необязательно с exe же, какой угодно скрипт.
                                        0
                                        www.rarlab.com/rar/WinRARLinux.tar.gz

                                        А, вы про багу. Ну, в линуксах не принято запускать что-либо «по клику» без указания «ЗАПУСТИ ЭТО».

                                        То есть cd ~/download;./badscript — да. cd ~/download;badscript — нет.

                                        В этом старинное и очень серьёзное различие между юниксами и виндами.
                                          +1
                                          Все равно не понимаю. Ну нету WinRAR gui под линукс.
                                          Писать — «О, а вот линукс версия не уязвима!» — это такое скрытое программирование людей, что пора бы уже всем под линукс? :)
                                            0
                                            Тут скорее вопрос в отношении к исполняемым файлам. В виндах общепринято запускать скачанные из интернета исполняемые файлы. Куча добропорядочного софта так распространяется.

                                            В юниксах не принято исполнять что попало как попало. То есть если что-то исполняется (как скрипт, или как исполняемая программа) то обычно требуется явное указание «выполни это», а весь уважающий себя софт распространяется через доверенные каналы с цифровыми подписями, которые в добавок ещё требуют прав суперпользователя для установки.
                                              +5
                                              > Тут скорее вопрос в отношении к исполняемым файлам.

                                              Тут вопрос о баге в UI конкретной программы. Обсуждать можно ли написать под линуксы программу, молча запускающую другую программу или что в линуксе нет ни WinRAR, ни его глюков — толстый троллинг.

                                              Кстати, «WinRAR for Linux» нету, есть «RAR for Linux». Но это же мелочи, когда холивар надо разводить.
                                          +5
                                          Ну, в линуксах не принято запускать что-либо «по клику» без указания «ЗАПУСТИ ЭТО».


                                          Хотя всякие «хипстерские» штуки постоянно пытаются эту идеологию протолкнуть через curl… | bash ;-)
                                            0
                                            Так это практически ничем не отличается от wget URL && tar -xvf FILE.tar.gz && ./BINARY. Только действий меньше.
                                              +3
                                              Нет, я о том как многие сайты пропагандируют установку через бездумное выполнение кода, скачанного из сети (бонусные баллы за отсутствие https и пайп в sudo sh).
                                                0
                                                Есть такая проблема. Впрочем, её решение — не в изменении людей, а в организации адекватной песочницы уровня ОС. В принципе, процесс идёт (база для LXC сделана, осталось всё это очень аккуратно увязать чем-то типа docker'а). Надеюсь в ближайшие лет 5 увидеть, наконец, песочницу, которая сможет запускать нативный код с контролируемыми пермишеннами на всё (и без ада SELinux'а).
                                            0
                                            Так он тянет с собой Wine и представляет собой виндовую версию.
                                              0
                                              Разница между ./badscript и badscript минимальна. Тем более — не старинное и очень серёзное различие.

                                              Всего лишь наличие или отсутствие точки (current directory) в путях.

                                              И всё.
                                              0
                                              Мало того, что там нет UI. Там, похоже, консольная версия вообще ZIP не поддерживает (что неудивительно).
                                                0
                                                Чёрт, опоздал ;)
                                                  0
                                                  Unix-way в действии ;-)
                                            –3
                                            А под линукс unrar вообще не поддерживает работу с ZIP:

                                            Extracting from /home/d-metrius/notepad.zip

                                            unknown archive type, only plain RAR 2.0 supported(normal and solid archives), SFX and Volumes are NOT supported!
                                            All OK
                                              +1
                                              Выше работа через unrar-free. Вот unrar-nonfree:

                                              d-metrius@d-metrius:~$ unrar e ./notepad.zip

                                              UNRAR 4.10 freeware Copyright © 1993-2012 Alexander Roshal

                                              ./notepad.zip is not RAR archive
                                              No files to extract
                                              0
                                              В Андроиде что-то такое было. Только не имя файла подменялось, а сам файл.
                                              0
                                              Наша старая 3.92 не подвержена этой уязвимости. Проверили ZIP_WINRAR_POC.zip и rar открывает test1.txt как бинарный файл в блокноте.
                                                0
                                                На старенькой 3.80 не воспроизводится.
                                                  +1
                                                  Пошел и обновил до 5-й версии, от греха подальше.
                                                    0
                                                    Очевидно, что данный спуфинг расширения имени файла эксплуатирует неортогональность формата архива. Для файла в архиве указано два имени с разными целями: одно — для отображения в GUI, другое — для всего остального. Для чего такое может быть полезно с точки зрения прикладного уровня? И есть ли, к примеру, еще какие-то аттрибуты у этого блока отображаемого имени, например, возможность полного сокрытия файла в архиве с точки зрения того же GUI? Ближайшее по смыслу из известных мне, но более объяснимое явление: короткие и длинные имена в файловой FAT — хотя бы есть веская причина: унаследованный формат каталога, в который просто так не впихнёшь длинные имена; последние, кстати, легко убиваются утилитой SCANDISK из дистрибутива MS-DOS v6.20.
                                                      +2
                                                      А зачем вообще нужен Winrar если есть 7zip?
                                                        0
                                                        Имхо, потому что иногда за качество + поддержку = уверенность хотят заплатить.
                                                        Для примера, загляните хотя бы в баг-трекер 7zip.
                                                          0
                                                          что-то платный винрар-то подкачал…
                                                        +1
                                                        Со списком уязвимых версий везде бардак. Некоторые недоисследователи сообщают, что прям на всех версиях работает, включая WinRAR 5.1

                                                        Я залез на эту страничку, скачал и протестировал все находящиеся там версии WinRAR.

                                                        Вот что получилось:
                                                        На Windows 7 x32 и Windows XP SP3 x32 уязвимы следующие версии WinRAR

                                                        1. 4.20
                                                        2. 4.11
                                                        3. 3.00
                                                        4. 2.90
                                                        5. 2.80
                                                        6. 2.60


                                                        Примечательно, что работает на 2.60 и 2.80, тогда как на промежуточными между ними 2.70 и 2.71 не работает.
                                                        С 3.11 до 4.01 не работает, но начинает работать на 4.11 и 4.20

                                                        Only users with full accounts can post comments. Log in, please.