読者の皆様へ:ノイズを減らすための一連の機能を開発しました。関心のあるトピックについて電子メールとWeb通知を受け取ることができます。新機能の詳細をご覧ください。
NPMのセキュリティチームは、実際に悪意のあるバックドアを含んでいた、Cookieパーサになりすましているパッケージを、それに依存する他の3つのパッケージとともに削除した。バックドアにより攻撃者は実行中のサーバに任意のコードをインジェクトして実行することができた。
NPMの報告によると、getcookies
パッケージには、gCOMMANDhDATAi
としてフォーマットされたデータを探してHTTPヘッダーをパースした悪質なコードが含まれていたことが確認された。3つの異なるコマンドが利用できた。
0xfffe
でコードバッファをリセットする。0xfffa
でバッファにあるコードを実行する。これは、vm.runInThisContext
を実行することで達成される。デフォルト
では、実行のためにリモートコードをメモリにロードする。
getcookies
と共に、他の3つのパッケージがレジストリから削除された。それは、express-cookies
、http-fetch-cookies
、および廃止予定であったが広く使われているmailparser
である。
NPMスタッフは次のとおり述べている。
npm Registryに公開されたパッケージには、バックドアを引き起こすような悪質なモジュールを使用したものは1つもありません。
しかし、悪質なパッケージを使用する外部アプリケーションが悪用される可能性がある。
一連の騒動について不可解な点として、mailparser
パッケージは、今も毎週約64,000件ダウンロードされているが、どのような方法でも悪質なモジュールを使用していなかった。 NPMのセキュリティチームによると、これは将来の攻撃を実行するための準備段階であると説明できる。あるいは、get-cookies
とhttp-fetch-cookies
の評判を高めてより多くの開発者がそれをもっと使うように仕組む方法であると説明できる。
この発表により、Node開発者の間で多くの反応があった。この種の問題はNPMも例外でないことが一般的に認められているが、NPM特有の特徴によって実際にそのような問題が発生する可能性がより高いとのコメントがあった。特に、NPMパッケージの役割が小さく、最小限の機能セットに焦点を当てる場合、一般的にはアプリケーションは非常に多数の外部モジュールに依存し、それは数百に上る場合も多い。その場合、すべての依存関係を監査して、それらがすべて合法であることを保証することが特に困難になる。さらに、NPMを使用すると、開発者は最小のバージョンで依存関係を表現できる。例えば、mailparser@^2.2.0
は、メジャー番号を変更しない上位バージョンは互換性があるとみなされ、npm install
を実行するとインストールされる。これにより、依存関係の監査がさらに困難になる。
mailparser
のように、もはや管理されておらず、数か月間更新されなかったパッケージが、未使用の依存関係を含む3つの新しいバージョンを取得する方法は明らかでない。さらに、mailparser
GitHubリポジトリには、NPMに公開された悪意のあるバージョン2.2.1、2.2.2、2.2.3に変更された形跡がない。したがって、mailparser
の作者が悪意のある依存関係を追加するように仕組まれたか、未知のNPMの脆弱性が悪用されて、作者が知らないうちに新しいバージョンを公開したかは分からない。InfoQはこの件について、詳しい情報が新しく入り次第、報告する。
Rate this Article
- Editor Review
- Chief Editor Action