
PMGは、プロキシ、サンドボックス、およびSafeDepの脅威インテリジェンスフィードを使用して、開発者やAIエージェントを悪意のあるオープンソースパッケージから保護します。
悪意のあるnpmおよびpipパッケージがインストールされる前にブロックします。
既に使用しているパッケージマネージャーに対する多層防御。
開発者やAIコーディングエージェントは毎日パッケージをインストールします。npm installやpip installは、誰もレビューしていない何千行ものコードを実行します。
最近の主要エコシステムにおける侵害事例:
PMGは無料でオープンソース(Apache 2.0)であり、アカウントやAPIキーは不要です。 すべてのパッケージインストールをインターセプトし、コードが実行される前に、SafeDepの無料コミュニティAPIで既知のマルウェアをチェックします。一度インストールすれば、それ以降のnpm install、pip install、poetry addすべてをカバーします。
PMGは多層防御のアプローチを採用しています。設定不要で、Zsh、Bash、Fishで動作し、各インストールはコード実行前に有効化された保護レイヤーを通過し、その後は監査証跡が残ります。
npm、pip、その他のパッケージマネージャーをラップします。開発者やAIエージェントは同じコマンドを使用します。ワークフローの変更はありません。PMGは、開発者とAIエージェントの両方をカバーし、サンドボックスとクールダウンを標準搭載した、唯一の無料でオープンソースのインストール時パッケージファイアウォールです。
curl -fsSL https://raw.githubusercontent.com/safedep/pmg/main/install.sh | sh
Homebrew、npm、その他のインストール方法についてはインストールを参照してください。
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のトラストストアで信頼するには(macOSやWindowsのGoなど、CA環境変数を無視するツールに必要)、一度インストールしてください:
pmg setup cert install # ユーザースコープ、sudo不要 pmg setup cert status # 信頼状態と有効期限を確認スコープ、ローテーション、削除については認証局を参照してください。
PMGが脅威をブロックしている様子をご覧ください。
npm install --no-cache --prefer-online [email protected]
注:
safedep-test-pkgは、テストおよび検証目的でSafeDepのデータベースで悪意ありとフラグ付けされた良性のテストパッケージです。
通常どおりパッケージマネージャーを使用し続けるか、AIコーディングエージェントに実行させてください。PMGはパスに常駐し、悪意のあるパッケージをブロックします。
npm install express
# または
pip install requests
PMGは、あなたが既に使用しているツールをサポートします:
GitHubから最新リリースをダウンロードし、SHA-256チェックサムを検証し、$HOME/.local/bin(PATHにある場合)または/usr/local/binにインストールします。
curl -fsSL https://raw.githubusercontent.com/safedep/pmg/main/install.sh | sh
brew tap safedep/tap
brew install safedep/tap/pmg
npm install -g @safedep/pmg
注: NPMベースのインストールは、Node.jsが
miseやasdfなどのバージョンマネージャーで管理されている場合、脆弱になる可能性があります。グローバルなnpmのbinパスはアクティブなNodeバージョンによって変わるため、バージョンを切り替えるとpmgがPATH上で利用できなくなったり(または古いインストールを指したり)することがあります。このような環境では、インストールスクリプトまたはHomebrewを推奨します。
# $(go env GOPATH)/bin が $PATH に含まれていることを確認
go install github.com/safedep/pmg@latest
お使いのプラットフォーム向けの最新バイナリをリリースページからダウンロードしてください。
マルチアーキテクチャ(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
1つのステップでCIワークフローを保護します。PMGはジョブ内のすべてのnpm install、pip installなどを分析します。
- uses: safedep/pmg@v1
with:
server-mode: true
# HTTP_PROXY経由で自動的にインターセプトされます
- run: npm ci
- name: PMGポリシーを適用
if: always()
run: pmg proxy stop --fail-on-violation # デーモンを停止し、ブロックがあるとジョブを失敗させる
デフォルトでは、マルウェアブロックと依存関係クールダウンが有効になります。サンドボックス隔離はsandbox入力でオプトインできます。入力(paranoid、sandbox、cooldown-daysなど)で動作を調整するか、リポジトリ内のYAMLをconfig-fileで指定します。完全なリファレンスは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のビルドは再現可能で署名されています。
PMGが悪意のあるパッケージからあなたを守ったなら、このリポジトリにスターをつけてください。他の人が見つける助けになります。
コントリビューションを歓迎します。ビルドとテストの手順についてはCONTRIBUTING.mdを参照してください。
すべてのコントリビューターに感謝します ❤️
PMGは匿名の使用データを収集します。無効にするには、次のいずれかを実行してください:
disable_telemetry: trueを設定する、またはPMG_DISABLE_TELEMETRY=trueをエクスポートする。| 能力 | PMG | Socket | safe-chain | Snyk | Dependabot |
|---|
| OSS / 公開開発 | ✓ | ✗ | ✓ | ✗ | ✗ |
| アカウントやAPIキーが不要 | ✓ | ✓ | ✓ | ✗ | ✗ |
| インストール時の悪意あるパッケージブロック | ✓ | ✓ | ✓ | ✗ | ✗ |
| 依存関係クールダウンポリシー | ✓ | ✗ | ✓ | ✗ | ✗ |
| ランタイムサンドボックス | ✓ | ✗ | ✗ | ✗ | ✗ |
| AIコーディングエージェントを透過的に保護 | ✓ | ✗ | ✗ | ✗ | ✗ |
| ローカル監査ログ | ✓ | ✗ | ✗ | ✗ | ✗ |
| 既知のCVE修正PR | ✗ | ✗ | ✗ | ✓ | ✓ |
| エコシステム | ツール | コマンド例 |
|---|
| 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> |