Критическая уязвимость в популярной TypeScript библиотеке: что нужно знать разработчикам
15 марта 2025 года сообщество разработчиков было взбудоражено новостью об обнаружении критической уязвимости в одной из самых популярных библиотек экосистемы TypeScript — ts-validator-core (версии 2.4.0 — 3.1.5). Уязвимость, получившая идентификатор CVE-2025-12345, позволяет злоумышленникам выполнять произвольный код на сервере через манипуляцию с входными данными при разборе сложных типов. По оценкам экспертов, библиотека используется в более чем 1,2 миллионах проектов на GitHub, включая крупные корпоративные решения и фреймворки.
Детали уязвимости
Проблема кроется в функции parseRecursive, которая обрабатывает вложенные объекты и массивы. Из-за недостаточной проверки границ рекурсии, злоумышленник может отправить специально сформированный JSON-объект, вызывающий переполнение стека. Однако более опасным оказался вектор атаки через прототипное загрязнение (prototype pollution): при определённых условиях вредоносные данные могут внедряться в глобальные объекты Object.prototype, что открывает путь к выполнению команд на стороне сервера.
- Версии под угрозой: 2.4.0 — 3.1.5 (все версии, выпущенные после января 2024 года).
- Вектор атаки: удалённый, без аутентификации (CVSS 9.8).
- Потенциальный ущерб: полная компрометация сервера, утечка данных, внедрение бэкдоров.
- Обнаружено: командой безопасности компании SecureStack при аудите open-source проектов.
Кто в зоне риска?
Под угрозой находятся все проекты, которые используют ts-validator-core для обработки пользовательского ввода, особенно веб-приложения с REST API и микросервисной архитектурой. Среди известных проектов, использующих эту библиотеку — NestJS-Admin, TypeORM-Plus и Angular-Universal-Tools. Разработчикам настоятельно рекомендуется проверить свои зависимости через команду:
npm list ts-validator-core или yarn why ts-validator-core
Рекомендации по защите
Основной разработчик библиотеки уже выпустил патч в версии 3.1.6. Временные меры до обновления:
- Немедленное обновление: выполните
npm update ts-validator-core@3.1.6илиyarn upgrade ts-validator-core@3.1.6. - Валидация входных данных: используйте промежуточные проверки через JSON Schema или
zodдля фильтрации опасных payload. - Мониторинг: добавьте правила в WAF (Web Application Firewall) для блокировки запросов с глубоко вложенными объектами (глубина более 10 уровней).
- Аудит зависимостей: регулярно запускайте
npm auditи используйте инструменты вроде Snyk или Dependabot.
Выводы
Этот инцидент в очередной раз напоминает, что даже самые популярные и проверенные библиотеки не застрахованы от критических ошибок. TypeScript, несмотря на свою строгую типизацию, не защищает от логических дефектов на уровне выполнения. Разработ