昨年のマルウェア騒動後、守勢に立たされたコードレジストリnpmは、週末に質問する前に先手を打ったが、現在は誤った実行について謝罪している。
数十万ものNode.jsパッケージやその他のJavaScriptライブラリを管理していた管理者が、開発者Vsevolod Strukchinsky氏のアカウント「floatdrop」を誤って削除しました。これにより、同氏がレジストリにアップロードした102個のソフトウェアパッケージを誰も見つけられなくなりました。
コードの消失は開発者の間で警鐘を鳴らした。コードの消失により、Strukchinsky氏のソフトウェアに依存するアプリやその依存関係のデプロイやアップデートがブロックされ、人々が騙されて悪意のあるライブラリをインストールしてしまったのではないかという懸念が広がった。そして、その悪意のあるライブラリは既に削除されていた。しかし実際には、そのライブラリは正規のものであり、誤ってスパムとしてフラグ付けされていたのだ。
npmは日曜日、このエラーの原因は悪意のあるコードを検出するシステムの不具合にあると発表しました。同社は、疑わしいコンテンツや作者をフラグ付けするために静的解析を実行する自動システムを利用しており、特定されたパッケージとアカウントはnpmの担当者によって審査され、サービスを停止するかどうかが決定されると述べています。
npm は週末のブログ投稿で、5 分以内にエラーを検出し、ブロックを解除する作業を開始したと述べたが、npm コミュニティのメンバーが削除はマルウェア関連であると信じ、削除されたパッケージの代替品を独自に公開したため、修復は複雑化した。
1人の開発者がたった11行のJavaScriptでNode、Babel、そして何千ものプロジェクトを破壊した方法
続きを読む
今日、npm は、このミスについてより詳しい説明をしました。これは、スパム フィルタリングの誤検知です。スパマーが floatdrop の正規のtimed-out
パッケージの README ファイルを含むパッケージを公開しました。
「READMEが一致していたため、当社のスパムシステムはfloatdropをスパマーと関連付けてフラグ付けしました」とnpmの最高技術責任者CJ Silverio氏は説明した。「スパム報告の確認と対応の過程で、npmのスタッフがユーザーについてさらに調査することなくこのフラグに基づき、ユーザーとそのすべてのパッケージをレジストリから削除しました。」
スパマーがわざわざこのようなことをする理由は、npmが広く利用されており、人気のあるパッケージは検索エンジンで上位に表示されるからだ、とシルベリオ氏は述べた。そのため、スパマーはスパムメッセージを検索結果に表示させるために、npmパッケージからコードやテキストをコピーすることが多い。
npm チームは、同様の混乱を避けるために、削除されたパッケージの再公開を 24 時間遅らせること、勤務時間外の対応に関する新しいガイドライン、インシデント コミュニケーション ポリシーの改善、従業員が信頼性の低いスパム フラグを精査し、誤って削除されたものを復元するためのツールの改善など、さまざまな措置を講じていると述べています。
パッケージ レジストリは、スパム検出パートナーの Smyte とも協力し、検出プロセスによってスパマーに作業を乗っ取られた人が罰せられないようにしています。
「当社のシステムとプロセスは、スパムの排除と誤検知の削減のバランスをとっています」とシルベリオ氏は述べた。「しかし、人為的なミスから迅速かつ確実に回復するというニーズへの対応が不十分でした。」®