JavaScript 開発者が、何らかの主張をするために、人気のある npm パッケージを意図的に台無しにしている

Table of Contents

JavaScript 開発者が、何らかの主張をするために、人気のある npm パッケージを意図的に台無しにしている

更新:最近、2 つの人気のオープン ソース パッケージが悪意のあるコミットによって妨害され、ソフトウェアを使用しているユーザーの間で混乱が生じ、オープン ソース ソフトウェアのサプライ チェーンの脆弱性に関する懸念がさらに高まりました。

npm パッケージの faker.js と colors.js は、これまでよく知られているように、部外者によって乗っ取られたわけではなく、作成者がソフトウェア ライブラリにコードを追加して、正常に動作しなくなったのです。

3日前、開発者のMarak Squires氏はcolors.jsに「新しいアメリカ国旗モジュール」を追加しました。これは、開発者コンソールで色付きのテキストを簡単に表示できるようにするモジュールです。この新しいコードは、「LIBERTY」という単語とASCIIフラグを開発者コンソールに複数回表示し、無限ループに陥っていました。

6 日前、API テスト用の偽データを生成するために使用される faker.js にも予期しないアップデートが行われました。コードが削除され、コミット メッセージ「endgame」が追加され、ReadMe ファイルが「Aaron Swartz に実際何が起こったのか?」という質問に置き換えられました。

シュワルツ氏は、その活動と悲劇的な出来事でインターネットの伝説的存在でしたが、MITのネットワークから数百万件ものJSTOR文書をダウンロードした罪で起訴された後、約10年前に自殺しました。明日、2022年1月11日は彼の死から9年目の命日となります。スクワイアズ氏は、最近のTwitter投稿で引用されたシュールな陰謀論を好んでいるようです。

レジスター紙はスクワイアズ氏にコメントを求めるメールを送った。スクワイアズ氏は「ちょっと待って」と返事したが、少なくともAppleの広報担当者からいつも聞く言葉よりはましだ。

  • Robloxゲーマーに人気のJSライブラリを装ったランサムウェアの内幕
  • GitHubがNPM JavaScriptパッケージレジストリの認証脆弱性を修正
  • Roblox API コードを装った NPM パッケージがランサムウェアを運んでいたことが判明
  • ソフトウェアスタックのどこかでこの乗っ取られたNPMライブラリを使用している場合は、これを読んでください。

スクワイアズ氏は、インターネットアーカイブのウェイバックマシンに保存されている2021年4月25日のブログ投稿で、faker.jsを収益化しようとする試みについて説明し、懸念をより明確に表明したかもしれない。

「Fakerの開発には誰も資金を提供していません」とスクワイアズ氏は書いている。「最近、Open CollectiveやGithub Sponsorsといったサービスを通じてスポンサーを獲得し始めました。こうした寄付のほとんどは、企業や法人ではなく、開発者仲間からのものです。こうした寄付のおかげでFakerの開発が完全に行き詰まるのを防いでいますが、持続可能なものではありません。」

「Fakerの仕事は楽しいですが、無償で働く余裕はありません。ほとんどの人と同じように、私にも頼りにしている人たちがいて、支払わなければならない請求書もあります。諦めたくなかったので、将来の持続可能な発展のために、Fakerプロジェクトを収益化することが最善の策だと判断しました。」

家賃を払おうとする

彼の主張によれば、当初の計画はfaker.jsをベースにしたクラウドサービスを作ることだったという。しかし、別の企業が彼のオープンソースソフトウェアを使って全く同じ製品を開発していたことが判明したという。The Registerは、彼が名指しした企業にこの件について問い合わせたが、返答は得られていない。

2020年11月、スクワイアズ氏は現在削除されているGitHub Issuesの投稿で、「今後はフォーチュン500企業(およびその他の小規模企業)を無償の仕事でサポートするつもりはない」と述べた。

この事件は、開発者のAzer Koçulu氏が250以上のモジュールをnpmから非公開にした2016年の「left-pad」騒動を思い起こさせる。

開発者は、npmモジュールをアプリケーションに組み込むことで、借用したコードを自ら実装することなく機能を追加できます。しかし、そうすることで依存関係(アプリケーションの動作に必要なモジュールやライブラリ)が追加されます。そのため、これらの依存関係が壊れたり、改変されたり、消失したりすると、多くのアプリケーションやユーザーに問題が生じます。

Faker.js は 2,500 を超える他の npm パッケージに組み込まれており、毎週 240 万回ダウンロードされています。colors.js は 19,000 近くの他の npm パッケージに組み込まれており、毎週 2,300 万回ダウンロードされています。

クラウドマネー

Log4j はサーバーに穴を開けるだけでなく、問題を再び引き起こします。大企業はオープンソースを悪用しているのでしょうか?

続きを読む

開発者コミュニティがこの混乱に注目し、オープンソース プロジェクトの作成と維持のプロセスをより持続可能にするために何ができるのかを改めて声高に問うようになったと言えば十分でしょう。

現在npmレジストリを運営しているGitHubは、Squires氏のアカウントを停止しました。その間も、彼のリポジトリは公開アクセス可能です。The RegisterはGitHubにその理由の説明を求めましたが、返答はありません。また、npmはSquires氏が少なくとも1つのライブラリに加えた変更を元に戻しました。

ソフトウェア監視企業Sentryのエンジニアリングディレクターであり、人気のPythonウェブアプリフレームワークFlaskの開発者であるArmin Ronacher氏は、ブログ投稿で、今回の事件はオープンソースコミュニティが支援を必要としていることを示す新たな兆候だと捉えました。特定のプロジェクトに資金を提供することで支援しようとする取り組みは、必ずしも成功するとは限らないと彼は述べています。多くの財団ライブラリは、他のプロジェクトほど目立たないために無視されてしまうからです。

「オープンソースプロジェクトの資金調達問題を解決する必要があるのは明らかで、GitHubのスポンサーの存在は素晴らしいと思います」と彼は書いている。「しかし、npmや他のパッケージマネージャーにどれだけの人が依存しているかというだけでは、ライブラリの影響を評価するには不十分です。なぜなら、それだけでは全体像を把握できないからです。」®

追加更新

「GitHubはnpmレジストリの健全性とセキュリティを確保することに尽力しています」と同組織はThe Registerに語った。

npmのオープンソース規約に記載されているマルウェアに関する利用規約に基づき、悪意のあるパッケージを削除し、ユーザーアカウントを停止しました。また、セキュリティアドバイザリもこちらで公開しました。

Discover More