NPMのリポジトリにリストされている、広く使用されているNode.jsコードライブラリが改ざんされ、暗号通貨を盗むマルウェアが仕込まれました。問題のライブラリは、event-stream
アプリケーションプログラマーによって週に約200万回ダウンロードされています。
この破壊行為は、ソフトウェアにおいて深く複雑な依存関係の網に依存することの危険性を如実に示しています。チェーン全体にわたって予防措置が講じられていない限り、いずれかのコンポーネントが変更されるだけでアプリのセキュリティが侵害される可能性があります。プロジェクトでevent-stream
何らかの形でこの脆弱性を使用している場合は、テストやデプロイ時に不正なバージョンを取得してインストールしていないことを確認する必要があります。
事の発端はこうです。GitHubで「right9control」という開発者がevent-stream
、別の開発者が構築した を引き継ぐことを申し出ました。その後、JavaScript は一時的に更新され、別のモジュール が追加されました。flatmap-stream
このモジュールは後に、ビットコインを吸い上げるマルウェアを仕込むように改変されました。これにより、サードパーティ製のパッケージをアプリに組み込んでいるユーザーは、そのコードが何をしているのか全く理解していないという懸念が再び高まりました。
時系列はこちらで確認できますが、簡単に言うと、9月9日にright9controlがflatmap-stream
依存関係として を追加しevent-stream
、その後9月16日にコードを独自に実装することで依存関係を削除しました。ただし、この変更はライブラリのユーザーに自動的にはプッシュされませんでした。10月5日には、flatmap-stream
「hugeglass」というユーザーによって が改変され、このソフトウェアを使ってウォレットからビットコインを流出させようとする難読化コードが追加されました。
したがって、10月5日以降、書き換えられたコードではなく、event-stream
呪われた を使用し、プルインした人は、悪意のあるスクリプトの影響を受ける可能性があります。問題のコードは から削除されました。安心してください。この隠されたマルウェアは高度に標的を絞っており、 を使用するすべてのプログラマーやアプリケーションを攻撃するように設計されているわけではありません。flatmap-stream
event-stream
event-stream
フラグが立てられました
カリフォルニア州立大学フラートン校のコンピュータサイエンス専攻の学生、エアトン・スパーリング氏(GitHubではFallingSnow)は先週、GitHub Issuesへの投稿でこの問題を指摘しました。スパーリング氏によると、event-stream
モジュールへのコミットで依存関係として追加されたコードにflatmap-stream
、別のパッケージを標的とするインジェクションコードが含まれていたとのことですps-tree
。
悪意のあるコードは[email protected]
、明らかにDash Copay Bitcoinウォレットからコインを盗もうとするもので、GitHubでホストされており、今週月曜日にNPMのリストから削除されるまで、Node Package Manager (NPM)を通じて配布されていました。
NPMの広報担当者は本日、 The Register宛てにメールで送られた声明の中で、「本日午前9時18分(太平洋標準時)にサブ依存関係flatmap-stream
が非公開となり、本日午前9時30分(太平洋標準時)直後にNPM Inc.がevent-stream
当該パッケージの管理権を取得しました」と述べた。NPMの広報担当者は、この問題は現在調査中であると述べた。
EventStreamは、ニュージーランドを拠点とする開発者Dominic Tarr氏によって開発されました。彼はその後、コードのメンテナンスを中止しました。Tarr氏によると、right9controlからプロジェクトのメンテナンスを引き継ぎたい旨のメールが届き、Tarr氏がもはやプロジェクトのメンテナンスに興味がなくなったため、アクセスを許可されたとのことです。
マルウェアの蔓延:プログラマーに人気のハッキングツールがNPMパッケージ開発者のログイン情報を盗み出す
続きを読む
The Registerは、東京に拠点を置くright9controlに、この人物のGitHubプロフィールが正確かどうか問い合わせたが、返答はなかった。攻撃に使用されたサーバーは、マレーシアのクアラルンプールを拠点とするサービスプロバイダーによって運営されている。right9controlは、このモジュールを使用するためにflatmap-stream
アップデートする際に、ウォレットを狙ったコードを密かに持ち込むために改ざんされることを全く知らなかった可能性もある。event-stream
GitHubのIssue投稿やその他の方法でコメントを投稿した開発者の中には、Tarr氏がコードコミュニティにevent-stream
所有権の変更について適切な通知をしなかったことを批判する者もいる。一方で、ソフトウェアライセンスには責任を明示的に否認する条項があり、保証のないコードを信頼した開発者は自ら責任を負うべきだと主張する者もいる。
The Registerとの電話インタビューで、NPMのセキュリティ担当ディレクターのアダム・ボールドウィン氏は、「まだ完了していない現在の分析に基づくと、初期の兆候はビットコインプラットフォームに対する非常に標的を絞った攻撃であることを示唆している」と述べた。
ボールドウィン氏によると、NPMはまだNode.jsアプリ用の侵害されたコードをダウンロードしたユーザーの数に関するデータを収集していないという。同氏は、flatmap-stream
依存関係を含むEventStreamのバージョン3.3.6が9月9日にリリースされ、悪意のあるバージョンがflatmap-stream
10月5日に登場したことを確認した。
「このペイロードは特定の環境で実行された場合にのみ復号されます」と彼は述べた。「これはこれまで確認された中で最も洗練されたペイロードです。」
しかし、攻撃は非常にターゲットを絞ったものなので、ボールドウィン氏はその影響は最小限になると予想している。
レポデポ
NPMや、PythonのPyPI、RubyのRubyGemsといった他のコードリポジトリは、長年にわたり、パッケージライブラリの侵害問題に対処してきました。自動脆弱性スキャンや報告メカニズムといった防御策は継続的に追加されてきましたが、検証されていないコードを公開する自由がある限り、リスクがなくなる可能性は低いでしょう。
ただし、バージョンの範囲ではなく特定のバージョンが必要となる依存関係の固定が役立つ場合があります。
将来的にこのような状況を回避する方法について尋ねられたボールドウィン氏は、メンテナンスされていないコードとコードの所有権の移転の両方が潜在的な問題を引き起こす可能性があることを認めた。彼は、悪意のあるコードを特定したNPMコミュニティの功績を称え、組織がコードを公開できないほど厳しく規制すれば、コミュニティに悪影響を与えるだろうと述べた。
「メンテナーには、プロジェクトを進めるための能力を与えなければなりません」と彼は言った。「同時に、プロジェクトに多くの目が向けられているコミュニティは素晴らしいのです。」®