DLL HiJacking в Qt-приложениях

    В марте 2011 года я писал о DLL HiJacking в VirtualBox. Тогда разработчики сообщили, что проблема не в их продукте, а в Qt, на котором основана их продукция.
    Наконец, найдя время, я решил проверить так ли это. Оказалось, что так.

    Мной были проверены:


    И они оказались уязвимы.


    Видео демонстрация уязвимости (видео без звука):

    Однако, версия Oracle VirtualBox 4.1.2 уже не была уязвима. Пытаясь выяснить с какой версии Qt проблема решилась, стал изучать Qt changelog, где обнаружил вот такую запись для версии 4.7.1:

    QLibrary
    * [QT-3825] System libraries are only loaded from the system directories.


    Для тех, кто пользуется приложениями, написанными на Qt, рекомендую проверить версии библиотек (Qt*.dll), находящихся в той же директории, что и исполняемый файл приложения. Если их версия < 4.7.1 обновите их вручную, скачав Qt Libraries.

    Список потенциально уязвимых приложений (часть из них уже используют обновлённую Qt).

    UPD: Перевод поста на английский

    Ссылки по теме:
    1. DLL Hijacking (инструментарий для поиска, эксплуатация через Metasploit)
    2. Прибыльный DLL Hijacking (спасибо elgrand)
    3. Microsoft Security Advisory (2269637)
      Insecure Library Loading Could Allow Remote Code Execution
      (спасибо ComodoHacker)
    4. Qt: Security announcement – Windows DLL preloading
    5. Опубликован новый раздел реестра CWDIllegalInDllSearch, позволяющий управлять алгоритмом пути поиска DLL
    Метки:
    Поделиться публикацией
    Похожие публикации
    Комментарии 12
    • +8
      QT != Qt. Почему вы пишете это как аббревиатуру?
      • +5
        Извиняюсь за свою неточность и неосведомлённость (действительно всегда писал как аббревиатуру и не обращал на это внимания).

        Исправил.
        • 0
          чем записывали видео? Мне очень понравилось
          • +3
            UVScreenCamera
            сохранение с эффектами (наложение текста и всё остальное что там есть) возможно в формат .flv (его поддерживает youtube). Бесплатная версия программы этого не позволяет
          • –3
            Написали бы статью HOW-TO на этом устаревшем (допустимом( примере. Был бы респект!
          • +1
            Скажите, а описание самой уязвимости в Qt где почитать?
            Это продолжение модного треда (поиск библиотеки через SearchPath() и т.п.) или что-то новое?
            • 0
              1. Вот всё, что я смог найти:
              Security announcement – Windows DLL preloading

              Хотя там нет информации о том когда уязвимость срабатывает. А срабатывает она если есть у приложения ассоциированное расширение. Просто сообщили: такое возможно (не сообщив в каких случаях) и обновитесь.
              Собственно, из-за широкой неосведомлённости и был создан этот топик. Уж даже если Oracle была в курсе проблемы, перевалила всё на Qt (небезосновательно, конечно) и до сих пор выпускает ветку VirtualBox 4.0.х, собранную на старых версиях Qt. Последняя на данный момент из этой ветки VirtualBox v 4.0.14 выпущена 18 октября.

              2. Верно, это продолжение треда. Дань моде, так сказать ;)
              • +1
                По вашей ссылке есть патчи. Судя по ним, было просто
                LoadLibraryW(L"advapi32")

                Заменили на полностью «ручной» поиск по списку каталогов
                +    The search order is the same as the order in DLL Safe search mode Windows,
                +    except that we don't search:
                +    * The current directory
                +    * The 16-bit system directory. (normally c:\windows\system)
                +    * The Windows directory.  (normally c:\windows)
                +
                +    This means that the effective search order is:
                +    1. Application path.
                +    2. System libraries path.
                +    3. Trying all paths inside the PATH environment variable.
                +
                +    Note, when onlySystemDirectory is true it will skip 1) and 3).
                
              • 0
                треда тренда, прошу прощения.
              • 0
                Вывод: чаще обновляйте библиотеки.

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.