← Все статьи

7 скрытых уязвимостей в Node.js-приложениях

ReDoS, supply chain в npm, prototype pollution, секреты в env и NoSQL injection — чеклист, который часто пропускают после «быстрого» деплоя.

Содержание

Коротко

Быстрый Node.js-бэкенд легко увести в прод с «тихими» дырами: не в логике бизнеса, а в regex, зависимостях, слиянии объектов и конфиге. Обзор на Dev.to собирает семь типичных классов проблем — полезен как чеклист перед релизом.

Что произошло

Автор описывает сценарии, когда команды теряли данные из‑за мелочей: ReDoS в пользовательском вводе, вредоносный пакет в цепочке npm, prototype pollution через Object.assign/lodash.merge, секреты в .env без ротации, NoSQL injection в MongoDB-запросах.

Это не zero-day «из новостей», а накопление мелких ошибок в типичном Express/Fastify/Nest стеке.

Почему это важно

Node экосистема поощряет скорость: npm install, copy-paste middleware, деплой. Безопасность часто откладывают, пока не сработает сканер или инцидент.

Ключевые риски из материала:

Угроза Суть Минимум защиты
ReDoS «Злой» ввод ломает regex, event loop встаёт Аудит regex, лимиты длины ввода, таймауты
Supply chain Компрометированный пакет в node_modules npm audit, lockfile, npm ci, проверка maintainers
Prototype pollution Подмена __proto__ через merge Безопасный merge, Object.create(null), JSON Schema
Секреты Ключи в env без vault Secret manager, ротация, не логировать env
NoSQL injection Объект вместо строки в запросе Валидация схемы, параметризация, allowlist полей

На практике

  1. Перед продом — прогон npm audit / OSV / Dependabot и фикс критичных CVE в lockfile.
  2. Входные данные — Zod/Valibot на границе API; не доверять req.body в запросах к БД.
  3. Merge — не мержить произвольные JSON от клиента в конфиг/профиль; для deep merge — проверенные библиотеки с защитой от pollution.
  4. Regex — избегать вложенных квантификаторов на пользовательских строках; при сомнении — библиотека вроде safe-regex или отказ от regex.
  5. CI — SAST + secret scanning (gitleaks, GitHub secret scan).

Для небольших проектов достаточно дисциплины; для enterprise — те же пункты, но формализованные в policy и review.

Итог

Статья — напоминание: безопасность Node — это не только HTTPS и helmet. ReDoS и pollution бьют так же больно, как SQL injection в других стеках. Имеет смысл пройтись по чеклисту раз в квартал или при смене major-зависимостей.