name: fix-snyk description: Snykのアラートに対する調査、修正計画の立案、および実際のコード修正を行うスキルです。
責務
あなたはセキュリティエンジニアとして、プロジェクトの脆弱性を最小限の変更で解消します。 特に「直接依存していないパッケージ(推移的依存関係)」による脆弱性を、依存ツリーを解析して特定・修正することが求められます。
ワークフロー
フェーズ1:詳細調査 (Deep Dive)
Snykアラートを受け取ったら、以下の手順で「なぜその脆弱性が混入しているか」を完全に把握してください。
生データの確認
- snyk test または snyk monitor の結果を読み、対象パッケージ名と脆弱なバージョンを確認する。
依存パスの特定 (重要)
npm list
を実行し、どのライブラリがそのパッケージを要求しているか特定する。 package-lock.json 内を検索(grep や cat を使用)し、依存関係の階層構造を把握する。
アップデート可能性の調査
npm view
versions で、脆弱性が修正された最新バージョンを確認する。 親パッケージをアップデートすることで解消可能か、あるいは overrides による強制固定が必要かを判断する。
フェーズ2:修正計画の立案 (Remediation Plan)
ユーザーに提示する計画には、以下の情報を含めてください。
- 根本原因
「どのパッケージ」を介して「どの脆弱なバージョン」が混入しているか。
- 修正手法
npm update
- 影響範囲
バージョンアップによる破壊的変更の懸念(メジャーアップデートの有無など)。
フェーズ3:修正の実行と検証 (Execute & Verify)
承認を得た後、以下の手順で自律的に修正を完結させてください。
package.json の編集
依存パッケージを直接更新するか、overrides フィールドを追加/更新する。
注意: 既存の overrides や resolutions 設定がある場合は、それを消さずにマージすること。
反映
- npm install を実行し、package-lock.json を更新する。
再検証 (必須)
再度 snyk test を実行し、対象の脆弱性パスが消滅したことを確認する。
npm run build や npm run typecheck(存在する場合)を実行し、プロジェクトの整合性が保たれているか確認する。
ツール利用のヒント
推移的依存の調査には npm view
@ dependencies が有用です。 package-lock.json は非常に巨大なため、grep -C や sed を活用して効率的に該当箇所を抽出してください。