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

サプライチェーン攻撃への備えについて考えている #湘なんか

サプライチェーン攻撃への備えについて考えている #湘なんか

湘.なんか #4でLT登壇した時の資料です。
資料で紹介している自作のツール: https://github.com/stefafafan/happa

Avatar for すてにゃん

すてにゃん

May 23, 2026

More Decks by すてにゃん

Other Decks in Technology

Transcript

  1. 3 導入 • Linux カーネル RCE • Copy Fail, Dirty

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

    Frag, Fragnesia, DirtyDecrypt, … • NGINX • NGINX Rift, nginx-poolslip, … • サプライチェーン攻撃 • axios, @tanstack, nx-console VS Code拡張, … 最近多すぎませんか
  3. 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 サプライチェーン攻撃対策をする
  4. 10 なるべく影響受けづらい形にする • Nx Console の感染では、minimum-release-age の設定をしてい たが、packageManagerで設定しているpnpmのバージョンが古す ぎてbypassされてしまっていた •

    https://nx.dev/blog/nx-console-v18-95-0-postmortem • 業務で使ってるリポジトリで設定していても、例えば趣味で他の OSSなどを手元で npm i するだけで感染とかも全然あり得る 設定したから安心はできない
  5. 11 なるべく影響受けづらい形にする • 開発者の端末でも不意に新しいバージョンが入ってこないように ガードする • Takumi Guard や AikidoSec/safe-chain

    を開発者全員のPCに MDM (モバイルデバイス管理) で一括でセットアップする等 • しかし VS Code 拡張とかはこれとはまた別の対応が必要 開発環境も対策を実施する
  6. 14 問題にすぐ気づけるようにする • ひとまず該当バージョンのパッケージがリポジトリに含まれていそ うかを調べたい • npmの場合は lockfile や node_modules

    を見に行く必要がある • 1つのリポジトリだけならまだしも大量にある時に一括で調べる 方法がほしい 影響の有無を確認したい
  7. 15 問題にすぐ気づけるようにする • pnpm list https://pnpm.io/cli/list • --depth オプションをつけることで、transitive dependency

    の バージョンも確認できる (無限に探索したい場合は Infinity) • --parseable もつけることで一覧表示にして grep で探しやすい pnpm でインストールされているパッケージのバージョンを確認する
  8. 16 問題にすぐ気づけるようにする • 例: pnpm list --depth=Infinity --parseable | grep

    axios • 出力例: /Users/stefafafan/…/my_project/node_modules/.pnpm/ [email protected]/node_modules/axios • これを、全部のリポジトリで実施して確認することになりそう pnpm でインストールされているパッケージのバージョンを確認する
  9. 19 問題にすぐ気づけるようにする • 例: pnpm を利用しているリポジトリに対して一括で実行したい: find . -mindepth 2

    -name pnpm-workspace.yaml -print \ | sed 's#/pnpm-workspace.yaml$##' \ | happa --repo - axios • ※ お試しで作ったので、まだ業務では使ったことない pnpm でインストールされているパッケージのバージョンを確認する
  10. 23 問題にすぐ対処できるようにする • 開発者や従業員のPCに入っているライブラリを一括でアップデー トするには • MDM (モバイルデバイス管理) でアップデートする? •

    バージョンだけ取得して対象者に声がけする? • 運用をあらかじめ決めておいたほうが良さそう 開発者のPCの対応