FlawOpen

flawopen.com/Справочник/Dependency Confusion

Dependency Confusion: подмена источника пакета

High Severity CWE-829: Inclusion of Functionality from Untrusted Control Sphere Цепочка поставок ПО
Простое объяснение — Поставщик с похожим названием

Представьте, что команда заказывает компонент по каталогу, где два поставщика используют одинаковое название товара. Если правила не определяют доверенного поставщика, сборка может получить неожиданный компонент. Dependency Confusion — ошибка выбора источника пакета: сборка разрешает имя из реестра или пространства имён, которому организация не собиралась доверять.

Boundary: Имя пакета, пространство имён, конфигурация реестра и происхождение lock-файла
Failure: Резолвер может получить одноимённый пакет из непредусмотренного источника
Impact: В сборку может попасть непроверенный сторонний код; включённые сценарии установки могут выполняться
Remediation: Явные правила namespace-реестр, проверенные lock-файлы и сборки с минимальными правами

Как возникает Dependency Confusion

Поведение зависит от менеджера пакетов и его настроек. Например, документация pip предупреждает: сочетание частного --index-url с публичным --extra-index-url может привести к выбору одноимённого публичного пакета. npm выбирает реестр по scope пакета или настройке по умолчанию; он не всегда сравнивает частную и публичную версии и выбирает большую. Общая причина — неоднозначная политика источников. Если пакет установлен и его сценарии включены, они выполняются с правами задачи сборки.

pip.conf и requirements.txt (неоднозначные источники)Рискованная конфигурация
[global]
index-url = https://packages.example.internal/simple
extra-index-url = https://pypi.org/simple

corp-auth-utils
.npmrc и package.json (явная маршрутизация scope)Укреплённый пример
@corp:registry=https://packages.example.internal/repository/npm/

{
  "dependencies": {
    "@corp/billing-engine": "1.2.0"
  }
}

Возможная цепочка сбоя

Защитные инженерные меры

Связанные темы безопасности и разборы инцидентов:Каталог безопасности →

Источники

См. также Доступ к сокету Docker: риски и защита Инъекция скриптов GitHub Actions: безопасный ввод Cosign GHSA-fx35-mq7g-6g98: обход проверки