Эксперты в области безопасности обнаружили новую уязвимость в разработанном GitHub фреймворке Electron. Популярные настольные приложения — Skype, Slack, GitHub Desktop, Twitch, WordPress.com и другие — могут быть в опасности.
Напомним, что Electron позволяет разрабатывать нативные графические приложения для настольных операционных систем с помощью веб-технологий. Фреймворк включает в себя Node.js, для работы с back-end, и библиотеку рендеринга из Chromium.
API-интерфейсы Node.js и встроенные модули предоставляют разработчикам более широкую интеграцию с ОС, соответственно, позволяя получить доступ к большему количеству функций ОС. Чтобы помешать использованию функций ОС во вредоносных целях, команда Electron создала механизм, который предотвращает атаки на приложения.
«Приложения на основе Electron, как правило, представляют собой веб-приложения. Это значит, что они подвержены риску атак межсайтового скриптинга из-за неспособности правильно обработать вводимую пользователем информацию», — говорится в отчете, опубликованном Trustwave.
«Стандартное приложение Electron включает в себя доступ не только к собственным API, но также ко всем встроенным модулям Node.js. Благодаря этому возможность XSS-атаки сильно возрастает, так как злоумышленник может выполнить системные команды на стороне клиента».
У приложений, запускающих HTML и JS-код, по умолчанию включена опция «nodeIntegration: false», это значит, что доступ к API и модулям Node.js по умолчанию отключен. Тег WebView позволяет разработчикам встраивать контент — например, веб-страницу — в приложение на основе Electron и запускать его как отдельный процесс.
«При использовании тега WebView вы также можете передавать несколько атрибутов, включая nodeIntegration», — продолжают эксперты.
Исследователь Trustwave Брендан Скарвелл обнаружил, что можно изменить параметр nodeIntegration на «true», что позволит вредоносному приложению получить доступ к API и модулям Node.js и использовать дополнительные функции ОС.
Уязвимость можно проэксплуатировать только в том случае, если разработчик приложения специально не установит параметр «webviewTag: false» в файле конфигурации webPreferences.
Эксперт опубликовал подтверждающий концепцию бреши код (proof-of-concept), который злоумышленник может использовать для XSS-атаки.