この記事は2271文字約6分で読めます

Table of Contents

びっくり。

colors.js

@babel/coreのバージョンアップでCIを動かしていたところ謎のアスキーアート的なログが出たままヒープメモリを食いつぶして落ちてしまう事象が昨日の夜中に発生しました。

https://github.com/tubone24/portfolio/runs/4755929687?check_suite_focus=true

img

CIのジョブ的にはUIcheckのpercyを動かすところでクリティカルではなく、更新内容的にも急いで更新するような重要なアップデートではなかったので機能時点ではスルーしてましたが、今朝colors.jsの問題で本事象が発生することを下記の記事から気が付きました。

Dev corrupts npm libs 'colors' and 'faker' breaking thousands of apps

記事を追っていくと実際のコミットも見つけることができ、作者が意図的に星条旗おじさん(名前はCarl Pilcherですかね...?ちょっとわからなかったです。)を表示させ、無限ループを発生させるようなコードを仕込んでいることがわかります。

https://github.com/Marak/colors.js/commit/074a0f8ed0c31c35d13d28632bd8a049ff136fb6?diff=unified

この汚染が仕込まれたのが colors@1.4.44-liberty-2のバージョンであることから^1.4.0を利用していたライブラリはsemantic versioningでpatchアップデートにかかってしまったため、思いがけずアップデートされてしまったものと思われます。

また、ローカルで動かしてみたものの同様に事象が発生してしまっております。すごいMacのファンが回ってしまって怖いです。

img

対処法

取り急ぎpackage.jsonのresoltionsに安全なcolors@1.4.0を設定してを実施して事象の回復ができました。

https://github.com/tubone24/portfolio/pull/351/files

  "resolutions": {
    "@graphql-codegen/visitor-plugin-common": "1.22.0",
    "colors": "1.4.0"
  }

OSSのあり方とは

こればっかりは難しい問題なので今回結論を出すことはないですが、イチ開発者としては素敵なOSS活動を続けている皆さんを少しでもサポートしたい気持ちではいます。どんな形での貢献ができるかは不明ですが。

原因のコミットには多くのコントリビューターから賛否両論のコメントが投稿されてました。

oh man. whatever is going on. i will not judge, since iam a very average dev, the sense of this, nor your reasons. but: take a step back. have some holydays. this is clearly not going anywhere good. stay strong and healthy my dear. best regards from far europe.

私はごく普通の開発者なので、その感覚や理由を判断することはできませんが、しかし、一歩下がって、休日を過ごしてください。これは明らかに良い方向には向かっていません。遠く離れたヨーロッパから、よろしくお願いします。

引用 https://github.com/Marak/colors.js/commit/074a0f8ed0c31c35d13d28632bd8a049ff136fb6?diff=unified#commitcomment-63144380

もちろん、開発者のMarak氏の言い分もわかりますしOSS活動を続けていくモチベーションが落ちるようなことはあってはならないとは思いつつも、彼が犯した行動がすべて容認されうるものではないこともまた事実です。

なのでまず休んで。一息ついて考えて!というメッセージは痛いほどわかります。

F500 companies that care about security already patched out all Marak's stuff months ago. He's been a malicious supply chain issue for a while.

At this point the main people he's hurting are small folks who don't check their packages as much as big company appsec teams do.

セキュリティに気を配るF500企業は、数ヶ月前にすでにマラクのものをすべてパッチで除去しています。彼はしばらくの間、悪意のあるサプライチェーンの問題だった。

この時点で、彼が傷つけているのは、大企業のセキュリティチームほどには自分のパッケージをチェックしない、小さな人々なのです。

引用 https://github.com/Marak/colors.js/commit/074a0f8ed0c31c35d13d28632bd8a049ff136fb6?diff=unified#commitcomment-63196620

これもその通りだなぁと思います。誰も得しない...。とはいえ彼がもっとひどい不具合、たとえばOS自体を破壊しまくるものを仕込んでいたら。。被害は考えるだけでも恐ろしいですね。

これからもOSSが発展するように自分にできることは何か模索していきたいと思います。

tubone24にラーメンを食べさせよう!

ぽちっとな↓

Buy me a ramen

 Related Posts

hatena bookmark