A06: Vulnerable and Outdated Components

Современное приложение на 80% состоит из чужого кода — и его уязвимости становятся вашими.

Vulnerable and Outdated Components — использование библиотек, фреймворков и зависимостей с известными уязвимостями или без обновлений безопасности.

Вы устанавливаете десятки пакетов, каждый из которых тянет свои зависимости. Если в любом из них найдут уязвимость, ваше приложение становится уязвимым — даже если ваш собственный код идеален.

CVE и известные уязвимости

CVE (Common Vulnerabilities and Exposures) — публичный каталог известных уязвимостей с уникальными номерами вида CVE-2021-XXXXX. Когда в популярной библиотеке находят дыру, ей присваивают CVE, и злоумышленники сразу начинают искать сайты, где эта версия ещё не обновлена.

Цепочка поставок

Атаки на цепочку поставок (supply chain) — отдельная большая тема: вредоносный код внедряют прямо в популярный пакет, и он распространяется ко всем, кто его установит. Поэтому важно не только обновляться, но и контролировать, что именно вы устанавливаете.

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

  • Ведите учёт зависимостей (SBOM — список того, из чего собран продукт).
  • Используйте SCA-сканеры (Software Composition Analysis): они сверяют ваши версии с базой CVE и сигналят об уязвимых.
  • Регулярно обновляйте зависимости; не держите версии «замороженными» годами.
  • Удаляйте неиспользуемые пакеты — меньше кода, меньше риска.
  • Берите пакеты из доверенных источников, проверяйте популярность и поддержку.
# Встроенные аудиторы экосистем сверяют версии с базой уязвимостей
npm audit
pip-audit

Частые ошибки разработчиков

  • «Работает — не трогай»: не обновляют зависимости годами, накапливая известные уязвимости.
  • Тянут случайные пакеты с похожим именем (typosquatting) без проверки источника.
  • Не следят за зависимостями зависимостей (транзитивными), хотя уязвимость часто именно там.

Итог

  • Чужие уязвимости в зависимостях становятся вашими.
  • CVE — каталог известных дыр; атакующие сканируют сайты на устаревшие версии.
  • Решение: учёт зависимостей, SCA-сканеры, регулярные обновления, доверенные источники.
Проверьте себя
1. Что такое CVE?
AТип шифрования
BПубличный каталог известных уязвимостей с уникальными номерами
CАнтивирус
DПротокол передачи данных
2. Зачем нужны SCA-сканеры (например, npm audit, pip-audit)?
AУскорять сборку
BСверять версии ваших зависимостей с базой известных уязвимостей
CШифровать пакеты
DУменьшать размер бандла