Closed1
lockfile-lintを使うとOSSのnpmパッケージでロックファイルにマルウェアを仕込まれるリスクを軽減できる
OSSのnpmパッケージにおいて、第三者によるPRでyarn.lockやpackage-lock.jsonなどのロックファイルに変更が加えられている場合、すべての変更を徹底してチェックしなければならない。
なぜなら、パッケージの参照元となるyarnやnpmのレジストリのURLをしれっと改ざんされてしまうリスクがあるため。
例えば以下の画像のようにyarn.lockに定義されたパッケージのresolvedがhttps://registry.yarnpkg.com/...からhttps://malicious.example/...に書き換えられてしまうかもしれない。

lockfile-lint
このリスクを軽減するのにlockfile-lintが便利。
$ npx lockfile-lint --path yarn.lock --allowed-hosts npm yarn --validate-https
例えば👆のコマンドではyarn.lockの中で
- npmとyarnのレジストリ以外のURLが参照されていないか
- すべてhttpsのURLになっているか
をチェックしてくれる。

👆 違反しているとこんな感じでエラーが発生する。
npmスクリプトに定義しておき、GitHub Actionsなどでテストと合わせてCIでチェックするのが良いかもしれない。
package.json
"scripts": {
"lockfile-lint": "npx lockfile-lint --path yarn.lock --allowed-hosts npm yarn --validate-https",
}
ただし、あくまでもリスクの軽減であって、第三者によるPRに含まれる変更点はすべてチェックするべきというのは変わらない。
このスクラップは2022/10/28にクローズされました