Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
pnpmでできるサプライチェーン攻撃への備え / Pnpm Security Practices
Search
Daichi KUDO
June 11, 2026
910
3
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
510
エンジニアが始める UXリサーチ 入門 / Introduction of UX Research
da1chi
0
630
登壇は dynamic! な営みである / speech is dynamic
da1chi
0
880
Web Components で実現する Hotwire とフロントエンドフレームワークの橋渡し / Bridging with Web Components
da1chi
3
7.5k
Hotwireで簡単に非同期処理のユーザー通知を作る / broadcast using Turbo
da1chi
1
210
テストライブラリによってコンポーネントテストの実行時間はどう変わるか / component-test-performance-by-library
da1chi
0
140
Blue/Greenデプロイの導入による 運用フローの改善
da1chi
1
1.2k
Featured
See All Featured
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
770
Documentation Writing (for coders)
carmenintech
77
5.5k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
510
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
540
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
310
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
290
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
900
SEO for Brand Visibility & Recognition
aleyda
0
4.8k
4 Signs Your Business is Dying
shpigford
187
23k
Between Models and Reality
mayunak
4
470
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
620
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