Slide 1

Slide 1 text

サプライチェーン攻撃への備えについて 考えている 1 2026/05/23 湘.なんか #4 すてにゃん (@stefafafan)

Slide 2

Slide 2 text

脆弱性の対応に追われすぎている!

Slide 3

Slide 3 text

3 導入 • Linux カーネル RCE • Copy Fail, Dirty Frag, Fragnesia, DirtyDecrypt, … • NGINX • NGINX Rift, nginx-poolslip, … • サプライチェーン攻撃 • axios, @tanstack, nx-console VS Code拡張, … 最近多すぎませんか

Slide 4

Slide 4 text

4 導入 • Linux カーネル RCE • Copy Fail, Dirty Frag, Fragnesia, DirtyDecrypt, … • NGINX • NGINX Rift, nginx-poolslip, … • サプライチェーン攻撃 • axios, @tanstack, nx-console VS Code拡張, … 最近多すぎませんか

Slide 5

Slide 5 text

5 導入 • 推移的依存 (transitive dependency) に仕込まれていている可能性 を考慮する必要がある • 業務で利用しているリポジトリはOKでも、他でたまたまインス トールしたパッケージが感染しているかもしれない サプライチェーン攻撃で困っていること

Slide 6

Slide 6 text

やるべきと思っていること

Slide 7

Slide 7 text

7 やるべきと思っていること • なるべく影響受けづらい形にする • 問題にすぐ気づけるようにする • 問題にすぐ対処できるようにする 多段で対応が必要そう

Slide 8

Slide 8 text

8 やるべきと思っていること • なるべく影響受けづらい形にする • 問題にすぐ気づけるようにする • 問題にすぐ対処できるようにする 多段で対応が必要そう

Slide 9

Slide 9 text

9 なるべく影響受けづらい形にする • Cooldownの設定を入れる • Dependabot / Renovate の設定、特に automerge ガンガンする運用だと危険 • 主要 npm 系のパッケージマネージャーは最近どれも対応している • パッケージマネージャーの設定を見直す • pnpm だと、ignoreScripts: true とか trustPolicy: no-downgrade など • GitHub Actions や Dockerfile イメージ等の SHA256 でピン • https://github.com/suzuki-shunsuke/pinact • https://github.com/azu/dockerfile-pin サプライチェーン攻撃対策をする

Slide 10

Slide 10 text

10 なるべく影響受けづらい形にする • Nx Console の感染では、minimum-release-age の設定をしてい たが、packageManagerで設定しているpnpmのバージョンが古す ぎてbypassされてしまっていた • https://nx.dev/blog/nx-console-v18-95-0-postmortem • 業務で使ってるリポジトリで設定していても、例えば趣味で他の OSSなどを手元で npm i するだけで感染とかも全然あり得る 設定したから安心はできない

Slide 11

Slide 11 text

11 なるべく影響受けづらい形にする • 開発者の端末でも不意に新しいバージョンが入ってこないように ガードする • Takumi Guard や AikidoSec/safe-chain を開発者全員のPCに MDM (モバイルデバイス管理) で一括でセットアップする等 • しかし VS Code 拡張とかはこれとはまた別の対応が必要 開発環境も対策を実施する

Slide 12

Slide 12 text

12 やるべきと思っていること • なるべく影響受けづらい形にする • 問題にすぐ気づけるようにする • 問題にすぐ対処できるようにする 多段で対応が必要そう

Slide 13

Slide 13 text

13 問題にすぐ気づけるようにする • サプライチェーン攻撃は影響の範囲が広すぎて、大丈夫かどうか判 断が難しい • GitHub Orgにある全てのリポジトリは問題ないか? • CI/CDで含まれてしまっていないか? • 開発者の端末に含まれていないか? 影響の有無を確認したい

Slide 14

Slide 14 text

14 問題にすぐ気づけるようにする • ひとまず該当バージョンのパッケージがリポジトリに含まれていそ うかを調べたい • npmの場合は lockfile や node_modules を見に行く必要がある • 1つのリポジトリだけならまだしも大量にある時に一括で調べる 方法がほしい 影響の有無を確認したい

Slide 15

Slide 15 text

15 問題にすぐ気づけるようにする • pnpm list https://pnpm.io/cli/list • --depth オプションをつけることで、transitive dependency の バージョンも確認できる (無限に探索したい場合は Infinity) • --parseable もつけることで一覧表示にして grep で探しやすい pnpm でインストールされているパッケージのバージョンを確認する

Slide 16

Slide 16 text

16 問題にすぐ気づけるようにする • 例: pnpm list --depth=Infinity --parseable | grep axios • 出力例: /Users/stefafafan/…/my_project/node_modules/.pnpm/ [email protected]/node_modules/axios • これを、全部のリポジトリで実施して確認することになりそう pnpm でインストールされているパッケージのバージョンを確認する

Slide 17

Slide 17 text

17 問題にすぐ気づけるようにする stefafafan/happa というツールを作成した https://github.com/stefafafan/happa

Slide 18

Slide 18 text

18 問題にすぐ気づけるようにする • pnpm を入れる必要がない、オプションを指定しなくても grep し やすいフォーマットでバージョンを出力してくれる • `happa axios` の出力結果例: my_project axios installed 1.16.1 my_project axios resolved 1.16.1 stefafafan/happa の便利なところ

Slide 19

Slide 19 text

19 問題にすぐ気づけるようにする • 例: pnpm を利用しているリポジトリに対して一括で実行したい: find . -mindepth 2 -name pnpm-workspace.yaml -print \ | sed 's#/pnpm-workspace.yaml$##' \ | happa --repo - axios • ※ お試しで作ったので、まだ業務では使ったことない pnpm でインストールされているパッケージのバージョンを確認する

Slide 20

Slide 20 text

20 やるべきと思っていること • なるべく影響受けづらい形にする • 問題にすぐ気づけるようにする • 問題にすぐ対処できるようにする 多段で対応が必要そう

Slide 21

Slide 21 text

21 問題にすぐ対処できるようにする • 認証情報が漏れてもクリティカルな問題にならないようにしてお く、棚卸ししておく • 不要なライブラリの棚卸し • 利用していないリポジトリはArchiveしておく • 一括でバージョンアップ等作業できるように準備 • インシデント発生時のシミュレーション・訓練 とにかく備える

Slide 22

Slide 22 text

22 問題にすぐ対処できるようにする • 一斉バージョンアップはDevinにやらせる? • そもそも全リポジトリはDevinにつながっているのか?対応漏れ はないか? • Org配下のリポジトリを一括でcloneして対応したほうが確実? 複数リポジトリの一括対応

Slide 23

Slide 23 text

23 問題にすぐ対処できるようにする • 開発者や従業員のPCに入っているライブラリを一括でアップデー トするには • MDM (モバイルデバイス管理) でアップデートする? • バージョンだけ取得して対象者に声がけする? • 運用をあらかじめ決めておいたほうが良さそう 開発者のPCの対応

Slide 24

Slide 24 text

24 まとめ

Slide 25

Slide 25 text

25 • サプライチェーン攻撃への備えを色々とやっていきましょう • クールダウンの設定をするだけで終わりではなく、いつか感染する 想定で備えよう まとめ