at backyard

Color my life with the chaos of trouble.

colors.jsの今回の問題で我々が対応すべきことについての個人的なメモ(実務的な部分のみ)

colors というnpmパッケージの最新versionについて意図的に悪意のあるコードが実行されるようになっている。

こちらの問題のあるversionなどの具体的な内容についてはazuさんが分かりやすくまとめてくれているので、こちらを参照してみるのが良い。

zenn.dev

npmパッケージで依存しているパッケージは多いので、影響はでかい。例えばFirebase CLIも一時期影響を受けていたようだ。

qiita.com

目次

追記にも書いたが、日本時間の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 内の colors1.4.0 に直接書き換える方法もあるようだが、これは良いやり方かはちょっとわからない。
(こちらは上に貼った記事内にも記載がある。コードのdiffなども載っているのでそちらの参考をしてみてください)

なお、colorsのリポジトリは下記。

github.com

colors.jsの作者が書いたfaker.jsについても最新版では空の状態となっているので、こちらについても最新版を入れると動かないものと思われる。

https://github.com/Marak/faker.jsgithub.com

最後に

私は作者の心情を計り知ることはできないし、よってそこについては何も書かない。

が昨晩、この問題が発覚して自身でもGitHubのissueを見たり、Twitterでの様々な方の発言などを読んだりしていた。
Twitterには、様々な角度・立場からの発言が溢れていて読んでいてすごく考えさせられるものも多かった。

また、偶然にも、ちょうど昨日日中にPHPの現場でOSSについての話を聞いていて、OSSの難しさについてもちょっと考えたりしていたのもすごい偶然だった。

php-genba.shin1x1.com

色々と自分の中でも様々な考えが交差するが、うまくそれを言葉にするのが難しい。

よってここで筆を置こうと思う。

追記:2022年1月11日時点で、悪意あるバージョン(1.4.1や1.4.2)はnpmからは削除されている

2022年1月11日時点で、悪意あるバージョン(1.4.1や1.4.2)はnpmからは削除されており、現在はcolors.jsをインストールしても問題のないバージョンがインストールされるようになっている。

colors - npm

またこちらの問題については下記のように報告されているので、そちらのリンクも貼っておく。

github.com