npmパッケージ/GitHub Actionsを利用する側/公開する側でサプライチェーン攻撃を防ぐためにやることメモ
https://res.cloudinary.com/zenn/image/upload/s--m9aat7Xk--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:npm%25E3%2583%2591%25E3%2583%2583%25E3%2582%25B1%25E3%2583%25BC%25E3%2582%25B8%252FGitHub%2520Actions%25E3%2582%2592%25E5%2588%25A9%25E7%2594%25A8%25E3%2581%2599%25E3%2582%258B%25E5%2581%25B4%252F%25E5%2585%25AC%25E9%2596%258B%25E3%2581%2599%25E3%2582%258B%25E5%2581%25B4%25E3%2581%25A7%25E3%2582%25B5%25E3%2583%2597%25E3%2583%25A9%25E3%2582%25A4%25E3%2583%2581%25E3%2582%25A7%25E3%2583%25BC%25E3%2583%25B3%25E6%2594%25BB%25E6%2592%2583%25E3%2582%2592%25E9%2598%25B2%25E3%2581%2590%25E3%2581%259F%25E3%2582%2581%25E3%2581%25AB%25E3%2582%2584%25E3%2582%258B%25E3%2581%2593%25E3%2581%25A8%25E3%2583%25A1%25E3%2583%25A2%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:azu%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9saDMuZ29vZ2xldXNlcmNvbnRlbnQuY29tL2EtL0FPaDE0R2g1YVZnX2NjTmJiUjVqSVVzaUp3N051UENXSXdhcXExLW5YS3M1Qnc9czI1MC1j%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png
npmパッケージでサプライチェーン攻撃を防ぐために出来ることについて書かれた記事。Zenn で書かれた記事で筆者は azu さん
出来ることとして記載されている事は下記nyarla.icon
GitHub Actions を使う側
1. ロックファイルで依存をロックする
2. GiHub Actions では SHA pin を使う
3. GitHub Actions のパーミッションを明示的に絞る
4. 依存のアップデートに即時追従させるのではなく、一定期間の猶予を持たせる
5. 安全性の確認できていないパッケージを npx などで利用しない
6. Vibe Coding する時は隔離環境を使え
パッケージを上げる側
1. secretlint/secretlintを使う
2. ローカルに生のトークンを置かない
azu さんは 1Password を使ってローカルから生のトークンをほぼ削除している
1Passwordを使って、ローカルにファイル(~/.configや.env)として置かれてる生のパスワードなどを削除した
3. 各種トークンのパーミッションは最低限にする
4. GitHub Actions への merge はセキュリティチェックを行なってからやる
5. パッケージの公開はトークンレスなCIから実行する
6. npm では 2要素認証を必須にしてトークン利用を禁止する
7. MFA はフィッシング耐性の高いものを使う
例えば Yubikey を使うなどがある