Skip to content

Как аудитить supply chain npm

Коротко:

npm supply chain 2026 — одна из top-3 attack surfaces. 2024 xz backdoor + 2023 event-stream + 2024 shai-hulud показали: любой из 1000+ transitive deps может быть hijacked. Defense: (1) npm audit + Dependabot (базовый, free), (2) Socket.dev ($15/мес, runtime behavior analysis), (3) Snyk ($0+), (4) pnpm + lockfile strict, (5) npm package-lock integrity hashing, (6) --ignore-scripts для reject postinstall.

Ниже: пошаговая инструкция, рабочие примеры, типичные ошибки, FAQ.

Попробовать бесплатно →

Пошаговая настройка

  1. npm audit в CI — fails build при > high severity
  2. Enable Dependabot в GitHub (settings → Security)
  3. Install Socket GitHub App для PR-level anomaly detection
  4. pnpm или bun instead of npm — deterministic install, shared store
  5. npm config set ignore-scripts true глобально + review per-package
  6. Pin exact versions (no ^): "react": "18.2.0" vs "^18.2.0"
  7. Monitor published versions: socket.dev CLI alert на suspicious upgrades

Рабочие примеры

СценарийКонфиг
npm audit в CI# .github/workflows/audit.yml - run: npm ci - run: npm audit --audit-level=high # Fails build при found high+ CVE
pnpm strict mode# .npmrc strict-peer-dependencies=true save-exact=true auto-install-peers=false # package.json "packageManager": "pnpm@8.15.0"
Socket.dev CI# Via npm scripts "scripts": { "preinstall": "socket preinstall" } # Blocks install если detected supply-chain risk
Ignore postinstall scripts# Global $ npm config set ignore-scripts true # Per install $ npm install --ignore-scripts # For specific trusted packages — whitelist $ npm rebuild sharp
Lockfile integrity (yarn)# .yarnrc.yml enableGlobalCache: true checksumBehavior: update # Lockfile хэши rejected если corrupted

Типичные ошибки

  • npm audit — только known CVEs, не новая атака. Socket.dev для behavior-based detection
  • Transitive deps ошибки — parent package не release fix. npm overrides в package.json — force подключить
  • Minified code / obfuscated postinstall — скрывают malicious actions. Ignore-scripts default safer
  • Dev-only deps всё равно installed в CI если NODE_ENV≠production. npm ci --production или prune
  • shrinkwrap / lock сохраняется committed — но если attacker push lockfile → CI installs malicious exact-version
ЗаголовкиCSP, HSTS, X-Frame-Options и др.
SSL/TLSШифрование и сертификат
КонфигурацияСерверные настройки и утечки
Оценка A-FОбщий балл безопасности

Почему нам доверяют

OWASP
рекомендации
15+
заголовков безопасности
<2с
результат
A–F
оценка безопасности

Как это работает

1

Введите URL сайта

2

Анализ заголовков безопасности

3

Получите оценку A–F

Что проверяет анализ безопасности?

Инструмент проверяет HTTP-заголовки безопасности, конфигурацию SSL/TLS, утечки серверной информации и защиту от распространённых атак (XSS, clickjacking, MIMEsniffing). Оценка от A до F показывает общий уровень защиты.

Анализ заголовков

Проверка Content-Security-Policy, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy и других.

Проверка SSL

Версия TLS, срок сертификата, цепочка доверия, поддержка HSTS.

Обнаружение утечек

Поиск раскрытых серверных версий, debug-режимов, открытых конфигов и директорий.

Отчёт с рекомендациями

Детальный отчёт с объяснением каждой проблемы и конкретными шагами для исправления.

Кому это нужно

Специалисты по безопасности

аудит HTTP-заголовков

DevOps

проверка конфигурации

Разработчики

CSP и HSTS настройка

Аудиторы

соответствие стандартам

Частые ошибки

Нет Content-Security-PolicyCSP — главная защита от XSS. Без него инъекция скриптов значительно проще.
Нет заголовка HSTSБез HSTS возможна downgrade-атака с HTTPS на HTTP. Включите Strict-Transport-Security.
Server header раскрывает версиюServer: Apache/2.4.52 помогает атакующим подобрать эксплойт. Скройте версию.
X-Frame-Options не установленСайт можно встроить в iframe для clickjacking-атаки. Установите DENY или SAMEORIGIN.
Нет X-Content-Type-OptionsБез nosniff браузер может интерпретировать файлы неправильно (MIME sniffing).

Лучшие практики

Начните с базовых заголовковМинимум: HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy. Займёт 5 минут.
Внедрите CSP постепенноНачните с Content-Security-Policy-Report-Only, мониторьте нарушения, затем включите.
Скройте серверные заголовкиУдалите Server, X-Powered-By, X-AspNet-Version из ответов.
Настройте Permissions-PolicyОграничьте доступ к камере, микрофону, геолокации — только то, что реально используется.
Проверяйте после каждого деплояЗаголовки безопасности могут быть перезаписаны при обновлении конфигурации сервера.

Получите больше с бесплатным аккаунтом

История security-проверок и мониторинг HTTP-заголовков безопасности.

Зарегистрироваться (FREE)

Больше по теме

Часто задаваемые вопросы

Dependabot или Renovate?

Dependabot: GitHub-native, simpler. Renovate: более flexible, works on GitLab/Bitbucket, configurable schedules. Для solo projects — Dependabot. Для teams с complex policies — Renovate.

Socket.dev free?

Free tier: 5 repos. $15/dev/мес paid. Analyzes package behavior (network calls, file ops, eval usage) — detects novel supply-chain attacks.

xz 2024 incident?

xz-utils CVE-2024-3094 — backdoor через social engineering 2-летний maintainer takeover. Would have compromised OpenSSH on major Linux distros. Detected by luck.

npm vs pnpm vs bun?

pnpm: content-addressable, fast, deterministic. bun: Rust backend, 10x faster. Для audit — pnpm/bun показывают actual installed graph точнее npm.