Критическая уязвимость в TypeScript библиотеке: угроза для миллионов проектов

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Критическая уязвимость в популярной TypeScript библиотеке: что нужно знать разработчикам

Сообщество разработчиков всколыхнула новость об обнаружении критической уязвимости в одной из самых популярных библиотек экосистемы TypeScript и JavaScript. Уязвимость, получившая идентификатор CVE-2024-XXXX (присваивается), затрагивает библиотеку ts-lib-injector (версии 2.3.0 – 2.7.1), которая используется в более чем 150 000 проектов на GitHub и загружается из реестра npm более 3 миллионов раз в неделю.

Эксперты по кибербезопасности из компании Snyk и команды безопасности npm подтвердили, что проблема позволяет злоумышленнику выполнить произвольный код на сервере или в среде разработки жертвы. Уязвимость классифицируется как критическая с рейтингом CVSS 9.8 из 10.

Как работает уязвимость?

Проблема заключается в некорректной обработке входных данных в функции parseConfig() библиотеки. Злоумышленник может отправить специально сформированный JSON-файл конфигурации (например, через tsconfig.json или package.json), который при парсинге инициирует внедрение вредоносного кода в поток сборки.

  • Вектор атаки: удалённый, через открытый репозиторий или CI/CD пайплайн.
  • Сложность эксплуатации: низкая — достаточно подсунуть файл с модифицированными данными.
  • Воздействие: полный контроль над системой, кража токенов, ключей API и исходного кода.

Кто под угрозой?

Под ударом находятся все проекты, использующие уязвимую версию библиотеки. В первую очередь это:

  • Приложения, собираемые через Webpack или Vite с плагином ts-lib-injector.
  • CI/CD системы (GitHub Actions, GitLab CI, Jenkins), где автоматически устанавливаются зависимости.
  • Монорепозитории, использующие Nx или Turborepo.

Особую опасность представляет то, что уязвимость может быть использована в цепочке поставок (supply chain attack): если злоумышленник скомпрометирует один пакет, он может заразить все зависимые проекты.

Как защититься?

Команда разработчиков уже выпустила исправление в версии 2.7.2. Рекомендуется немедленно обновить библиотеку:

  • Проверьте версию: npm list ts-lib-injector или yarn why ts-lib-injector.
  • Обновите до последней версии: npm update ts-lib-injector@latest.
  • Проверьте свой package-lock.json на наличие подозрительных записей.
  • Используйте инструменты аудита: npm audit или yarn audit для выявления других уязвимостей.

Дополнительные меры безопасности

Эксперты настоятельно рекомендуют внедрить следующие практики в процесс разработки:

  • Включить Dependabot или Renovate для автоматического обновления зависимостей.
  • Настроить Snyk или GitHub Security

Рекомендуем библотеки