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

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

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

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

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

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

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

Официальный сайт фреймворка Electron

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

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

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

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

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

Приложение Mullvad VPN использует фреймворк Electron

И ты, Брут! На Electron могут быть построены приложения, от которых меньше всего ожидаешь

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

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

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

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

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

Список уязвимостей в Chrome/Chromium, найденных за 8 месяцев 2023 года

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

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

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

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

И вот свежая иллюстрация: 11 сентября Google закрыл уязвимость CVE-2023-4863 в Google Chrome. На этот момент, она уже активно эксплуатировалась в кибератаках. Все что требуется злоумышленнику для ее использования — подготовить специальное изображение, при демонстрации которого происходит запись памяти за пределами буфера, что может приводить к выполнению произвольного кода. Разумеется, эта ошибка присутствует и в 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. Это на самом деле не так уж сложно: обычно сам факт использования фреймворка говорит о том, что у сервиса есть крайне продвинутая веб-версия, которая скорее всего не уступает по функциям и удобству десктопному приложению.
  • Постарайтесь инвентаризировать все Electron-приложения, которыми пользуются сотрудники вашей компании, и приоритизируйте их обновление. Чаще всего это приложения для коллаборации тех или иных оттенков — от Microsoft Teams, Slack и Asana до GitHub и Figma.
  • Используйте надежное защитное решение. Оно поможет отразить атаки в те промежутки времени, когда об уязвимостях уже всем известно, эксплойты к ним уже есть, а вот обновления еще не появились. Кстати, в наших продуктах есть система защиты от эксплойтов, периодически она помогает нашим экспертам обнаруживать эксплуатацию новых, еще неизвестных уязвимостей и предупреждать об этих дырах разработчиков соответствующих программ.
Советы