問題について
Reactで作成していたプロジェクトをAWS fargateでホスティングしようとした際に
node_modules/resolve/test/resolver/multirepo/package.json
にある、monorepo-symlink-testというパッケージが脆弱性を持つのでスキャナー(Snyk cloud-native security scanner)から警告が発生したという問題に関する記事になります
原因
monorepo-symlink-testというパッケージ(すでにnpmからは削除済み)と、今回警告が出されているresolveのプライベートパッケージが偶然同じ名前であったため。おおお...
解決方法
2023/10/11に名前の修正がされました、修正者の名前が先頭に追加されてるのが面白いですね。つまり、10/11以前に作られたものはこの問題に当たる可能性があります。
node_modulesを最新状態にすればいいので、まずnode_modulesとpackage-lock.jsonファイルを削除
$ rm -rf node_modules
$ rm package-lock.json
package.jsonの依存関係を最新化(管理者実行)
$ sudo npm install -g npm-check-updates
$ sudo ncu -u
改めてnode_modulesとpackage-lock.jsonの作成
$ npm install
これで"monorepo-symlink-test"が"ljharb-monorepo-symlink-test"になるかと思います!
余談
この問題はいわばスキャナーの問題で、開発のボトルネックになる要因の一つですね。今回は名前を変更して対処していますが、このようなスキャナーの短所を解決するのが根本的な解決だけれども、今回のような問題がマイナーなケースだとしたら一般的には興味が持たれないのかも