Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
safe-chain — Защититесь от вредоносного кода, устанавливаемого через npm, yarn, pnpm, npx, pnpx, pip, uv и poetry, с помощью Aikido Safe Chain. Бесплатно, токены не требуются. | Kitploit
Инструменты/GitHubGitHub/aikidosec/safe-chain
Оборонительные ИнструментыСканеры уязвимостейАнализ вредоносных программDevSecOpsРазведка угрозБезопасность Цепочки Поставок
GitHubaikidosec/safe-chain

safe-chain

Защититесь от вредоносного кода, устанавливаемого через npm, yarn, pnpm, npx, pnpx, pip, uv и poetry, с помощью Aikido Safe Chain. Бесплатно, токены не требуются.

Репозиторий
1.7k1062 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт

Aikido Safe Chain

Aikido Safe Chain

NPM Version NPM Downloads

  • ✅ Блокирует вредоносное ПО на ноутбуках разработчиков и в CI/CD
  • ✅ Поддерживает npm и PyPI — другие менеджеры пакетов скоро появятся
  • ✅ Блокирует пакеты новее 48 часов, не ломая вашу сборку
  • ✅ Без токенов, бесплатно, данные сборки не передаются

Нужна защита помимо npm и PyPI?

Aikido Device Protection расширяет Safe Chain, обеспечивая безопасность пакетов и расширений в большем числе экосистем: npm, PyPI, VS Code, Open VSX — (Cursor, Windsurf, Kiro, Vs Codium, ...), Maven, NuGet, Chrome extensions, Go, Skills.sh AI skills, Ruby, Rust и других.

Получите централизованное управление политиками, рабочие процессы запроса и утверждения, а также видимость всех рабочих станций разработчиков в вашей организации. Работает на том же канале данных Aikido Intel. Разверните его вручную или управляйте им через ваш MDM-инструмент (Jamf, Fleet или Iru).


Aikido Safe Chain поддерживает следующие менеджеры пакетов:

  • 📦 npm
  • 📦 npx
  • 📦 yarn
  • 📦 pnpm
  • 📦 pnpx
  • 📦 rush
  • 📦 rushx
  • 📦 bun
  • 📦 bunx
  • 📦 pip
  • 📦 pip3
  • 📦 uv
  • 📦 poetry
  • 📦 uvx
  • 📦 pipx
  • 📦 pdm

Использование

Aikido Safe Chain demo

Установка

Установить Aikido Safe Chain легко с помощью установочного скрипта.

Unix/Linux/macOS```shell

curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh
&& echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2 /tmp/install-safe-chain.sh" | sha256sum -c -
&& sh /tmp/install-safe-chain.sh
&& rm /tmp/install-safe-chain.sh

root@kitploit:~
### Windows (PowerShell)```powershell
$installer = Join-Path $env:TEMP "install-safe-chain.ps1"
Invoke-WebRequest "https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.ps1" -OutFile $installer -UseBasicParsing
$expectedHash = "5FC22EEF74814BEF6828AA07C0EAEC79598F343F98B94A4ACAB823769AD56DA1"
if ((Get-FileHash $installer -Algorithm SHA256).Hash -ne $expectedHash) {
    Remove-Item $installer -ErrorAction SilentlyContinue
    throw "Checksum verification failed for install-safe-chain.ps1"
}
& $installer
Remove-Item $installer

Приведённые выше команды установки всегда ссылаются на конкретный релиз. Чтобы установить другую версию, замените номер версии на нужный. Все доступные версии находятся на странице релизов.

Целостность загрузки

Скрипты установки обслуживаются через URL релиза с указанием версии (releases/download/1.5.15/...). Релизы GitHub неизменяемы — после публикации артефакта по URL с версией его нельзя изменить или заменить, поэтому загружаемый файл гарантированно будет именно тем, что было выпущено.

Проверка установки

  1. ❗Перезапустите терминал, чтобы начать использовать Aikido Safe Chain.

    • Этот шаг крайне важен, поскольку он гарантирует корректную загрузку псевдонимов оболочки для npm, npx, yarn, pnpm, pnpx, rush, rushx, bun, bunx, pip, pip3, poetry, uv, uvx, pipx и pdm. Если вы не перезапустите терминал, псевдонимы будут недоступны.
  2. Проверьте установку, выполнив команду проверки: ```shell npm safe-chain-verify pnpm safe-chain-verify pip safe-chain-verify uv safe-chain-verify

    Any other supported package manager: {packagemanager} safe-chain-verify

    root@kitploit:~
  • Вывод должен отображать «OK: Safe-chain works!», подтверждая, что Aikido Safe Chain корректно установлен и работает.
  1. (Необязательно) Проверьте блокировку вредоносного ПО, попытавшись установить тестовый пакет:

    Для JavaScript/Node.js: ```shell npm install safe-chain-test

    root@kitploit:~

Для Python: ```shell pip3 install safe-chain-pi-test

root@kitploit:~
- В выводе должно быть видно, что Aikido Safe Chain блокирует установку этих тестовых пакетов, так как они помечены как вредоносные.

При выполнении команд `npm`, `npx`, `yarn`, `pnpm`, `pnpx`, `rush`, `rushx`, `bun`, `bunx`, `pip`, `pip3`, `uv`, `uvx`, `poetry`, `pipx` и `pdm` Aikido Safe Chain автоматически проверяет пакеты, которые вы пытаетесь установить, на наличие вредоносного ПО. Он также перехватывает вызовы модулей Python для pip, когда это доступно (например, `python -m pip install ...`, `python3 -m pip download ...`). Если вредоносное ПО обнаружено, он предложит вам выйти из команды.

Вы можете проверить установленную версию, выполнив:```shell
safe-chain --version

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

Блокировка вредоносных программ

Aikido Safe Chain работает, запуская легковесный прокси-сервер, который перехватывает загрузки пакетов из реестра npm и PyPI. Когда вы выполняете команды npm, npx, yarn, pnpm, pnpx, rush, rushx, bun, bunx, pip, pip3, uv, uvx, poetry, pipx или pdm, все загрузки пакетов маршрутизируются через этот локальный прокси, который проверяет пакеты в реальном времени по Aikido Intel - Open Sources Threat Intelligence. Если в каком-либо пакете (включая глубокие зависимости) обнаружено вредоносное ПО, прокси блокирует загрузку до того, как вредоносный код достигнет вашей машины.

Минимальный возраст пакета

Safe Chain применяет проверки минимального возраста пакета для поддерживаемых экосистем.

Текущие меры контроля различаются в зависимости от экосистемы:

  • менеджеры пакетов на основе npm:
    • во время обычного разрешения пакетов Safe Chain скрывает версии, которые новее настроенного минимального возраста, из метаданных пакета, возвращаемых реестром
    • для прямых запросов на загрузку пакетов, которые обходят этот поток метаданных, Safe Chain может заблокировать сам запрос, используя кэшированный список недавно выпущенных пакетов
  • менеджеры пакетов Python:
    • во время разрешения пакетов Safe Chain скрывает слишком свежие файлы и релизы из ответов метаданных PyPI
    • для прямых запросов на загрузку пакетов, которые обходят этот поток метаданных, Safe Chain может заблокировать сам запрос, используя кэшированный список недавно выпущенных пакетов

По умолчанию минимальный возраст пакета составляет 48 часов. Это обеспечивает дополнительный уровень безопасности в критический период, когда недавно опубликованные пакеты наиболее уязвимы для содержания необнаруженных угроз. Вы можете настроить этот порог или полностью обойти эту защиту — см. раздел Конфигурация минимального возраста пакета ниже.

Интеграция с оболочкой

Aikido Safe Chain интегрируется с вашей оболочкой, чтобы обеспечить бесшовный опыт при использовании npm, npx, yarn, pnpm, pnpx, rush, rushx, bun, bunx и менеджеров пакетов Python (pip, uv, uvx, poetry, pipx, pdm). Он настраивает алиасы для этих команд, чтобы они были обёрнуты командами Aikido Safe Chain, которые управляют прокси-сервером перед выполнением исходных команд. В настоящее время мы поддерживаем:

  • ✅ Bash
  • ✅ Zsh
  • ✅ Fish
  • ✅ PowerShell
  • ✅ PowerShell Core

Дополнительную информацию об интеграции с оболочкой можно найти в документации по интеграции с оболочкой.

Удаление

Чтобы удалить Aikido Safe Chain, используйте наш однострочный деинсталлятор:

Unix/Linux/macOS```shell

curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/uninstall-safe-chain.sh | sh

root@kitploit:~
### Windows (PowerShell)```powershell
iex (iwr "https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/uninstall-safe-chain.ps1" -UseBasicParsing)

❗Перезапустите терминал после удаления, чтобы убедиться, что все алиасы удалены.

Конфигурация

Логирование

Вы можете управлять выводом Aikido Safe Chain с помощью флага --safe-chain-logging или переменной окружения SAFE_CHAIN_LOGGING.

Параметры конфигурации

Вы можете задать уровень логирования через несколько источников (в порядке приоритета):

  1. Аргумент CLI (наивысший приоритет):

    • --safe-chain-logging=silent — Подавляет весь вывод Aikido Safe Chain, кроме случаев блокировки вредоносного ПО. Вывод менеджера пакетов записывается в stdout как обычно, а Safe Chain выводит только короткое сообщение, если он заблокировал вредоносное ПО и завершает процесс.

      root@kitploit:~
      npm install express --safe-chain-logging=silent
      
    • --safe-chain-logging=verbose — Включает подробный диагностический вывод Aikido Safe Chain. Полезно для устранения неполадок или понимания того, что Safe Chain делает за кулисами.

      root@kitploit:~
      npm install express --safe-chain-logging=verbose
      
  2. Переменная окружения: ```shell export SAFE_CHAIN_LOGGING=verbose npm install express

    root@kitploit:~

Допустимые значения: silent, normal, verbose

Это полезно для установки уровня журналирования по умолчанию для всех команд менеджера пакетов в вашей терминальной сессии или в окружении CI/CD.

Журналирование в файл

Вы можете дублировать вывод Aikido Safe Chain в файл журнала с помощью флага --safe-chain-log-file или переменной окружения SAFE_CHAIN_LOG_FILE. Журналирование в файл по умолчанию отключено и включается, когда задан путь. Формат файла (--safe-chain-log-file-format) и уровень подробности (--safe-chain-log-file-verbosity) управляются независимо от вывода в терминал.

Параметры конфигурации

Устанавливаются любым из следующих способов (в порядке приоритета):

  1. Аргумент CLI (наивысший приоритет): ```shell npm install express
    --safe-chain-log-file=~/safe-chain.log
    --safe-chain-log-file-format=plain
    --safe-chain-log-file-verbosity=normal
    root@kitploit:~
  2. Переменная окружения: ```shell export SAFE_CHAIN_LOG_FILE=~/safe-chain.log export SAFE_CHAIN_LOG_FILE_FORMAT=plain export SAFE_CHAIN_LOG_FILE_VERBOSITY=normal
    root@kitploit:~
  3. Файл конфигурации (~/.safe-chain/config.json): ```json { "logFile": "~/safe-chain.log", "logFileFormat": "plain", "logFileVerbosity": "normal" }
    root@kitploit:~

logFileFormat — json (по умолчанию) или plain.

logFileVerbosity — silent, normal или verbose (по умолчанию). Независимо от --safe-chain-logging.

Минимальный возраст пакета

Вы можете настроить, как долго пакеты должны существовать, прежде чем Safe Chain разрешит их установку. По умолчанию пакеты должны быть старше 48 часов, прежде чем их можно будет установить.

Для менеджеров пакетов на основе npm эта проверка в настоящее время имеет два режима применения:

  • Safe Chain подавляет слишком новые версии из метаданных пакетов во время обычного разрешения зависимостей.
  • Safe Chain блокирует прямые запросы на загрузку пакетов, когда они совпадают с кэшированным списком недавно выпущенных пакетов.

Для менеджеров пакетов Python эта проверка в настоящее время имеет два режима применения:

  • Safe Chain подавляет слишком новые файлы и релизы из метаданных PyPI во время разрешения зависимостей.
  • Safe Chain блокирует прямые запросы на загрузку пакетов, когда они совпадают с кэшированным списком недавно выпущенных пакетов.

Параметры конфигурации

Вы можете задать минимальный возраст пакета через несколько источников (в порядке приоритета):

  1. Аргумент CLI (наивысший приоритет): ```shell npm install express --safe-chain-minimum-package-age-hours=48
    root@kitploit:~
  2. Переменная окружения: ```shell export SAFE_CHAIN_MINIMUM_PACKAGE_AGE_HOURS=48 npm install express
    root@kitploit:~
  3. Файл конфигурации (~/.safe-chain/config.json): ```json { "minimumPackageAgeHours": 48 }
    root@kitploit:~

Исключение пакетов

Исключите доверенные пакеты из фильтрации по минимальному возрасту с помощью переменной окружения или файла конфигурации (оба объединяются). Используйте @scope/*, чтобы доверять всем пакетам из организации:```shell export SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS="@aikidosec/*"

root@kitploit:~
<empty>```json
{
  "npm": {
    "minimumPackageAgeExclusions": ["@aikidosec/*"]
  },
  "pip": {
    "minimumPackageAgeExclusions": ["requests"]
  }
}

Пользовательские реестры

Настройте Safe Chain для сканирования пакетов из пользовательских или частных реестров.

Поддерживаемые экосистемы:

  • Node.js
  • Python

Параметры конфигурации

Вы можете задать пользовательские реестры через переменную окружения или файл конфигурации. Оба источника объединяются.

  1. Переменная окружения (через запятую): ```shell export SAFE_CHAIN_NPM_CUSTOM_REGISTRIES="npm.company.com,registry.internal.net" export SAFE_CHAIN_PIP_CUSTOM_REGISTRIES="pip.company.com,registry.internal.net"
    root@kitploit:~
  2. Файл конфигурации (~/.safe-chain/config.json): ```json { "npm": { "customRegistries": ["npm.company.com", "registry.internal.net"] }, "pip": { "customRegistries": ["pip.company.com", "registry.internal.net"] } }
    root@kitploit:~

Файл конфигурации PYPI

Если вы полагаетесь на файл pip.conf для конфигурации pip, вы должны явно указать на него pip через переменную окружения PIP_CONFIG_FILE, чтобы Safe Chain мог его объединить.

Safe Chain запускает pip за своим MITM-прокси и записывает временный файл конфигурации pip для внедрения своего сертификата и настроек прокси. Когда задан PIP_CONFIG_FILE, Safe Chain объединяет свои настройки с копией вашего файла (ваш исходный файл никогда не изменяется), поэтому ваши index-url, учётные данные и другие параметры сохраняются. Когда PIP_CONFIG_FILE не задан, пользовательская конфигурация pip (например, ~/.config/pip/pip.conf) может быть переопределена временным файлом Safe Chain, и ваши настройки не будут учтены.

Базовый URL списка вредоносных программ

Настройте Safe Chain для загрузки баз данных вредоносных программ и списков новых пакетов с пользовательского зеркального URL. Это позволяет размещать собственную копию базы данных вредоносных программ Aikido.

Параметры конфигурации

Вы можете задать базовый URL списка вредоносных программ через несколько источников (в порядке приоритета):

  1. Аргумент CLI (наивысший приоритет): ```shell npm install express --safe-chain-malware-list-base-url=https://your-mirror.com
    root@kitploit:~
  2. Переменная окружения: ```shell export SAFE_CHAIN_MALWARE_LIST_BASE_URL=https://your-mirror.com npm install express
    root@kitploit:~
  3. Файл конфигурации (~/.safe-chain/config.json): ```json { "malwareListBaseUrl": "https://your-mirror.com" }
    root@kitploit:~

Базовый URL должен указывать на сервер, зеркалирующий структуру https://malware-list.aikido.dev/, включая следующие пути:

  • /malware_predictions.json (база данных вредоносных программ экосистемы JavaScript)
  • /malware_pypi.json (база данных вредоносных программ экосистемы Python)
  • /releases/npm.json (список новых пакетов JavaScript)
  • /releases/pypi.json (список новых пакетов Python)

Файл конфигурации проекта

Помимо файла конфигурации в домашнем каталоге (~/.safe-chain/config.json), Safe Chain поддерживает файл конфигурации проекта, чтобы настройки можно было хранить в репозитории и использовать совместно в команде, а не настраивать на каждой машине отдельно.

Добавьте секцию safe-chain: в файл .aikido в корне вашего репозитория (этот же файл используется другими инструментами Aikido; Safe Chain читает только собственную секцию safe-chain: и игнорирует остальное). Когда она найдена, её настройки объединяются поверх вашего файла конфигурации в домашнем каталоге: значения, заданные в конфигурации проекта, имеют приоритет, а массивы (например, customRegistries) объединяются из обоих файлов, а не заменяют друг друга.

Из файла конфигурации проекта можно задать только следующие настройки:```yaml safe-chain: minimumPackageAgeHours: 48 npm: customRegistries: - npm.company.com minimumPackageAgeExclusions: - "@aikidosec/*" pip: customRegistries: - pip.company.com minimumPackageAgeExclusions: - requests

root@kitploit:~
Параметры, такие как `scanTimeout`, `malwareListBaseUrl` и опции `logFile*`, не могут быть заданы из файла конфигурации проекта — они могут быть указаны только в конфигурации из домашнего каталога, через аргументы CLI или переменные окружения.

## Пользовательский каталог установки

По умолчанию Safe Chain устанавливает себя в `~/.safe-chain`. Вы можете изменить это, передав установщику явный каталог установки. Это полезно для системных установок (например, внутри Docker-образа) или когда нужно избежать конфликтов с другими инструментами.

При заданном каталоге все данные Safe Chain (бинарные файлы, shims, скрипты, конфигурация) размещаются в этом пользовательском каталоге вместо `~/.safe-chain`.

### Unix/Linux/macOS```shell
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh \
  && echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2  /tmp/install-safe-chain.sh" | sha256sum -c - \
  && sh /tmp/install-safe-chain.sh --install-dir /usr/local/.safe-chain \
  && rm /tmp/install-safe-chain.sh

Windows```powershell

$installer = Join-Path $env:TEMP "install-safe-chain.ps1" Invoke-WebRequest "https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.ps1" -OutFile $installer -UseBasicParsing $expectedHash = "5FC22EEF74814BEF6828AA07C0EAEC79598F343F98B94A4ACAB823769AD56DA1" if ((Get-FileHash $installer -Algorithm SHA256).Hash -ne $expectedHash) { Remove-Item $installer -ErrorAction SilentlyContinue throw "Checksum verification failed for install-safe-chain.ps1" } & $installer -InstallDir 'C:\ProgramData\safe-chain' Remove-Item $installer

root@kitploit:~
# Использование в CI/CD

Вы можете защитить свои конвейеры CI/CD от вредоносных пакетов, интегрировав Aikido Safe Chain в процесс сборки. Это гарантирует, что все пакеты, устанавливаемые во время автоматических сборок, проверяются на вредоносное ПО перед установкой.

## Установка для CI/CD

Используйте флаг `--ci`, чтобы автоматически настроить Aikido Safe Chain для сред CI/CD. Это создаёт исполняемые шимы в PATH вместо алиасов оболочки.

### Unix/Linux/macOS (GitHub Actions, Azure Pipelines и т. д.)```shell
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh \
  && echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2  /tmp/install-safe-chain.sh" | sha256sum -c - \
  && sh /tmp/install-safe-chain.sh --ci \
  && rm /tmp/install-safe-chain.sh

Windows (Azure Pipelines и т. д.)```powershell

$installer = Join-Path $env:TEMP "install-safe-chain.ps1" Invoke-WebRequest "https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.ps1" -OutFile $installer -UseBasicParsing $expectedHash = "5FC22EEF74814BEF6828AA07C0EAEC79598F343F98B94A4ACAB823769AD56DA1" if ((Get-FileHash $installer -Algorithm SHA256).Hash -ne $expectedHash) { Remove-Item $installer -ErrorAction SilentlyContinue throw "Checksum verification failed for install-safe-chain.ps1" } & $installer -ci Remove-Item $installer

root@kitploit:~
## Поддерживаемые платформы

- ✅ **GitHub Actions**
- ✅ **Azure Pipelines**
- ✅ **CircleCI**
- ✅ **Jenkins**
- ✅ **Bitbucket Pipelines**
- ✅ **GitLab Pipelines**

## Пример GitHub Actions```yaml
- name: Setup Node.js
  uses: actions/setup-node@v4
  with:
    node-version: "22"
    cache: "npm"

- name: Install safe-chain
  run: |
    curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh
    echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2  /tmp/install-safe-chain.sh" | sha256sum -c -
    sh /tmp/install-safe-chain.sh --ci
    rm /tmp/install-safe-chain.sh

- name: Install dependencies
  run: npm ci

Пример Azure DevOps```yaml

  • task: NodeTool@0 inputs: versionSpec: "22.x" displayName: "Install Node.js"

  • script: | curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2 /tmp/install-safe-chain.sh" | sha256sum -c - sh /tmp/install-safe-chain.sh --ci rm /tmp/install-safe-chain.sh displayName: "Install safe-chain"

  • script: npm ci displayName: "Install dependencies"

root@kitploit:~
## CircleCI Пример```yaml
version: 2.1
jobs:
  build:
    docker:
      - image: cimg/node:lts
    steps:
      - checkout
      - run: |
          curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh
          echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2  /tmp/install-safe-chain.sh" | sha256sum -c -
          sh /tmp/install-safe-chain.sh --ci
          rm /tmp/install-safe-chain.sh
      - run: npm ci
workflows:
  build_and_test:
    jobs:
      - build

Jenkins Example

Примечание: предполагается, что Node.js и npm установлены на агенте Jenkins.```groovy pipeline { agent any

environment { // Jenkins does not automatically persist PATH updates from setup-ci, // so add the shims + binary directory explicitly for all stages. // If you installed into a custom directory, replace ~/.safe-chain with that path here. PATH = "${env.HOME}/.safe-chain/shims:${env.HOME}/.safe-chain/bin:${env.PATH}" }

stages { stage('Install safe-chain') { steps { sh ''' set -euo pipefail

root@kitploit:~
      # Install Safe Chain for CI
      curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh
      echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2  /tmp/install-safe-chain.sh" | sha256sum -c -
      sh /tmp/install-safe-chain.sh --ci
      rm /tmp/install-safe-chain.sh
    '''
  }
}

stage('Install project dependencies etc...') {
  steps {
    sh '''
      set -euo pipefail
      npm ci
    '''
  }
}

} }

root@kitploit:~
## Пример Bitbucket Pipelines```yaml
image: node:22

steps:
  - step:
      name: Install
      script:
        - |
          curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh
          echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2  /tmp/install-safe-chain.sh" | sha256sum -c -
          sh /tmp/install-safe-chain.sh --ci
          rm /tmp/install-safe-chain.sh
        - export PATH=~/.safe-chain/shims:~/.safe-chain/bin:$PATH
        - npm ci

После настройки все последующие команды менеджера пакетов в вашем конвейере CI будут автоматически защищены обнаружением вредоносных программ Aikido Safe Chain.

Пример пайплайнов GitLab

Чтобы добавить safe-chain в пайплайны GitLab, необходимо установить его в образ, на котором выполняется пайплайн. Это можно сделать следующим образом:

  1. Определите dockerfile для запуска вашей сборки ```dockerfile FROM node:lts

    Install safe-chain

    RUN curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh
    && echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2 /tmp/install-safe-chain.sh" | sha256sum -c -
    && sh /tmp/install-safe-chain.sh --ci
    && rm /tmp/install-safe-chain.sh

    Add safe-chain to PATH (update paths if you used a custom install dir)

    ENV PATH="/root/.safe-chain/shims:/root/.safe-chain/bin:${PATH}"

    root@kitploit:~
  2. Соберите Docker-образ в вашем CI-пайплайне ```yaml build-image: stage: build-image image: docker:latest services: - docker:dind script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker build -t $CI_REGISTRY_IMAGE:latest . - docker push $CI_REGISTRY_IMAGE:latest

    root@kitploit:~
  3. Используйте образ в вашем пайплайне: ```yaml npm-ci: stage: install image: $CI_REGISTRY_IMAGE:latest script: - npm ci

    root@kitploit:~

Полный конвейер для этого примера выглядит следующим образом:```yaml stages:

  • build-image
  • install

build-image: stage: build-image image: docker:latest services: - docker:dind script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker build -t $CI_REGISTRY_IMAGE:latest . - docker push $CI_REGISTRY_IMAGE:latest

npm-ci: stage: install image: $CI_REGISTRY_IMAGE:latest script: - npm ci

root@kitploit:~
# Устранение неполадок

Возникли проблемы? Обратитесь к [Руководству по устранению неполадок](https://github.com/aikidosec/safe-chain/blob/HEAD/docs/troubleshooting.md) за помощью с распространёнными проблемами.

# Сообщить о проблемах

Если вы столкнулись с проблемами:

1. Посетите [GitHub Issues](https://github.com/AikidoSec/safe-chain/issues)
2. Включите:
   * Операционную систему и версию
   * Тип и версию оболочки
   * Вывод команды `safe-chain --version`
   * Вывод команд проверки
   * Подробные журналы (verbose-логи) неисправной команды (добавьте аргумент `--safe-chain-logging=verbose`)
Скачать инструмент