Що таке transitive dependency і чому чужа залежність теж може зламати ваш проєкт

dependenciessupply-chainsbomscapackage-manager

Пояснюємо, що таке transitive dependency, де її видно в реальних інструментах і як не пропустити ризики у вкладених залежностях

Зачіпка

Коли ви додаєте пакет у проєкт, ви зазвичай думаєте про нього як про одну окрему залежність. Але на практиці майже кожен сучасний пакет тягне за собою інші пакети. Саме ці вкладені пакети і називають transitive dependencies або непрямими залежностями.

Інакше кажучи, це залежності ваших залежностей. Ви їх самі не додавали, але ваш код все одно на них покладається.

Простий приклад

Припустимо, ви встановили бібліотеку A. Вона використовує бібліотеку B, а B у свою чергу використовує C.

  • A - пряма залежність вашого проєкту.
  • B і C - transitive dependencies.

Якщо у C з’являється вразливість, проблема може дістатися до вашого застосунку навіть тоді, коли ви про неї ніколи не чули.

Де це видно на практиці

Transitive dependencies важливі в кількох типових сценаріях:

  • package managers, де дерево залежностей росте автоматично;
  • SBOM, коли потрібно показати повний склад компонентів;
  • SCA-сканери, які шукають вразливості не лише у ваших прямих пакетах;
  • CI, коли lockfile фіксує версії, але не скасовує ризиків вкладених компонентів.

Чому це важливо

Початківці часто перевіряють тільки список пакетів, які вони явно встановили. Це дає хибне відчуття контролю. Справжній ризик може ховатися на другому або третьому рівні дерева залежностей.

Саме тому transitive dependency - це не дрібна термінологія, а базова частина розуміння supply chain безпеки.

Типові помилки

  • Дивитися тільки на top-level залежності.
  • Вважати, що lockfile автоматично робить систему безпечною.
  • Ігнорувати зміну версій у вкладених пакетах.
  • Не перевіряти, чи сканер покриває всі рівні дерева.
  • Забувати, що одна популярна бібліотека може підтягувати десятки інших пакетів.

Короткий чекліст

  • Подивіться на повне дерево залежностей, а не лише на верхній рівень.
  • Перевірте, чи ваш SCA-інструмент бачить nested packages.
  • Звірте, чи lockfile дійсно використовується в CI.
  • Оцініть, чи критичні пакети не тягнуть зайвий ланцюг залежностей.
  • Пам’ятайте, що risk review має включати й непрямі залежності.

Підсумок

Transitive dependency - це залежність, яку ви не додавали вручну, але яка все одно впливає на ваш проєкт. Якщо ви хочете реально керувати ризиком, треба дивитися не тільки на те, що встановили ви, а й на те, що підтягує весь ланцюг пакетів.

Короткий чеклист

  • Перевірити повне дерево залежностей, а не тільки верхній рівень.
  • Звірити, чи SCA-інструмент бачить вкладені пакети.
  • Підтвердити, що lockfile використовується в CI.
  • Подивитися, чи критичні пакети не тягнуть зайвий ланцюг залежностей.
  • Включати непрямі залежності в risk review.

Prompt Pack: пояснити transitive dependency без плутанини з прямими залежностями

Поясни transitive dependency для початківця, який уже працює з package manager, але недооцінює вкладені залежності. Потрібно: - почати з простої моделі різниці між прямими та непрямими залежностями; - показати, де це видно в package managers, SBOM і SCA; - пояснити, чому lockfile не скасовує ризик вкладених пакетів; - дати короткий checklist перевірки; - не перевантажувати текст термінами.