colors
というnpmパッケージの最新versionについて意図的に悪意のあるコードが実行されるようになっている。
こちらの問題のあるversionなどの具体的な内容についてはazuさんが分かりやすくまとめてくれているので、こちらを参照してみるのが良い。
npmパッケージで依存しているパッケージは多いので、影響はでかい。例えばFirebase CLIも一時期影響を受けていたようだ。
目次
追記にも書いたが、日本時間の2022年1月11日現在、悪意あるバージョン(1.4.1や1.4.2)はnpmからは削除されており、colors.jsをインストールしても問題ない状態になっている。
影響のあるversionと対応方法
なお、影響のあるversionについて引用させていただくと、
- 1.4.44-liberty-2
- 1.4.1
- 1.4.2
となっており、 ^1.0.0
などのversion指定で入っている場合、2022年1月10日時点での1.x.xの最新である1.4.2が選択される状態となっているよう。
colors
を利用しているかは下記のコマンドで確認が可能。
npm ls colors
yarn why colors
もし利用している場合、下記のようにバージョン固定でインストールをするなどの対応が必要。
(1.4.0
は問題ないバージョンであることが確認されており、また、npmでは現在publishしてから24時間以上経過したパッケージのunpublishは基本的にできないようになっているため、問題ないバージョンであることは保証される形となっている。ここらへんも詳細は上の記事を読んでください)
# npm install npm install colors@1.4.0 # yarn add yarn add colors@1.4.0
また、colors
はよく使われているパッケージのため、依存の依存に入っていることも少なくない。
こちらについては基本的にパッケージの更新待ちとなるため、更新が来たら npm update
で更新する。
動く状態の package-lock.json
がある場合は、現状はそのままにしておくのが良い。
package-lock.json
内の colors
を 1.4.0
に直接書き換える方法もあるようだが、これは良いやり方かはちょっとわからない。
(こちらは上に貼った記事内にも記載がある。コードのdiffなども載っているのでそちらの参考をしてみてください)
なお、colorsのリポジトリは下記。
colors.js
の作者が書いたfaker.js
についても最新版では空の状態となっているので、こちらについても最新版を入れると動かないものと思われる。
https://github.com/Marak/faker.jsgithub.com
最後に
私は作者の心情を計り知ることはできないし、よってそこについては何も書かない。
が昨晩、この問題が発覚して自身でもGitHubのissueを見たり、Twitterでの様々な方の発言などを読んだりしていた。
Twitterには、様々な角度・立場からの発言が溢れていて読んでいてすごく考えさせられるものも多かった。
また、偶然にも、ちょうど昨日日中にPHPの現場でOSSについての話を聞いていて、OSSの難しさについてもちょっと考えたりしていたのもすごい偶然だった。
色々と自分の中でも様々な考えが交差するが、うまくそれを言葉にするのが難しい。
よってここで筆を置こうと思う。
追記:2022年1月11日時点で、悪意あるバージョン(1.4.1や1.4.2)はnpmからは削除されている
2022年1月11日時点で、悪意あるバージョン(1.4.1や1.4.2)はnpmからは削除されており、現在はcolors.jsをインストールしても問題のないバージョンがインストールされるようになっている。
またこちらの問題については下記のように報告されているので、そちらのリンクも貼っておく。