Благодаря поддержке целого ряда различных платформ фреймворк Electron, предназначенный для создания приложений, пользуется большой популярностью у разработчиков и лежит в основе множества проектов. Electron базируется на JavaScript и Node.js и используется для создания клиентских приложений Skype, WhatsApp, Slack и других средств общения в интернете. Тем не менее, как утверждает исследователь Павел Цакалидис (Pavel Tsakalidis), Electron представляет серьезную угрозу безопасности приложений.
На конференции BSides LV, на этой неделе проходившей в Лас-Вегасе, Цакалидис свой инструмент BEEMKA для распаковки заархивированных файлов Electron ASAR и внедрения кода в JavaScript-библиотеки Electron и встроенные расширения для браузера Chrome.
Обнаруженная исследователем уязвимость присутствует не в самих приложениях, а в используемом для их создания фреймворке. Однако с ее помощью атакующий может легко скрыть вредоносную активность в легитимных процессах.
Для модифицирования библиотек и расширений атакующему сначала нужно получить права администратора на Linux или MacOS (в случае с Windows достаточно иметь локальный доступ). Внеся изменения в библиотеки и расширения, атакующий может создать новые «функции», способные получать доступ к файловой системе, включать web-камеру и извлекать данные (в том числе пароли) из системы с помощью функционала доверенных приложений.
В опубликованном ниже видео Цакалидис продемонстрировал версию Microsoft Visual Studio Code с бэкдором, отправляющую вводимые пользователем данные на удаленный сайт. По словам исследователя, он уведомил Electron об уязвимости, но не получил никакого ответа, и проблема по-прежнему остается неисправленной.
Я вообще не понимаю разработчиков, которые по факту просто запихивают веб-версию в урезаный браузер и называют это приложением... Оно, как тупило, так и будет тупить... И памяти жрать, как не в себя... Я, конечно, понимаю, что пользователь должен словить случайный оргазм от того, что вотсапа у него запускается отдельным ехе и в отдельном окне, но по факту-то лучше еще одно окно хрома открыть...