読者の皆様へ:お客様のご要望に応じて、重要なものを逃すことなく、ノイズを低減できる一連の機能を開発しました。興味のあるトピックを選択して、電子メールとWeb通知を入手してください。
先週、npmレジストリで操作インシデントが発生した。これによって、require-from-string
などに依存する多くのパッケージが利用できなくなった。このインシデントは解決するのは比較的単純であったが、npmを使用してプロジェクトに悪質なコードを挿入するために悪用された可能性のある主要なセキュリティの脆弱性が明らかになった。
公式レポートによると、このインシデントの根本的な原因は、ユーザであるfloatdropを取り除き、彼のパッケージをすべてを発見できないようにブロックするという誤った決定であった。この決定は、スパムを含むパッケージの公開によって引き起こされた。そのパッケージには、floatdropの正当なパッケージであるtimed-outのためのREADMEも含まれていた。READMEとのマッチングにより、npmのスパム対策システムは、floatdropにスパマーとしてフラグを立て、その後ユーザと彼のパッケージすべてを削除した。
npmのスタッフは、floatdropが本当に正当なユーザーであり、彼のパッケージに使用率が高いものがあることに気づき、迅速にすべてが復元するように行動した。しかし、この作業にかかった短い時間で、削除されたものと同じ名前のパッケージが多数公開され、不特定多数にインストールされていた。
npmのスタッフは、これらのパッケージのすべてが悪意のあるものではないことを確認したが、この種のインシデントがnpmユーザーのプロジェクトに悪質なコードを挿入するために悪用される可能性があることを示している。npmには、名前を再利用できないように、パッケージの公開後24時間以内にパッケージが削除されるのを防ぐためのポリシーがあることに注意することが重要である。しかし、このポリシーは以前はスパム対策のためのパッケージ削除には適用されていなかった。これは、スパマーが正規の名前の使用を妨げるべきではないという根拠に基づいている。
このインシデントに対して、npmのスタッフはいくつかのステップを実施した。その中で最も重要なものは、削除されたパッケージ名の再公開に関する24時間のクールダウンの実施であった。それにはスパムコンテンツを含むパッケージを含む。これは事実上、削除されたパッケージを置き換えることによって悪意のあるコードを挿入することを非常に困難にする。しかし、npmのスタッフは、誰かが再利用を試みる前に24時間の枠内で正当なパッケージ名を復元するよう行動する必要がある。
さらに、npmのスタッフは、正当なパッケージが間違って削除される可能性がより低くなるように、いくつかのガイドラインを設定する。それについては、オリジナルの投稿でさらに詳しく読むことができる。
Rate this Article
- Editor Review
- Chief Editor Action