Upgrade to Pro — share decks privately, control downloads, hide ads and more …

pnpmでできるサプライチェーン攻撃への備え / Pnpm Security Practices

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Daichi KUDO Daichi KUDO
June 11, 2026
250

pnpmでできるサプライチェーン攻撃への備え / Pnpm Security Practices

https://tamadev.connpass.com/event/391266/
多摩.dev #3 での発表資料

Avatar for Daichi KUDO

Daichi KUDO

June 11, 2026

More Decks by Daichi KUDO

Transcript

  1. 自己紹介 • Daichi KUDO ◦ GitHub @kudoas ◦ Twitter @da1chi24

    • 興味・関心ごと ◦ UI/UX、フロントエンド全般 ◦ 開発者体験、Devtools
  2. サプライチェーン攻撃のプロセス(例) 1. 公開 危険性なパッケージ のバージョンが公開 される 2. インストール 利用者がパッケージ をインストールする

    3. 自動実行 悪意のあるライフ サイクルスクリプト が実⾏される 4. 感染 認証トークンなどの 重要な情報が 外部に送信される パッケージ開発者 パッケージ利⽤者
  3. パッケージ利用者が対策できる3つのフェーズ 1. 公開 危険性なパッケージ のバージョンが公開 される 2. インストール 利用者がパッケージ をインストールする

    3. 自動実行 悪意のあるライフ サイクルスクリプト が実⾏される 4. 感染 認証トークンなどの 重要な情報が 外部に送信される パッケージ開発者 ライブラリ利⽤者 ①危険性のあるものを インストールしない
  4. パッケージ利用者が対策できる3つのフェーズ 1. 公開 危険性なパッケージ のバージョンが公開 される 2. インストール 利用者がパッケージ をインストールする

    3. 自動実行 悪意のあるライフ サイクルスクリプト が実⾏される 4. 感染 認証トークンなどの 重要な情報が 外部に送信される ②インストールスクリプ トを実行しない パッケージ開発者 パッケージ利⽤者
  5. ③認証情報を セキュアに管理する パッケージ利用者が対策できる3つのフェーズ 1. 公開 危険性なパッケージ のバージョンが公開 される 2. インストール

    利用者がパッケージ をインストールする 3. 自動実行 悪意のあるライフ サイクルスクリプト が実⾏される 4. 感染 認証トークンなどの 重要な情報が 外部に送信される パッケージ開発者 パッケージ利⽤者
  6. パッケージ利用者が対策できる3つのフェーズ 1. 公開 危険性なパッケージ のバージョンが公開 される 2. インストール 利用者がパッケージ をインストールする

    3. 自動実行 悪意のあるライフ サイクルスクリプト が実⾏される 4. 感染 認証トークンなどの 重要な情報が 外部に送信される パッケージ開発者 ライブラリ利⽤者 ①危険性のあるものを インストールしない
  7. • trustPolicy: “no-downgrade” (デフォルト: “off”) リリース元の信頼レベル低下を検知 https://pnpm.io/settings#trustpolicy tear 1 staged

    publishing 2FA + メンテナー承認 tear 2 trusted publishing OIDCでの認証 tear 3 provenance 誰がいつpublishしたか証跡 tear 4 なし なし リリース元の信頼性レベルのランク 前回のリリース 今回のリリース 2026.6.7時点 pnpmのみ
  8. パッケージ利用者が対策できる3つのフェーズ 1. 公開 危険性なパッケージ のバージョンが公開 される 2. インストール 利用者がパッケージ をインストールする

    3. 自動実行 悪意のあるライフ サイクルスクリプト が実⾏される 4. 感染 認証トークンなどの 重要な情報が 外部に送信される ②インストールスクリプ トを実行しない パッケージ開発者 パッケージ利⽤者
  9. ③認証情報を セキュアに管理する パッケージ利用者が対策できる3つのフェーズ 1. 公開 危険性なパッケージ のバージョンが公開 される 2. インストール

    利用者がパッケージ をインストールする 3. 自動実行 悪意のあるライフ サイクルスクリプト が実⾏される 4. 感染 認証トークンなどの 重要な情報が 外部に送信される パッケージ開発者 パッケージ利⽤者
  10. pnpm-workspace.ymlに設定を集約する pnpm v10 pnpm v11~ .npmrc 設定全て auth/registry のみ pnpm-workspace.yml

    設定全て auth以外の設定全て .npmrcを.gitignore に含めるのが推奨 https://pnpm.io/blog/releases/11.0#npmrc-is-authregistry-only
  11. • .envに直接トークンを書くと流出のリスクがある ◦ よくない例: export NPM_TOKEN=ghp_xxxx • 1passwordなどを用いて認証情報を安全に保存する ◦ 1password

    CLI なら参照するときだけ利用できる ◦ NPM_TOKEN=”op://xxx” op run -- pnpm install トークンの平文でローカルに保存しない
  12. 紹介した対策 1. 公開 危険性なパッケージ のバージョンが公開 される 2. インストール 利用者がパッケージ をインストールする

    3. 自動実行 悪意のあるライフ サイクルスクリプト が実⾏される 4. 感染 認証トークンなどの 重要な情報が 外部に送信される minimumReleaseAge blockExoticSubdeps trustPolicy install script停止 strictDepsBuild .npmrcをgit管理しない トークンの脱平文管理
  13. 紹介した対策 1. 公開 危険性なパッケージ のバージョンが公開 される 2. インストール 利用者がパッケージ をインストールする

    3. 自動実行 悪意のあるライフ サイクルスクリプト が実⾏される 4. 感染 認証トークンなどの 重要な情報が 外部に送信される minimumReleaseAge blockExoticSubdeps trustPolicy install script停止 strictDepsBuild .npmrcをgit管理しない トークンの脱平文管理 pnpm v11.0.0より 下線デフォルト有効
  14. • 基本的な防御策は「インストールしない」こと • pnpm v11で安全に倒すデフォルトが増えた ◦ minimumReleaseAge: 1440(分) ◦ blockExoticSubdeps:

    true ◦ strictDepBuilds: true ◦ インストールスクリプトの無効化 • 今後さまざまなオプションや対策が増えると思われる まとめ
  15. • axios ソフトウェアサプライチェーン攻撃の概要と対応指針 - GMO Flatt Security Blog • pnpm

    11.0 • Settings (pnpm-workspace.yaml) • Package Managers Need to Cool Down | Andrew Nesbitt • Staged publishing for npm packages • Trusted publishing for npm packages • Mitigating supply chain attacks | pnpm • サプライチェーン攻撃への防御策 | blog.jxck.io • Upcoming breaking changes for npm v12 - GitHub Changelog 参考URL