Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
safe-chain — Aikido Safe Chain を使用して、npm、yarn、pnpm、npx、pnpx、pip、uv、poetry を介してインストールされた悪意のあるコードから保護します。無料で使用でき、トークンは不要です。 | Kitploit
ツール/GitHubGitHub/aikidosec/safe-chain
防御ツール脆弱性スキャナーマルウェア分析DevSecOps脅威インテリジェンスサプライチェーンセキュリティ
GitHubaikidosec/safe-chain

safe-chain

Aikido Safe Chain を使用して、npm、yarn、pnpm、npx、pnpx、pip、uv、poetry を介してインストールされた悪意のあるコードから保護します。無料で使用でき、トークンは不要です。

リポジトリを見る
1.7k1061日前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拡張機能, Go, Skills.sh AIスキル, Ruby, Rust, など。

一元化されたポリシー管理、リクエストと承認のワークフロー、そして組織内のすべての開発者ワークステーションにわたる可視性を実現します。同じAikidoインテルフィードを利用しています。手動でデプロイするか、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 デモ

インストール

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
  • 出力には、Aikido Safe Chain がこれらのテストパッケージをマルウェアとしてフラグし、インストールをブロックしていることが示されるはずです。

npm、npx、yarn、pnpm、pnpx、rush、rushx、bun、bunx、pip、pip3、uv、uvx、poetry、pipx、pdm コマンドを実行すると、Aikido Safe Chain はインストールしようとしているパッケージにマルウェアがないか自動的にチェックします。また、利用可能な場合には pip の Python モジュール呼び出し(例: 、)もインターセプトします。マルウェアが検出された場合は、コマンドを終了するように促します。

インストール済みのバージョンは、次のコマンドで確認できます:```shell safe-chain --version

root@kitploit:~
## How it works

### Malware Blocking

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](https://intel.aikido.dev/?tab=malware)** に対してパッケージをリアルタイムで検証します。いずれかのパッケージ(深い依存関係を含む)でマルウェアが検出された場合、プロキシは悪意のあるコードがマシンに到達する前にダウンロードをブロックします。

### Minimum package age

Safe Chain は、対応するエコシステムに対して最小パッケージ期間のチェックを適用します。

現在の適用方法はエコシステムによって異なります:

- npmベースのパッケージマネージャー:
  - 通常のパッケージ解決中、Safe Chain はレジストリから返されるパッケージメタデータから、設定された最小期間より新しいバージョンを除外します
  - そのメタデータフローを迂回する直接パッケージダウンロードリクエストに対しては、Safe Chain は新しく公開されたパッケージのキャッシュリストを使用してリクエスト自体をブロックできます
- Pythonパッケージマネージャー:
  - パッケージ解決中、Safe Chain はPyPIメタデータ応答から、公開されて間もないファイルとリリースを除外します
  - そのメタデータフローを迂回する直接パッケージダウンロードリクエストに対しては、Safe Chain は新しく公開されたパッケージのキャッシュリストを使用してリクエスト自体をブロックできます

デフォルトでは、最小パッケージ期間は48時間です。これは、新しく公開されたパッケージが未検出の脅威を含む可能性が最も高い重要な期間に、追加のセキュリティ層を提供します。このしきい値を設定したり、この保護を完全に無効にしたりできます。詳細は、下記の [Minimum Package Age Configuration](#minimum-package-age) セクションを参照してください。

### Shell Integration

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**

シェル統合の詳細については、[shell integration documentation](https://github.com/AikidoSec/safe-chain/blob/main/docs/shell-integration.md)を参照してください。

## Uninstallation

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

Windows (PowerShell)```powershell

iex (iwr "https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/uninstall-safe-chain.ps1" -UseBasicParsing)

root@kitploit:~
**❗アンインストール後、ターミナルを再起動してください** すべてのエイリアスが確実に削除されるように。

# 設定

## ロギング

Aikido Safe Chain の出力は、`--safe-chain-logging` フラグまたは `SAFE_CHAIN_LOGGING` 環境変数を使用して制御できます。

### 設定オプション

ロギングレベルは複数のソースから設定できます(優先順位の高い順):

1. **CLI 引数**(最優先):
   - `--safe-chain-logging=silent` - マルウェアがブロックされた場合を除き、Aikido Safe Chain のすべての出力を抑制します。パッケージマネージャーの出力は通常どおり stdout に書き込まれ、Safe Chain はマルウェアをブロックしてプロセスを終了させた場合にのみ短いメッセージを書き込みます。

     ```shell
     npm install express --safe-chain-logging=silent
     ```

   - `--safe-chain-logging=verbose` - Aikido Safe Chain の詳細な診断出力を有効にします。問題のトラブルシューティングや、Safe Chain が舞台裏で何をしているかを理解するのに役立ちます。

     ```shell
     npm install express --safe-chain-logging=verbose
     ```

2. **環境変数**:   ```shell
   export SAFE_CHAIN_LOGGING=verbose
   npm install express

Valid values: silent, normal, verbose

これは、ターミナルセッションまたはCI/CD環境内のすべてのパッケージマネージャーコマンドにデフォルトのログレベルを設定する場合に便利です。

ファイルロギング

--safe-chain-log-file フラグまたは SAFE_CHAIN_LOG_FILE 環境変数を使用して、Aikido Safe Chain の出力をログファイルにミラーリングできます。ファイルロギングはデフォルトでは無効で、パスが設定されると有効になります。ファイル形式(--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 (default) or plain.

logFileVerbosity — silent, normal, or verbose (default). Independent from --safe-chain-logging.

最小パッケージ経過時間

Safe Chain がパッケージのインストールを許可するまでに、パッケージが存在していなければならない期間を設定できます。デフォルトでは、パッケージは 48 時間以上経過している必要があります。

npm ベースのパッケージマネージャーでは、このチェックには現在 2 つの適用モードがあります:

  • Safe Chain は、通常の依存関係解決中にパッケージメタデータから新しすぎるバージョンを抑制します。
  • Safe Chain は、キャッシュされた新規リリースパッケージのリストと一致する直接のパッケージダウンロード要求をブロックします。

Python パッケージマネージャーでは、このチェックには現在 2 つの適用モードがあります:

  • 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:~
### チャネルとトラフィックの暗号化なし (OPSEC)

> ターゲットの暗号化されていない通信を見逃さないでください。

我々は傍受して、C2のアドレスを特定し、資格情報やその他多くの詳細を入手するチャンスがあります。```json
{
  "npm": {
    "minimumPackageAgeExclusions": ["@aikidosec/*"]
  },
  "pip": {
    "minimumPackageAgeExclusions": ["requests"]
  }
}

Custom Registries

カスタムまたはプライベートレジストリからパッケージをスキャンするように 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 の設定に pip.conf ファイルを使用している場合は、Safe Chain がそれをマージできるよう、PIP_CONFIG_FILE 環境変数で pip に明示的に指定する必要があります。

Safe Chain は MITM プロキシの背後で pip を実行し、証明書とプロキシ設定を注入するための一時的な pip 設定ファイルを作成します。PIP_CONFIG_FILE が設定されている場合、Safe Chain は設定をファイルのコピーにマージします(元のファイルは変更されません)。そのため、index-url、認証情報、その他のオプションは保持されます。PIP_CONFIG_FILE が設定されていない場合、pip のユーザーレベルの設定(例: ~/.config/pip/pip.conf)が Safe Chain の一時ファイルによって上書きされる可能性があり、設定が反映されません。

マルウェアリストのベース URL

カスタムミラー URL からマルウェアデータベースと新しいパッケージリストを取得するように Safe Chain を設定します。これにより、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 はプロジェクト設定ファイルをサポートしています。これにより、設定をリポジトリにチェックインしてチーム全体で共有でき、マシンごとに設定する必要がなくなります。

リポジトリのルートにある .aikido ファイルに safe-chain: セクションを追加してください(他の 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:~
# Usage in CI/CD

CI/CD パイプラインを悪意のあるパッケージから保護するには、ビルドプロセスに Aikido Safe Chain を統合します。これにより、自動ビルド中にインストールされるすべてのパッケージが、インストール前にマルウェアの有無をチェックされるようになります。

## Installation for CI/CD

`--ci` フラグを使用すると、CI/CD 環境向けに Aikido Safe Chain が自動的に設定されます。これにより、シェルエイリアスではなく、PATH 内に実行可能な shim がセットアップされます。

### 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:~
## Supported Platforms

- ✅ **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 の例

注: 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

After setup, all subsequent package manager commands in your CI pipeline will automatically be protected by Aikido Safe Chain's malware detection.

GitLab Pipelinesの例

GitLabパイプラインにsafe-chainを追加するには、パイプラインを実行するイメージにインストールする必要があります。これは次のようにして行えます。

  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. CIパイプラインでDockerイメージをビルドする ```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` の出力
   * 検証コマンドからの出力
   * 失敗したコマンドの詳細ログ (`--safe-chain-logging=verbose` 引数を追加)
ツールをダウンロード
python -m pip install ...
python3 -m pip download ...