2016年3月22日、プログラマーのAzer Koçuluは、 npm(JavaScriptのパッケージマネージャーleft-pad)に公開していたパッケージを削除しました。Koçuluは、 Kik Messengerとの紛争の後、すべてのパッケージを削除しました。この紛争では、 npm, Inc.がパッケージ名の管理権をKik Messengerに与えました。その結果、 BabelトランスコンパイラやReactウェブフレームワークなど、依存関係としてを使用していた数千のソフトウェアプロジェクトがビルドまたはインストールできなくなりました。Facebook 、PayPal、Netflix、Spotifyなど、大小さまざまなテクノロジー企業がソフトウェア製品の依存関係としてを使用していたため、これは広範囲にわたる混乱を引き起こしました。kikleft-padleft-pad
パッケージが npm から削除されてから数時間後、プラットフォームを運営する npm, Inc. が手動でパッケージを復元した。その後、npm は、公開日から 24 時間以上経過し、かつ少なくとも 1 つの他のプロジェクトがそれに依存している場合、パッケージを削除する機能を無効にした。この事件はメディアの注目を集め、ソフトウェア業界の人々から反応があった。の削除は、抗議行為としてのソフトウェアのleft-pad意図的な自己破壊に関する議論を促し、モジュール型プログラミングにおけるサプライチェーン攻撃の可能性の高まりに注目が集まった。
left-padは、カリフォルニア州オークランドを拠点とする独立プログラマーである Azer Koçulu によって公開された、無料のオープンソースJavaScriptパッケージです。 [ 1 ]このパッケージは、ループを使用して文字列の先頭に文字を繰り返し追加します。[ 1 ]は非常にシンプルであると特徴付けられており、[ 2 ] [ 3 ] Koçulu が作成した最終バージョンでは、以下に示すように、わずか 11行のコードで構成されています。 [ 4 ]left-pad
module.exports = leftpad ;function leftpad ( str , len , ch ) { str = String ( str );var i = - 1 ;ch || ( ch = ' ' ); len = len - str . length ;while ( ++ i < len ) { str = ch + str ; }return str ; }Koçulu は、 JavaScriptランタイム環境であるNode.jsのデフォルトパッケージマネージャであるnpmleft-padに公開しました。[ 5 ] [ 2 ]比較的知られていないにもかかわらず、このパッケージは広く使用されました。このパッケージは、他の何千ものソフトウェアプロジェクトの依存関係として使用され、削除されるまでに 1500 万回以上ダウンロードされました。[ 6 ] [ 7 ]このパッケージを必要としたプロジェクトの中には、当時 JavaScript エコシステムにとって重要なものがありました。これには、後方互換性のある JavaScript コードを可能にするトランスコンパイラであるBabel、モジュールバンドルシステムであるWebpack 、 Web サイトとモバイルアプリの開発にそれぞれ広く使用されているフレームワークであるReactとReact Nativeが含まれます。[ 8 ] [ 9 ] [ 1 ]left-padleft-pad
left-padKoçuluは、に加えて、kik開発者がプロジェクトのテンプレートを設定できるツールであるnpmも所有していた。[ 1 ] 2016年3月11日、インスタントメッセージングプラットフォームKik Messengerを所有するカナダの企業Kik Interactiveは、kik同社が「Kik」商標を所有しているため、Koçuluにパッケージの管理権を放棄するよう求めた。[ 10 ]やり取りの一部には、Kikからの次のメッセージが含まれていた。
パッケージについて意地悪をするつもりはないの
kikですが、これは世界中のほとんどの国で登録商標です。もしあなたが実際にkikという名前のオープンソースプロジェクトをリリースしたら、私たちの商標弁護士があなたのところにやってきて、あなたのアカウントなどを削除するでしょう。商標権は行使しなければ失効してしまうので、私たちにはそうする以外に選択肢はありません。弁護士を介入させずに、何らかの妥協案を見つけて名前を変更してもらうことはできないでしょうか?名前を変更してもらうために、私たちが何か補償できることはありますか?[ 3 ]
コチュル氏はその後すぐに、プロジェクト名の変更を拒否し、次のように答えた。
ははは、本当に嫌な奴だね。だから、くたばれ。返信メールしてこないで。[ 3 ]
コチュル氏はまた、 「企業のクソ野郎どものために私の個人的なプロジェクトを諦める手間」に対する補償として3万米ドルを要求した。 [ 1 ]
2016年3月18日、npm, Inc.の最高経営責任者であるアイザック・Z・シュルーターは、Kik InteractiveとKoçuluに書簡を送り、kikパッケージの所有権は手動でKik Interactiveに移管されると述べた。[ 1 ]
Koçulu が npm, Inc. の決定に失望を表明し、プラットフォームに参加したくないと述べた後、 Schlueter は、彼が登録した 273 個のモジュールすべてを削除するコマンドを提供した。[ 10 ] Koçulu は 2016 年 3 月 22 日にそのコマンドを実行し、以前にリリースしたすべてのパッケージを削除した。[ 1 ]left-padは「非公開」になったパッケージの 1 つで、npm で一般公開されなくなった。[ 6 ]ソフトウェアleft-padプロジェクトとコンテンツはGitHubで引き続き利用可能だった。[ 10 ]
依存関係として使用されている JavaScript プロジェクト(Babel や Webpack などの依存関係を含む) をビルドまたはインストールしようとしたユーザーは、プロセスが失敗する原因となる404 エラーを受け取りました。 [ 1 ]このパッケージを使用していたソフトウェア テクノロジー企業には、Meta Platforms、PayPal、Netflix、Spotify、[ 9 ]、Kik Interactive 自体などがありました。[ 1 ]left-pad
パッケージを削除してから1時間後、KoçuluはMediumに投稿(「モジュールを解放しました」)し、フリーソフトウェアやオープンソースソフトウェアに対する企業の利益に抗議するため、npmからソフトウェアプロジェクトを非公開にしたと説明した。[ 1 ]
削除後まもなく、他のソフトウェア開発者たちがプロジェクトのGit課題追跡システムに苦情、反応、回避策を大量に投稿し始めた。[ 8 ] [ 1 ]
Babel を含むオープンソース プロジェクトのメンテナーは、Koçulu が非公開にした依存関係を削除するホットフィックスをリリースした。 [ 8 ] Koçulu の他のパッケージ名のいくつかは、すぐに新しく公開されたパッケージに引き継がれた。[ 3 ]例えば、別の開発者がleft-padパッケージを再作成したが、バージョン 1.0.0 としてリリースした。Koçulu はバージョン 0.0.3 として公開していたため、ユーザーは引き続き問題に遭遇した。[ 3 ]
元のleft-padパッケージが削除されてから約2時間後、npmはバックアップを復元することで元の0.0.3バージョンを手動で復元した。[ 1 ] npmの最高技術責任者であるローリー・ボスは、この措置が「正しい判断」かどうかについて社内で意見の相違があったにもかかわらず、同社は「多くのニーズを選んだ」と書いている。[ 11 ]
npm は、公開されたパッケージの削除に関するポリシーを変更し、リリース日から 24 時間以上経過し、かつ少なくとも 1 つの他のプロジェクトがそれを依存関係として必要としている場合は削除されないようにしました。[ 12 ] npm を代表して、コミュニティ マネージャーの Ashley Williams 氏は、この事件によって引き起こされた混乱について謝罪し、プラットフォームがコミュニティを保護することに「失敗した」と述べました。[ 12 ] Kik Interactive もこの事件について謝罪し、同社のメッセージング責任者である Mike Roberts 氏は、Koçulu とのメールのやり取りを Medium に公開し、そのやり取りを「丁寧な依頼」と表現しました。[ 9 ] Roberts 氏は、Koçulu が使用していた名前で npm にオープンソース パッケージを公開したいと考えていたため、最初に Koçulu に連絡したと書いています。[ 6 ] Koçulu 氏は、他の人の作業を妨害したことを申し訳なく思っているが、 「長期的にはコミュニティの利益になる」と信じていたと述べました。 [ 2 ]
この事件は、 Twitter、GitHub、Reddit、Hacker Newsのユーザーからさまざまな反応を引き起こし、多くの人が一時的に「インターネットを破壊した」と主張した。[ 2 ] [ 9 ] [ 10 ] [ 1 ]多くの人が、JavaScript 開発の「迅速に動いて、壊す」文化、オープンソース ソフトウェアの予測不可能な性質、モジュール プログラミングへの過度の依存についてコメントした。[ 2 ] [ 9 ] [ 3 ]また、ユーザーは、法的脅迫により npm が Koçulu のパッケージを Kik Interactive に強制的に移管するという決定に失望を表明した。[ 1 ]
この事件は、npm パッケージの妨害がサプライチェーン攻撃につながる可能性があることを示しました。広く報道されたこの事件に加えてleft-pad、削除された後、多数の個人がすぐに未知のコードで Koçulu の他のパッケージを乗っ取りました。[ 8 ] npm は同様の紛争における悪意のある乗っ取りを防ぐための新しいポリシーを発表しましたが、[ 3 ]この事件は、外部貢献者への過度の依存がソフトウェア製品の攻撃対象領域left-padの拡大につながる例として依然として挙げられています。[ 13 ] Koçulu による意図的な自己妨害は、 npm のようなプラットフォームでプロテストウェアが公開される事件の前兆であるとも言われています。[ 7 ]left-pad