状況
CI の npm audit で、直接は使っていない依存(依存の依存)に深刻度 critical の脆弱性が報告された。npm audit fix --force を使うと、主要なライブラリのメジャーバージョンが上がると表示されている。
対応として最も適切なものは?
正答
- 直接使っていない依存なので、影響はないものとして記録だけ残す
- 表示に従って本番ブランチで --force を実行し、そのままデプロイする
- CI が落ちて開発が止まらないよう、
npm auditを CI から外しておく - 影響する使い方か確かめ、更新を作業ブランチで試してテストを通す
解説
直接 import していなくても、依存の依存はアプリと一緒に動いており、脆弱な機能が使われていれば攻撃される。まず公開された情報で、どの機能にどんな条件で影響するかを確かめる。npm audit fix --force は、互換性のないメジャーバージョンへの更新も含めて実行するため、確かめずに本番ブランチで実行してそのまま出すと、別の不具合で止まりかねない。作業ブランチで更新し、テストと動作確認を通してから出す。すぐ直せないときは、影響の有無と期限を決めて記録する。CI から検査を外すのは、警報を止めて火事を見なくするのと同じ。
参考: docs.npmjs.com
この問題を含む セキュリティ のテストを制限時間つきで解く
セキュリティクイズへ