Выбор ответа Senior Безопасность цепочки поставки обновлено
Dependency confusion
Вопрос
Внутренний npm-пакет называется billing-utils (без scope), сборка ищет пакеты и во внутреннем, и в публичном реестре. Чем это опасно?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: В публичный реестр выложат billing-utils с большей версией, и сборка возьмёт его. Это и есть dependency confusion: менеджер пакетов выбирает наибольшую версию среди источников.
Варианты ответа
- Внутренний пакет без scope опубликуется в публичный реестр и станет виден всем
- В публичный реестр выложат
billing-utilsс большей версией, и сборка возьмёт егоправильный ответ - npm откажется ставить пакет без scope из внутреннего реестра
- Сборка станет медленнее из-за двойного поиска в реестрах
Разбор
Это и есть dependency confusion: менеджер пакетов выбирает наибольшую версию среди источников. Защита: scoped-имена (@acme/billing-utils) с привязкой scope к внутреннему реестру, единый прокси-реестр с правилами, зарезервированные имена в публичном реестре. Сам внутренний пакет при этом наружу не утекает, npm пакеты без scope ставит.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.