Критическая уязвимость CVE-2025-12999 в Eclipse Open VSX допускает подмену расширений
В Eclipse Open VSX обнаружена критическая уязвимость CVE-2025-12999 с оценкой CVSS 9.1, позволяющая неаутентифицированному злоумышленнику отравить кэш метаданных расширений и подменить ссылки на скачивание пакетов. Атака затрагивает серверы, доступные напрямую или через небезопасно настроенный обратный прокси. Через подменённые ссылки редакторы на базе VS Code могут устанавливать вредоносные VSIX-пакеты.
Подробности
Уязвимость затрагивает Eclipse Foundation Eclipse Open VSX. Метод `UrlUtil.getBaseUrl` формирует абсолютные ссылки в ответах (ссылки на скачивание, иконки, URL ресурсов и API) на основе заголовков запроса `X-Forwarded-Host`, `X-Forwarded-Proto` и `X-Forwarded-Prefix`, не проверяя, что отправитель является доверенным прокси. При их отсутствии используется клиентский заголовок `Host`. Ответы кэшируются под ключами, не включающими хост: `extension.json` начиная с версии 0.6.0, `namespace.details.json` с 0.9.0, `sitemap` с 0.14.5 и `latest.extension.version.vscode` с 0.34.2. Поэтому один запрос с подделанным заголовком помещает выбранные атакующим URL в запись, которая отдаётся всем остальным клиентам на весь срок жизни записи — по умолчанию один час, а при включённом `ovsx.redis.enabled` — в масштабах всего кластера. URL скачивания VSIX, URL его подписи и URL публичного ключа выводятся из одного и того же базового URL, поэтому подпись расширений не ограничивает ущерб: атакующий, отравивший запись, предоставляет сам пакет, подпись над ним и ключ для его проверки. Эксплуатируемость зависит от топологии развёртывания. Сервер, доступный клиентам напрямую, либо сервер за прокси, который транслирует клиентский `X-Forwarded-Host`, а не перезаписывает его, уязвим для неаутентифицированного удалённого атакующего. Прокси, перезаписывающий заголовок, уязвимости не подвержен. Итог атаки: неаутентифицированный злоумышленник может отравить кэш метаданных отдельного расширения в Open VSX, подсунув специально сформированный заголовок `X-Forwarded-Host`, и заставить редакторы, совместимые с VS Code, скачать и установить вредоносный VSIX.Что делать
Для версий без патча рекомендуются следующие меры: 1. Настроить обратный прокси так, чтобы он устанавливал, а не транслировал заголовки `X-Forwarded-Host`, `X-Forwarded-Proto` и `X-Forwarded-Prefix`. Обратите внимание: переменная `$host` в nginx содержит клиентский заголовок `Host` и не является безопасным значением. 2. Обеспечить недоступность сервера иначе как через этот прокси. 3. После изменения конфигурации очистить кэши — отравленные записи сохраняются даже после исправления настроек. Также следует отслеживать выход официального патча от Eclipse Foundation и обновиться до исправленной версии сразу после его публикации. Итог: CVE-2025-12999 — критическая уязвимость с CVSS 9.1, позволяющая неаутентифицированному атакующему через отравление кэша подменить расширения для всех клиентов инсталляции Open VSX. Ключевая защита — корректная настройка обратного прокси, перезаписывающего заголовки перенаправления, и сетевая изоляция сервера.Источник: CVE Project (cvelistV5)
