В браузерном дополнении, устанавливаемом при использовании платформы для проведения web-конференций Cisco WebEx (https://www.webex.com), выявлена (https://bugs.chromium.org/p/project-zero/issues/detail?id=1096) показательная уязвимость, позволяющая при открытии в браузере специально оформленной страницы выполнить код на уровне операционной системы с правами текущего пользователя. Платформа WebEx получила большое распространение в корпоративной среде и насчитывает более 20 млн пользователей.
Уязвимость вызвана наличием предопределённого идентификатора, позволяющего передать дополнению команды. В частности, команды можно передать через запрос специально оформленно страницы, обращение к которой может быть скрыто от пользователя путем применения блоков iframe. Так как дополнение реализовано в виде надстройки над нативным кодом, вызываемым при помощи API nativeMessaging (https://developer.chrome.com/extensions/nativeMessaging), атакущие могут добиться выполнения вызовов nativeMessaging от имени дополнения и организовать выполнение произвольного кода на уровне системы.
Эксплоит (https://bugs.chromium.org/p/project-zero/issues/attachmentTe...) достаточно прост и сводится к выполнению передачи сообщения 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"
}
}));
Разработчики Firefox уже добавили (https://bugzilla.mozilla.org/show_bug.cgi?id=1333225) дополнение WebEx Extension (https://addons.mozilla.org/en-US/firefox/blocked/i1522) в черный список. Дополнение также временно ххhttps://chrome.google.com/webstore/detail/cisco-webex-extens.../ заблокировано]] в Chrome web store. Компания Cisco подготовила исправление (обновление дополнения пока не опубликовано), но оно не блокирует скрытый идентификатор, а ограничивает возможность выполнения запросов с сайтов *.webex.com и *.webex.com.cn при обязательном применении HTTPS. Ряд разработчиков Chromium не согласились с таким исправлением, так как по сути владельцам сайта webex.com оставлена возможность выполнения любого кода на стороне системы пользователя и возникают вопросы о возможности осуществления XSS-атак.
URL: https://news.ycombinator.com/item?id=13466187
Новость: http://www.opennet.me/opennews/art.shtml?num=45904