Статья Безопасность десктопных приложений на фреймворке Electron

BOOX

Стаж на ФС с 2012 года
Команда форума
Служба безопасности
Private Club
Регистрация
23/1/18
Сообщения
27.602
Репутация
11.420
Реакции
60.961
RUB
50
Несколько слов о том, почему к настольным приложениям, разработанным на основе фреймворка Electron, следует относиться с осторожностью.


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

Однако в процессе написания того поста стало понятно — проблема распространена значительно шире и касается далеко не только мессенджеров, но и сотен других приложений. Велик шанс, что из-за Electron-приложений у вас на компьютере вот прямо сейчас установлено гораздо больше браузеров, чем вы думаете. Поговорим об этом несколько подробнее.

Что такое фреймворк Electron и зачем его используют разработчики приложений

Electron — это фреймворк для разработки кросс-платформенных настольных приложений с использованием веб-технологий — главным образом HTML, CSS и JavaScript. Изначально он был создан компанией GitHub для ее редактора исходного кода Atom (поэтому оригинальным названием фреймворка было Atom Shell). Позже фреймворк был переименован в Electron и в итоге стал популярнейшим инструментом для создания настольных приложений, которые могут работать в различных десктопных операционных системах — Windows, macOS и Linux.


Главная страница официального сайта фреймворка Electron

В основе Electron лежит браузерный движок Chromium, обеспечивающий отображение веб-контента внутри десктопного приложения. Получается, что программа, построенная на фреймворке Electron, — это как бы один-единственный сайт, открытый в браузере Chromium.

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

Почему Electron приобрел такую популярность? Идея тут, по сути, такая: какой бы цифровой сервис вы ни делали, в любом случае придется разрабатывать для него веб-версию. Так вот, фреймворк Electron, если сильно упростить, позволяет разработать только веб-версию и по ускоренной программе изготовить на ее основе полноценные приложения для всех десктопных операционных систем разом.

Также в набор возможностей Electron входят еще несколько удобных функций — изготовление установочных пакетов, их диагностика, публикация в магазинах приложений и автоматическое обновление.



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

В чем проблема приложений на Electron

У приложений, построенных на фреймворке Electron, есть несколько недостатков. Самый очевидный для пользователей — это их изрядная неповоротливость. Программы, основанные на Electron, получаются очень увесистыми и ресурсоемкими. Ведь любому такому приложению приходится носить с собой собственный домик, совсем как улиточке полный браузер Chromium — по сути, работать через него как через прокладку.

Следующая проблема: веб-браузеры являются излюбленной целью киберпреступников. Здесь уместно еще раз повторить: внутри каждого приложения, разработанного на Electron, содержится отдельный веб-браузер Chromium. А это значит — в вашей системе установлен десяток дополнительных браузеров, являющихся потенциальными мишенями для преступников.

В таком популярном браузере, как Chrome/Chromium, серьезные уязвимости находят едва ли не каждую неделю: например, с начала этого года и до момента написания данного текста в Chromium нашли . Что еще хуже, для уязвимостей в самом популярном браузере мира очень быстро появляются эксплойты. То есть существенная часть дырок в Chrome/Chromium — это не абстрактные баги, которые неплохо бы закрыть, а уязвимости, используемые для атак, что называется, в дикой природе.


Даже мелким шрифтом список уязвимостей в Chromium, найденных за прошедшую часть 2023 года, занимает несколько экранов

Для отдельного браузера Chrome это не становится такой уж серьезной проблемой, поскольку Google очень быстро выпускает обновления, а также достаточно настойчиво убеждает пользователей их установить и перезапустить браузер (даже очень заботливо открывает все их драгоценные вкладки после перезапуска, чтобы они не опасались обновляться).

С приложениями, построенными на Electron, все обстоит сильно иначе. Встроенный в такое приложение браузер Chrome обновляется, если конкретно его разработчик выпустил новую версию и как-то донес до пользователей необходимость ее установить.

Получается, что с Electron-приложениями в системе не просто установлено несколько браузеров, но вы еще и не особенно контролируете, насколько свежи версии этих браузеров, и ничего не знаете о количестве незапатченных уязвимостей в них.

И вот свежая иллюстрация: 11 сентября Google закрыл уязвимость в . На этот момент, она уже активно эксплуатировалась в кибератаках. Все что требуется злоумышленнику для ее использования — подготовить специальное изображение, при демонстрации которого происходит запись памяти за пределами буфера, что может приводить к выполнению произвольного кода. Разумеется, эта ошибка присутствует и в Chromium, и во всех приложениях на базе Electron. Так что всем компаниям, использующим его в своих разработках, придется .
Сами создатели фреймворка Electron , что есть такая проблема, и настоятельно рекомендуют разработчикам приложений вовремя выпускать обновления. Увы, но пользователю остается лишь надеяться, что разработчики следуют этим рекомендациям.

Какие настольные приложения построены на фреймворке Electron

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

Можете проверить сами вот в этом списке:
  • 1Password
  • Agora Flat
  • Asana
  • Discord
  • Figma
  • GitHub Desktop
  • Hyper
  • Loom
  • Microsoft Teams
  • Notion
  • Obsidian
  • Polyplane
  • Postman
  • Signal
  • Skype
  • Slack
  • Splice
  • Tidal
  • Trello
  • Twitch
  • Visual Studio Code
  • WhatsApp
  • WordPress Desktop
Лично мы пользуемся примерно третью сервисов из этого списка (но ни одним из соответствующих десктопных приложений, уточняем на всякий случай).

Разумеется, список выше — это далеко не все приложения, построенные на фреймворке Electron, в него входят только наиболее популярные из них. А всего таких приложений несколько сотен — с более или менее полным списком можно ознакомиться на на официальном сайте фреймворка (но, кажется, даже там приведены не все).


В списке настольных приложений, использующих фреймворк Electron, несколько сотен онлайн-сервисов, включая пару десятков крайне популярных

Меры безопасности

Что же можно сделать, чтобы не подвергаться опасности из-за неконтролируемых браузеров, которые заботливые разработчики теперь совершенно непредсказуемо суют в настольные приложения?

У нас есть три основных совета:

  • По возможности минимизируйте количество приложений на основе Electron. Это на самом деле не так уж сложно: обычно сам факт использования фреймворка говорит о том, что у сервиса есть крайне продвинутая веб-версия, которая скорее всего не уступает по функциям и удобству десктопному приложению.
  • Постарайтесь инвентаризировать все Electron-приложения, которыми пользуются сотрудники вашей компании, и приоритизируйте их обновление. Чаще всего это приложения для коллаборации тех или иных оттенков — от Microsoft Teams, Slack и Asana до GitHub и Figma.
  • Используйте надежное защитное решение. Оно поможет отразить атаки в те промежутки времени, когда об уязвимостях уже всем известно, эксплойты к ним уже есть, а вот обновления еще не появились.
 
Спасибо за статью
 
  • Теги
    безопасность десктопных приложений приложения на фреймворке electron фреймворк electron
  • Сверху Снизу