
safe-chain v1.5.16
Aikido Safe Chain を使用して、npm、yarn、pnpm、npx、pnpx、pip、uv、poetry を介してインストールされた悪意のあるコードから保護します。無料で使用でき、トークンは不要です。
Aikido Safe Chain
- ✅ 開発者のラップトップと 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 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 のインストールは、インストールスクリプトを使用して簡単に行えます。
Unix/Linux/macOS
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.24/install-safe-chain.sh -o /tmp/install-safe-chain.sh \
&& echo "99eb124a3404b3ac99e8b65406b87c4ee049c1d6c17757a7d04991ae60d16e69 /tmp/install-safe-chain.sh" | sha256sum -c - \
&& sh /tmp/install-safe-chain.sh \
&& 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.24/install-safe-chain.ps1" -OutFile $installer -UseBasicParsing
$expectedHash = "8AE6B00E57F96637AAA4AAB136A9FC7F24855DE15DDB5071BC615F533C996067"
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.24/...)から配信されます。GitHubのリリースはイミュータブルです — バージョン付きURLで公開されたアーティファクトは一度公開されると変更や置き換えができないため、ダウンロードするファイルはリリースされたものと正確に同一であることが保証されます。
インストールの確認
-
❗ターミナルを再起動して、Aikido Safe Chainの使用を開始します。
- この手順は、npm、npx、yarn、pnpm、pnpx、rush、rushx、bun、bunx、pip、pip3、poetry、uv、uvx、pipx、pdmのシェルエイリアスが正しく読み込まれることを保証するため、非常に重要です。ターミナルを再起動しないと、エイリアスは利用できません。
-
インストールを確認するには、確認コマンドを実行します:
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- 出力に「OK: Safe-chain works!」と表示され、Aikido Safe Chain が正しくインストールされ動作していることが確認できます。
-
(オプション) テストパッケージをインストールしてマルウェアブロックをテストします:
JavaScript/Node.js の場合:
npm install safe-chain-testPythonの場合:
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 モジュール呼び出し(例: python -m pip install ...、python3 -m pip download ...)も傍受します。マルウェアが検出された場合、コマンドを終了するよう促します。
インストールされているバージョンは次のコマンドで確認できます:
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 時間です。これは、新しく公開されたパッケージが検出されていない脅威を含む可能性が最も高い重要な期間において、追加のセキュリティ層を提供します。このしきい値を設定したり、この保護を完全にバイパスしたりできます。詳細は以下の Minimum Package Age Configuration セクションを参照してください。
緊急の CVE 修正については、Aikido がパッチリリースにマルウェアが含まれていないことを確認し、Safe Chain はそれを最小経過時間チェックから除外するため、待機期間中に修正される脆弱性にさらされることはありません。
シェル統合
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
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.24/uninstall-safe-chain.sh | sh
Windows (PowerShell)
iex (iwr "https://github.com/AikidoSec/safe-chain/releases/download/1.5.24/uninstall-safe-chain.ps1" -UseBasicParsing)
❗ターミナルを再起動してください アンインストール後、すべてのエイリアスが削除されていることを確認するためです。
設定
ログ
--safe-chain-logging フラグまたは SAFE_CHAIN_LOGGING 環境変数を使用して、Aikido Safe Chain の出力を制御できます。
設定オプション
複数のソースを通じてログレベルを設定できます(優先順位順):
-
CLI 引数(最優先):
-
--safe-chain-logging=silent- マルウェアがブロックされた場合を除き、Aikido Safe Chain のすべての出力を抑制します。パッケージマネージャーの出力は通常どおり stdout に書き込まれ、Safe Chain はマルウェアをブロックしてプロセスを終了させた場合にのみ短いメッセージを書き込みます。npm install express --safe-chain-logging=silent -
--safe-chain-logging=verbose- Aikido Safe Chain からの詳細な診断出力を有効にします。問題のトラブルシューティングや、Safe Chain が背後で何を行っているかを理解するのに役立ちます。npm install express --safe-chain-logging=verbose
-
-
環境変数:
export SAFE_CHAIN_LOGGING=verbose npm install express有効な値:
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)は、ターミナル出力とは独立して制御されます。
設定オプション
以下のいずれかで設定します(優先順位順):
-
CLI 引数(最優先):
npm install express \ --safe-chain-log-file=~/safe-chain.log \ --safe-chain-log-file-format=plain \ --safe-chain-log-file-verbosity=normal -
環境変数:
export SAFE_CHAIN_LOG_FILE=~/safe-chain.log export SAFE_CHAIN_LOG_FILE_FORMAT=plain export SAFE_CHAIN_LOG_FILE_VERBOSITY=normal -
設定ファイル (
~/.safe-chain/config.json):{ "logFile": "~/safe-chain.log", "logFileFormat": "plain", "logFileVerbosity": "normal" }
logFileFormat — json(デフォルト)または plain。