Критическая уязвимость в популярной 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