Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
pnpmでできるサプライチェーン攻撃への備え / Pnpm Security Practices
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Daichi KUDO
June 11, 2026
250
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
pnpmでできるサプライチェーン攻撃への備え / Pnpm Security Practices
https://tamadev.connpass.com/event/391266/
多摩.dev #3 での発表資料
Daichi KUDO
June 11, 2026
More Decks by Daichi KUDO
See All by Daichi KUDO
ゲームから学ぶUX設計 / UX Design Inspired from Games
da1chi
0
370
エンジニアが始める UXリサーチ 入門 / Introduction of UX Research
da1chi
0
520
登壇は dynamic! な営みである / speech is dynamic
da1chi
0
780
Web Components で実現する Hotwire とフロントエンドフレームワークの橋渡し / Bridging with Web Components
da1chi
3
6.5k
Hotwireで簡単に非同期処理のユーザー通知を作る / broadcast using Turbo
da1chi
1
190
テストライブラリによってコンポーネントテストの実行時間はどう変わるか / component-test-performance-by-library
da1chi
0
110
Blue/Greenデプロイの導入による 運用フローの改善
da1chi
1
1.2k
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
600
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.5k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
200
Rails Girls Zürich Keynote
gr2m
96
14k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
220
Embracing the Ebb and Flow
colly
88
5.1k
It's Worth the Effort
3n
188
29k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
200
Documentation Writing (for coders)
carmenintech
77
5.4k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Transcript
pnpmを活用した サプライチェーン攻撃への備え Daichi KUDO (@da1chi24) 多摩.dev #3 at パルテノン多摩
• npm パッケージを狙ったサプライチェーン攻撃が増えています • パッケージマネージャーでは対策に役立つ設定が多いですが、 どのレイヤーに効果があるのか整理しないと分かりにくいです • ここでは攻撃手順と比較しながら、普段パッケージ利用者の自分が 行っている pnpm
(v11.5.2) でできる対策を紹介します • 他の npm/yarn でも同様の設定はあるので、それらでも適用 できる内容が多いです 今回話すこと
自己紹介 • Daichi KUDO ◦ GitHub @kudoas ◦ Twitter @da1chi24
• 興味・関心ごと ◦ UI/UX、フロントエンド全般 ◦ 開発者体験、Devtools
サプライチェーン攻撃のプロセス(例) 1. 公開 危険性なパッケージ のバージョンが公開 される 2. インストール 利用者がパッケージ をインストールする
3. 自動実行 悪意のあるライフ サイクルスクリプト が実⾏される 4. 感染 認証トークンなどの 重要な情報が 外部に送信される パッケージ開発者 パッケージ利⽤者
パッケージ利用者が対策できる3つのフェーズ 1. 公開 危険性なパッケージ のバージョンが公開 される 2. インストール 利用者がパッケージ をインストールする
3. 自動実行 悪意のあるライフ サイクルスクリプト が実⾏される 4. 感染 認証トークンなどの 重要な情報が 外部に送信される パッケージ開発者 ライブラリ利⽤者 ①危険性のあるものを インストールしない
パッケージ利用者が対策できる3つのフェーズ 1. 公開 危険性なパッケージ のバージョンが公開 される 2. インストール 利用者がパッケージ をインストールする
3. 自動実行 悪意のあるライフ サイクルスクリプト が実⾏される 4. 感染 認証トークンなどの 重要な情報が 外部に送信される ②インストールスクリプ トを実行しない パッケージ開発者 パッケージ利⽤者
③認証情報を セキュアに管理する パッケージ利用者が対策できる3つのフェーズ 1. 公開 危険性なパッケージ のバージョンが公開 される 2. インストール
利用者がパッケージ をインストールする 3. 自動実行 悪意のあるライフ サイクルスクリプト が実⾏される 4. 感染 認証トークンなどの 重要な情報が 外部に送信される パッケージ開発者 パッケージ利⽤者
パッケージ利用者が対策できる3つのフェーズ 1. 公開 危険性なパッケージ のバージョンが公開 される 2. インストール 利用者がパッケージ をインストールする
3. 自動実行 悪意のあるライフ サイクルスクリプト が実⾏される 4. 感染 認証トークンなどの 重要な情報が 外部に送信される パッケージ開発者 ライブラリ利⽤者 ①危険性のあるものを インストールしない
• minimumReleaseAge (デフォルト 1440(分) v11.0.0~) セキュリティ対応されるまでの時間を稼ぐ https://pnpm.io/settings#minimumreleaseage 利用者 バージョン v1.0.0
汚染バージョン v1.0.1 削除 指定時間以上 経過したものを インストール
• blockExoticSubdeps (デフォルトtrue v11.0.0~) 推移的依存の参照先が信頼できるかチェック https://pnpm.io/settings#blockexoticsubdeps Package A Package B
Package C Package D 信頼しないURL例 git+ssh://... https://.../package.tgz インストール対象
• 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のみ
パッケージ利用者が対策できる3つのフェーズ 1. 公開 危険性なパッケージ のバージョンが公開 される 2. インストール 利用者がパッケージ をインストールする
3. 自動実行 悪意のあるライフ サイクルスクリプト が実⾏される 4. 感染 認証トークンなどの 重要な情報が 外部に送信される ②インストールスクリプ トを実行しない パッケージ開発者 パッケージ利⽤者
• v10.0.0よりデフォルト • strictDepBuilds: true で必要なものだけ許可 インストールスクリプトを実行しない https://pnpm.io/settings#strictdepbuilds 設定例
③認証情報を セキュアに管理する パッケージ利用者が対策できる3つのフェーズ 1. 公開 危険性なパッケージ のバージョンが公開 される 2. インストール
利用者がパッケージ をインストールする 3. 自動実行 悪意のあるライフ サイクルスクリプト が実⾏される 4. 感染 認証トークンなどの 重要な情報が 外部に送信される パッケージ開発者 パッケージ利⽤者
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
• .envに直接トークンを書くと流出のリスクがある ◦ よくない例: export NPM_TOKEN=ghp_xxxx • 1passwordなどを用いて認証情報を安全に保存する ◦ 1password
CLI なら参照するときだけ利用できる ◦ NPM_TOKEN=”op://xxx” op run -- pnpm install トークンの平文でローカルに保存しない
紹介した対策 1. 公開 危険性なパッケージ のバージョンが公開 される 2. インストール 利用者がパッケージ をインストールする
3. 自動実行 悪意のあるライフ サイクルスクリプト が実⾏される 4. 感染 認証トークンなどの 重要な情報が 外部に送信される minimumReleaseAge blockExoticSubdeps trustPolicy install script停止 strictDepsBuild .npmrcをgit管理しない トークンの脱平文管理
紹介した対策 1. 公開 危険性なパッケージ のバージョンが公開 される 2. インストール 利用者がパッケージ をインストールする
3. 自動実行 悪意のあるライフ サイクルスクリプト が実⾏される 4. 感染 認証トークンなどの 重要な情報が 外部に送信される minimumReleaseAge blockExoticSubdeps trustPolicy install script停止 strictDepsBuild .npmrcをgit管理しない トークンの脱平文管理 pnpm v11.0.0より 下線デフォルト有効
npm v12 でも同様にサポートされる予定 https://github.blog/changelog/2026-06-09-upcoming-breaking-changes-for-npm-v12/ 2026.6.9
• 基本的な防御策は「インストールしない」こと • pnpm v11で安全に倒すデフォルトが増えた ◦ minimumReleaseAge: 1440(分) ◦ blockExoticSubdeps:
true ◦ strictDepBuilds: true ◦ インストールスクリプトの無効化 • 今後さまざまなオプションや対策が増えると思われる まとめ
• 企業で進める場合、各チームの全リポジトリで設定を 漏れなく適用するのは大変だと思います。 • そこで「組織の共通設定を用意し、各リポジトリに 配布する」ということを進めています。 • まだ私も試行錯誤の段階ですので、上手く進んだら どこかで続きをお話します。 今後の課題
• 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