Перейти к содержанию
Версия: 3.3.51 Обновлено: 2026-01-23

Зависимости и безопасность Supply Chain


1. Backend зависимости (Go)

1.1 Прямые зависимости

Пакет Версия Назначение Примечания по безопасности
github.com/golang-jwt/jwt/v4 v4.5.1 JWT токены Официальный, активно поддерживается
github.com/gorilla/mux v1.8.1 HTTP routing Широко используется, стабильный
github.com/jmoiron/sqlx v1.4.0 SQL расширения Обёртка над database/sql
github.com/lib/pq v1.10.9 PostgreSQL драйвер Официальный драйвер
github.com/go-playground/validator/v10 v10.27.0 Валидация ввода Популярный, хорошо протестирован
github.com/shopspring/decimal v1.4.0 Decimal арифметика Финансовая точность
github.com/microcosm-cc/bluemonday v1.0.27 HTML санитизация Защита от XSS
github.com/ethereum/go-ethereum v1.16.8 Ethereum утилиты Валидация адресов
github.com/google/uuid v1.6.0 Генерация UUID Официальный от Google
github.com/joho/godotenv v1.5.1 Загрузка env файлов Только для dev
github.com/sirupsen/logrus v1.9.3 Логирование Широко используется
go.uber.org/zap v1.27.0 Структурированное логирование Высокая производительность
golang.org/x/oauth2 v0.32.0 OAuth клиент Официальный Go
golang.org/x/time v0.14.0 Rate limiting Официальный Go

1.2 Критичные для безопасности пакеты

Обработка JWT

github.com/golang-jwt/jwt/v4 v4.5.1
├── Назначение: Генерация и валидация токенов
├── Алгоритм: HS256 (HMAC-SHA256)
├── CVE: Не известны для v4.5.x
└── Рекомендация: Мониторить обновления

Криптографические операции

golang.org/x/crypto v0.45.0 (indirect)
├── Назначение: Криптографические примитивы
├── Используется: go-ethereum
└── CVE: Проверять golang.org/x/vuln

SQL база данных

github.com/lib/pq v1.10.9
├── Назначение: PostgreSQL драйвер
├── Безопасность: Использует параметризованные запросы
└── CVE: Не известны для v1.10.x

1.3 Косвенные зависимости (связанные с безопасностью)

Пакет Через Назначение
golang.org/x/crypto go-ethereum Криптопримитивы
golang.org/x/net Несколько Сетевые утилиты
google.golang.org/grpc Google APIs gRPC клиент
google.golang.org/protobuf gRPC Protocol buffers

2. Frontend зависимости (Node.js)

2.1 Production зависимости

Пакет Версия Назначение Примечания по безопасности
next ^15.4.5 React framework Поддерживается Vercel
@tanstack/react-query ^5.90.2 Server state Хорошо поддерживается
zod ^3.23.8 Валидация Типобезопасный

2.2 Development зависимости

Пакет Версия Назначение
typescript ^5.6.3 Проверка типов
@playwright/test ^1.55.0 E2E тестирование
eslint ^8.57.0 Linting
jest ^29.7.0 Unit тестирование
tailwindcss ^3.4.17 CSS framework

2.3 Сканирование безопасности

# Запуск npm audit
cd frontend && npm audit

# Ожидается: 0 high/critical уязвимостей

3. Инфраструктурные зависимости

3.1 Runtime

Компонент Версия Назначение
Go 1.24.3 Backend runtime
Node.js 20.x Frontend сборка
PostgreSQL 15 База данных
NGINX Latest Reverse proxy
Docker Latest Контейнеризация

3.2 Внешние сервисы

Сервис Провайдер Сертификация безопасности
Аутентификация Supabase SOC 2 Type II
Custody Fordefi Enterprise grade, multi-sig
Депозиты Crypto2B API security, webhooks
TLS сертификаты Let's Encrypt Бесплатные, автоматические

4. Меры безопасности Supply Chain

4.1 Управление зависимостями

Go (go.mod):

  • Зафиксированные версии через go.sum
  • Верификация checksums
  • Module proxy: proxy.golang.org

Node.js (package-lock.json):

  • Точные версии зафиксированы
  • Integrity hashes
  • Registry: registry.npmjs.org

4.2 Политика обновлений

Приоритет Критерий Срок
Критический Известная CVE с эксплоитом 24 часа
Высокий Security advisory 1 неделя
Средний Минорная уязвимость 1 месяц
Низкий Общее обновление Квартально

4.3 Мониторинг уязвимостей

Инструменты:

  • govulncheck для Go (golang.org/x/vuln)
  • npm audit для Node.js
  • GitHub Dependabot (если включён)

Процесс:

  1. Еженедельные автоматические сканы
  2. Ревью новых CVE в зависимостях
  3. Оценка влияния на Saga
  4. Патч или mitigate

5. SBOM (Software Bill of Materials)

5.1 Генерация Go SBOM

# Генерация SBOM в формате CycloneDX
cd backend
go install github.com/CycloneDX/cyclonedx-gomod/cmd/cyclonedx-gomod@latest
cyclonedx-gomod mod -json > sbom-backend.json

5.2 Генерация Node.js SBOM

# Генерация SBOM
cd frontend
npx @cyclonedx/cyclonedx-npm --output-file sbom-frontend.json

5.3 Сводка содержимого SBOM

Backend (Go):

  • ~50 прямых зависимостей
  • ~150 всего (включая косвенные)
  • Ключевые: JWT, crypto, database, HTTP

Frontend (Node.js):

  • ~30 прямых зависимостей
  • ~800 всего (включая косвенные)
  • Ключевые: React, Next.js, Zod

6. Статус известных уязвимостей

6.1 Текущий статус (Январь 2026)

Критичность Количество Примечания
Критическая 0 Не известно
Высокая 0 Не известно
Средняя 0 Не известно
Низкая 0 Не известно

6.2 Исторические уязвимости

Дата Пакет CVE Решение
2026-01-23 go-ethereum GO-2026-4315 и др. Обновлено v1.14.11 → v1.16.8
2026-01-23 golang.org/x/crypto GO-2025-4135, GO-2025-4134 Обновлено v0.43.0 → v0.45.0
2026-01-23 lodash/lodash-es GHSA-xxjr-mmjv-4gpg Prototype Pollution fix через npm audit

7. Чек-лист безопасности зависимостей

Перед деплоем

  • govulncheck ./... не показывает проблем
  • npm audit не показывает high/critical уязвимостей
  • Все зависимости из доверенных источников
  • Нет зависимостей с известными supply chain компрометациями

Периодический ревью

  • Квартальный ревью обновлений зависимостей
  • Проверка deprecated пакетов
  • Ревью транзитивных зависимостей
  • Верификация целостности пакетов

8. Рекомендации

Немедленные

  1. Включить Dependabot (если используется GitHub)
  2. Добавить govulncheck в CI pipeline
  3. Зафиксировать версию NGINX в Dockerfile

Краткосрочные

  1. Рассмотреть генерацию SBOM в CI/CD
  2. Реализовать приватный module proxy для production
  3. Добавить npm audit в CI pipeline

Долгосрочные

  1. Оценить Sigstore для верификации supply chain
  2. Рассмотреть reproducible builds
  3. Реализовать dependency allow-list

9. Дерево зависимостей (критичные для безопасности пути)

flowchart TB
    subgraph Auth["Путь аутентификации"]
        JWT["golang-jwt/jwt/v4"]
        JWT --> None1["Нет внешних зависимостей<br/>(pure Go)"]
    end

    subgraph DB["Путь базы данных"]
        SQLX["jmoiron/sqlx"]
        SQLX --> STDLIB["database/sql (stdlib)"]
        STDLIB --> PQ["lib/pq"]
        PQ --> None2["Нет внешних зависимостей"]
    end

    subgraph Crypto["Путь криптографии"]
        ETH["go-ethereum"]
        ETH --> XCRYPTO["golang.org/x/crypto"]
        XCRYPTO --> None3["Нет внешних зависимостей<br/>(stdlib)"]
    end

    subgraph HTTP["Путь HTTP"]
        MUX["gorilla/mux"]
        MUX --> None4["Нет внешних зависимостей<br/>(pure Go)"]
    end

Связанные документы