Closed1

lockfile-lintを使うとOSSのnpmパッケージでロックファイルにマルウェアを仕込まれるリスクを軽減できる

catnosecatnose

OSSのnpmパッケージにおいて、第三者によるPRでyarn.lockpackage-lock.jsonなどのロックファイルに変更が加えられている場合、すべての変更を徹底してチェックしなければならない。

なぜなら、パッケージの参照元となるyarnやnpmのレジストリのURLをしれっと改ざんされてしまうリスクがあるため。

例えば以下の画像のようにyarn.lockに定義されたパッケージのresolvedhttps://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にクローズされました