
safe-chain v1.5.15
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```shell
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/install-safe-chain.sh -o /tmp/install-safe-chain.sh
&& echo "0ad25efe15d1fa56105157a454d647223e78eb0c53d1f85e3d10afcd722e7bfd /tmp/install-safe-chain.sh" | sha256sum -c -
&& sh /tmp/install-safe-chain.sh
&& rm /tmp/install-safe-chain.sh
### Windows (PowerShell)```powershell
$installer = Join-Path $env:TEMP "install-safe-chain.ps1"
Invoke-WebRequest "https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/install-safe-chain.ps1" -OutFile $installer -UseBasicParsing
$expectedHash = "468C342C5AABB71200B0BD19950984EDD5C4B39811B653B13A5AD15E0FBA4DFA"
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.20/...)から配信されます。GitHubのリリースは不変です — バージョン付きURLで公開されたアーティファクトは一度公開されると変更や置き換えができないため、ダウンロードするファイルはリリースされたものと正確に同一であることが保証されます。
インストールの確認
-
❗ターミナルを再起動して、Aikido Safe Chainの使用を開始します。
- この手順は、npm、npx、yarn、pnpm、pnpx、rush、rushx、bun、bunx、pip、pip3、poetry、uv、uvx、pipx、pdmのシェルエイリアスが正しく読み込まれることを保証するため、非常に重要です。ターミナルを再起動しないと、エイリアスは利用できません。
-
インストールを確認するには、確認コマンドを実行します: ```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
- 出力に「OK: Safe-chain works!」と表示され、Aikido Safe Chain が正しくインストールされ実行されていることが確認できます。
-
(オプション) テストパッケージをインストールしてマルウェアブロックをテストする:
JavaScript/Node.js の場合: ```shell npm install safe-chain-test
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 モジュール呼び出し(例: `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 時間です。これは、新しく公開されたパッケージが検出されていない脅威を含む可能性が最も高い重要な期間において、追加のセキュリティ層を提供します。このしきい値を設定したり、この保護を完全にバイパスしたりできます - 以下の Minimum Package Age Configuration セクションを参照してください。
シェル統合
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.20/uninstall-safe-chain.sh | sh
### Windows (PowerShell)```powershell
iex (iwr "https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/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
-
-
環境変数: ```shell 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 引数(最優先): ```shell
npm install express
--safe-chain-log-file=~/safe-chain.log
--safe-chain-log-file-format=plain
--safe-chain-log-file-verbosity=normal - 環境変数: ```shell
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): ```json { "logFile": "~/safe-chain.log", "logFileFormat": "plain", "logFileVerbosity": "normal" }
logFileFormat — json(デフォルト)または plain。
logFileVerbosity — silent、normal、または verbose(デフォルト)。--safe-chain-logging とは独立しています。