広く使用されているJavaScriptパッケージ「UAParser.js」がマルウェアに感染

世界各地で多数のコンピューターにインストールされているnpmパッケージ「UAParser.js」が、パスワードスティーラーとマイナーに感染していました。対策は。

広く使用されているJavaScriptライブラリ「UAParser.js」の複数バージョンが、未知の攻撃者によって、悪意あるコードを注入されていました。UAParser.js開発者のWebページに掲載されている統計によると、このライブラリは多くのプロジェクトで使用されており、毎週600万〜800万回ダウンロードされています(英語サイト)。このサプライチェーン攻撃は、これまでに知られている中でも最大級の規模です。

セキュリティ侵害を受けたのは、UAParser.jsのバージョン0.7.29、0.8.0、1.0.0です。UAParser.jsをお使いの場合は、バージョン0.7.30、0.8.1、1.0.1にできるだけ早くアップデートしてください。

UAParser.js とは何か、なぜそれほど普及しているのか

JavaScriptの開発者は、ブラウザーが送信するユーザーエージェントデータを解析するために、UAParser.jsを使用します。このライブラリは多くのWebサイトに実装されているほか、Facebook、Apple、Amazon、Microsoft、Slack、IBM、HPE、Dell、Oracle、Mozillaなどさまざまな企業のソフトウェア開発プロセスでも使用されています。さらに、ソフトウェア開発の際には、コードテスト用フレームワーク「Karma」のようなサードパーティ製ツールが使われることがありますが、こうしたツールもUAParser.jsに依存しています。そのため、攻撃の規模が拡大しています。

悪意あるコードは何をするのか

このライブラリには、悪意あるコードをダウンロードしてコンピューター(LinuxおよびWindows)上で実行する、悪意あるスクリプトが埋め込まれていました。一つのモジュールは暗号資産(仮想通貨)の採掘を目的とし、もう一つのモジュールはブラウザーのCookie、パスワード、OSの認証情報などの機密情報を盗む機能を持っていました。

しかし、それだけではないかもしれません。米国のCISA(Cybersecurity and Infrastructure Protection Agency)が警告するところでは、セキュリティの侵害されたバージョンのライブラリをインストールすると、感染したシステムを攻撃者が制御できるようになる可能性があります(英語サイト)。

GitHubのスレッド(英語)によると、このマルウェアは、jsextension(Linuxの場合)およびjsextension.exe(Windowsの場合)というバイナリファイルを作成します。これらファイルの存在は、システムのセキュリティが侵害されていることを示す明確な指標です。

悪意あるコードはUAParser.jsにどうやって入り込んだのか

UAParser.jsの開発者であるFaisal Salman氏は、npmリポジトリの自分のアカウントに何者かがアクセスし、UAParser.jsの悪意あるバージョンを3つ公開したと述べています(英語)。同氏は直ちに悪意あるパッケージに警告メッセージを追加、さらにnpmのサポートへ連絡しました。このパッケージはすぐに削除されましたが、オンライン状態であった間に、かなりの数のコンピューターへダウンロードされた可能性があります。

パッケージが公開状態になっていたのは、10月22日の14:15〜18:23(中央ヨーロッパ標準時)の4時間あまりであったようです。その日の夕方、Salman氏は自分のメールボックスに異常なスパム活動があることに気付き、この問題を認識しました。

感染したライブラリをダウンロードしてしまった場合の対処法

悪意あるコードを含むバージョンをすでにダウンロードしてしまっている場合は、直ちに修正済みバージョン(0.7.30、0.8.1、1.0.1)にアップデートしてください。しかし、GitHubのアドバイザリ(英語)では、感染したバージョンのライブラリがインストールまたは実行されたコンピューターは、完全にセキュリティが侵害されたものと見なすべきであるとしています。したがって、そうしたコンピューター上で使用していた認証情報は、すべて変更する必要があります。

一般的に、開発環境やビルド環境は、サプライチェーン攻撃を企む攻撃者にとって格好の標的です。そのような環境には、マルウェア対策が早急に必要です。

ヒント

Windows Downdate攻撃から身を守る方法

Windows Downdateは、最新バージョンのOSを古いバージョンにロールバックさせ、脆弱性が残る状態を復活させ、攻撃者がシステムを容易に侵害できるような状態にする攻撃です。この攻撃のリスクを低減するにはどうしたらよいでしょうか?