В браузерном дополнении Cisco WebEx выявлен URL, позволяющий выполнить код в системе

В браузерном дополнении, устанавливаемом при использовании платформы для проведения web-конференций Cisco WebEx, выявлена показательная уязвимость, позволяющая при открытии в браузере специально оформленной страницы выполнить код на уровне операционной системы с правами текущего пользователя. Платформа WebEx получила большое распространение в корпоративной среде и насчитывает более 20 млн пользователей.

Уязвимость вызвана наличием предопределённого идентификатора, позволяющего передать дополнению команды. В частности, команды можно передать через запрос специально оформленно страницы, обращение к которой может быть скрыто от пользователя путем применения блоков iframe. Так как дополнение реализовано в виде надстройки над нативным кодом, вызываемым при помощи API nativeMessaging, атакущие могут добиться выполнения вызовов nativeMessaging от имени дополнения и организовать выполнение произвольного кода на уровне системы.

Эксплоит достаточно прост и сводится к выполнению передачи сообщения WebEx с любой страницы, названной
«cwcsf-nativemsg-iframe-43c85c0d-d633-af5e-c056-32dc7efc570b.html» (название принципиально, так как является идентификатором, позволяющим выполнить действия на стороне дополнения). Для выполнения кода используется команда GpcInitCall, позволяющая вызвать функцию из нативного компонента. Например, в подготовленном для платформы Windows эксплоите осуществляется обращение к библиотеке «MSVCR100.DLL» и вызов функции «_wsystem()». В качестве примера приведён запуск калькулятора после открытия в браузере подготовленной атакующими web-страницы.

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

   var msg = {
       ...
       GpcComponentName: btoa("MSVCR100.DLL"),
       GpcInitCall: btoa("_wsystem(ExploitShellCommand);"),
       ExploitShellCommand: btoa("calc.exe"),
   }

   document.dispatchEvent(new CustomEvent("connect", { detail: { token: "token" }}));
       document.dispatchEvent(new CustomEvent("message", { detail: {
            message: JSON.stringify(msg),
            message_type: "launch_meeting",
            timestamp: (new Date()).toUTCString(),
            token: "token"
        }
    }));

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.