
pmg v0.27.0
PMGは、プロキシ、サンドボックス、およびSafeDepの脅威インテリジェンスフィードを使用して、開発者やAIエージェントを悪意のあるオープンソースパッケージから保護します。
Package Manager Guard (PMG)
悪意のあるnpmおよびpipパッケージをインストール前にブロックします。
既に使用しているパッケージマネージャーに対する多層防御。
PMGが必要な理由
開発者やAIコーディングエージェントは毎日パッケージをインストールしています。それぞれのnpm installやpip installは、誰もレビューしていない数千行のコードを実行します。
人気エコシステムにおける最近の侵害事例:
- Mini Shai-Hulud - 300以上の人気パッケージが侵害されました
- litellm 1.82.8 - 人気のAIプロキシライブラリが侵害され、認証情報が流出しました
- telnyx 4.87.2 - 正規の通信SDKがPyPI上で乗っ取られました
- pino-sdk-v2 - 人気のpinoロガーを装ったタイポスクワットパッケージ
PMGは無料のオープンソース(Apache 2.0)であり、アカウントやAPIキーは不要です。 すべてのパッケージインストールを傍受し、コードが実行される前に、SafeDepの無料コミュニティAPIに対して既知のマルウェアをチェックします。一度インストールすれば、以降のすべてのnpm install、pip install、poetry addをカバーします。
PMGの仕組み
PMGは多層防御アプローチを採用しています。設定不要で、Zsh、Bash、Fishで動作し、各インストールはコード実行前に有効化された保護レイヤーを通過し、その後監査証跡が残ります。
レイヤーの詳細
- 透過的傍受 - PMGは
npm、pip、その他のパッケージマネージャーをラップします。開発者やAIエージェントは同じコマンドを使用します。ワークフローの変更は不要です。 - レイヤー1: 脅威インテリジェンス - PMGはインストール前にすべてのパッケージをSafeDepのリアルタイム脅威インテリジェンスに対してチェックします。既知の悪意のあるパッケージはブロックされます。キーやログインは不要です。
- レイヤー2: ポリシー(依存関係クールダウン) - PMGは設定可能なクールダウン期間内に公開されたパッケージバージョンをブロックするため、最近侵害されたバージョンはその期間中スキップされます。
- レイヤー3: オプトインサンドボックス - サンドボックスが有効化・設定されている場合、PMGはOSネイティブのサンドボックス(macOS Seatbelt、Linux Landlock(デフォルト)、またはBubblewrapフォールバック)内でインストールを実行するため、脅威が最初の2つのレイヤーをすり抜けた場合でも、インストールスクリプトのシステムアクセスが制限されます。
- 監査ログ - PMGはすべてのインストール(何を、いつ、どこから)を記録し、検証可能な監査証跡を提供します。
PMGの比較
PMGは、開発者とAIエージェントの両方をカバーし、サンドボックスとクールダウンを標準装備した、唯一の無料・オープンソースのインストール時パッケージファイアウォールです。
| 機能 | PMG | Socket | safe-chain | Snyk | Dependabot |
|---|---|---|---|---|---|
| OSS / 公開ビルド | ✓ | ✗ | ✓ | ✗ | ✗ |
| アカウントやAPIキーが不要 | ✓ | ✓ | ✓ | ✗ | ✗ |
| インストール時の悪意のあるパッケージブロック | ✓ | ✓ | ✓ | ✗ | ✗ |
| 依存関係クールダウンポリシー | ✓ | ✗ | ✓ | ✗ | ✗ |
| ランタイムサンドボックス | ✓ | ✗ | ✗ | ✗ | ✗ |
| AIコーディングエージェントを透過的に保護 | ✓ | ✗ | ✗ | ✗ | ✗ |
| ローカル監査ログ | ✓ | ✗ | ✗ | ✗ | ✗ |
| 既知CVEの修正PR | ✗ | ✗ | ✗ | ✓ | ✓ |
クイックスタート
1. インストール
curl -fsSL https://raw.githubusercontent.com/safedep/pmg/main/install.sh | sh
Homebrew、npm、その他のインストール方法についてはインストールを参照してください。
2. セットアップ
パッケージマネージャーを傍受できるようにPMGをシェルに組み込みます。
pmg setup install
# 変更を適用するにはターミナルを再起動してください
ヒント: PMGをアップグレードした後は、新しい設定オプションを反映するために
pmg setup installを再実行してください。Linuxの全ユーザー / ゴールデンイメージ:
sudo pmg setup install --system— docs/system-install.mdを参照してください。
インストールを検証し、保護が機能していることを確認します:
pmg setup doctor
オプション: PMGは、実行ごとにパッケージマネージャーに注入するオンザフライCAでHTTPSトラフィックを検査します。単一のCAを実行間で永続化し、OSのトラストストアで信頼するには(CA環境変数を無視するツール(macOSやWindowsのGoなど)に必要)、一度インストールしてください:
pmg setup cert install # ユーザースコープ、sudo不要 pmg setup cert status # 信頼状態と有効期限を確認スコープ、ローテーション、削除については証明機関を参照してください。
3. 使用
PMGが脅威をブロックする様子を確認します。
npm install --no-cache --prefer-online [email protected]
注:
safedep-test-pkgは、テストおよび検証目的でSafeDepのデータベースに悪意のあるものとしてフラグ付けされた無害なテストパッケージです。
通常どおりパッケージマネージャーを使い続けるか、AIコーディングエージェントに実行させてください。PMGはパス上に存在し、悪意のあるパッケージをブロックします。
npm install express
# または
pip install requests
対応パッケージマネージャー
PMGは既に使用しているツールをサポートします:
| エコシステム | ツール | コマンド例 |
|---|---|---|
| Node.js | npm | npm install <pkg> |
pnpm | pnpm add <pkg> | |
yarn | yarn add <pkg> | |
bun | bun add <pkg> | |
npx | npx <pkg> | |
pnpx | pnpx <pkg> | |
| Python | pip | pip install <pkg> |
pipx | pipx run <pkg> | |
poetry | poetry add <pkg> | |
uv | uv add <pkg> | |
uvx | uvx <pkg> |
インストール
インストールスクリプト(MacOS/Linux)
GitHubから最新リリースをダウンロードし、SHA-256チェックサムを検証して、$HOME/.local/bin(PATH上にある場合)または/usr/local/binにインストールします。
curl -fsSL https://raw.githubusercontent.com/safedep/pmg/main/install.sh | sh
Homebrew(MacOS/Linux)
brew tap safedep/tap
brew install safedep/tap/pmg
NPM(クロスプラットフォーム)
npm install -g @safedep/pmg
注: Node.jsが
miseやasdfなどのバージョンマネージャーで管理されている場合、NPMベースのインストールは不安定になる可能性があります。グローバルなnpmのbinパスはアクティブなNodeバージョンによって変わるため、バージョンを切り替えるとpmgがPATH上で利用できなくなる(または古いインストールを指す)可能性があります。このような環境では、インストールスクリプトまたはHomebrewを推奨します。
Go(ソースからビルド)
# $(go env GOPATH)/binが$PATHにあることを確認してください
go install github.com/safedep/pmg@latest
バイナリダウンロード
リリースページからお使いのプラットフォーム向けの最新バイナリをダウンロードしてください。
コンテナイメージ(GHCR)
マルチアーキテクチャ(linux/amd64、linux/arm64)のプリビルドイメージが、リリースのたびにGitHub Container Registryに公開されます。イメージのエントリポイントはpmgです。
# 最新イメージをプル(またはバージョンタグを指定、例: :v1.2.3)
docker pull ghcr.io/safedep/pmg:latest
# 任意のpmgコマンドを実行
docker run --rm ghcr.io/safedep/pmg:latest version
GitHub Actions
1ステップでCIワークフローを保護します。PMGはジョブ内のすべてのnpm install、pip installなどを分析します。
- uses: safedep/pmg@v1
with:
server-mode: true
# HTTP_PROXY経由で自動的に傍受されます
- run: npm ci
- name: Enforce PMG policy
if: always()
run: pmg proxy stop --fail-on-violation # デーモンを停止し、ブロック時にジョブを失敗させます
デフォルトではマルウェアブロックと依存関係クールダウンが有効です。サンドボックス分離はsandbox入力でオプトインできます。入力(paranoid、sandbox、cooldown-daysなど)で動作を調整するか、config-fileでリポジトリ内のYAMLを指定できます。完全なリファレンスはdocs/github-action.mdを参照してください。
アンインストール
シェル統合を削除します:
pmg setup remove
PMG設定ファイルも削除する場合:
pmg setup remove --config-file
次にPMG自体をアンインストールします:
# Homebrew
brew uninstall safedep/tap/pmg
# NPM
npm uninstall -g @safedep/pmg
信頼性とセキュリティ
PMGのビルドは再現可能で署名されています。
- アテステーション: GitHubおよびnpmのアテステーションが成果物の整合性を保証します。
- 検証: バイナリがソースコードと一致することを暗号的に証明できます。
- 検証手順についてはPMGの信頼性を参照してください。
ユーザーガイド
サポート
PMGが悪質なパッケージからあなたを守ってくれたなら、このリポジトリにスターを付けてください。他の人が見つけやすくなります。
コントリビューション
コントリビューションを歓迎します。ビルドおよびテスト手順についてはCONTRIBUTING.mdを参照してください。
すべてのコントリビューターに感謝します ❤️
テレメトリ
PMGは匿名の使用状況データを収集します。無効にするには、次のいずれかを実行してください:
- PMG設定ファイルで
disable_telemetry: trueを設定する、または PMG_DISABLE_TELEMETRY=trueをエクスポートする。