npm

研究者らは、NodeJS ライブラリにちなんで名付けられた複数の npm パッケージを発見しました。これらのパッケージには、NodeJS に似た Windows 実行可能ファイルもパックされていますが、代わりに悪意のあるトロイの木馬をドロップします。

これらのパッケージは、そのステルス性と検出率が非常に低いことから、研究者によって検出される前の 2 か月以上にわたって npm 上に存在していました。

探しているノードではありません

ソフトウェア セキュリティ企業 ReversingLabs の研究者は、npmjs.com レジストリに 2 か月間以上潜んでいた 3 つの npm パッケージを分析しました。

合計 1,200 回強ダウンロードされたこれらのパッケージは、次のように呼ばれます。

パッケージ バージョン 総ダウンロード数
ノードjs-暗号化エージェント 6.0.2、6.0.3、6.0.4、6.0.5 521
ノードjs-cookie-プロキシ-エージェント 1.1.0、1.2.0、1.2.1、1.2.2、1.2.3、1.2.4 678
アクシオスプロキシ 1.7.3、1.7.4、1.7.7、1.7.9、1.8.9、1.9.9 23

ReversingLabs の研究者らは、「2 か月以上前に初めて公開されましたが、 nodejs-encrypt-agent は一見すると正規のパッケージのように見えます」とレポートで述べています。

「しかし、矛盾があったため、私たちの研究者は危険信号を出しました。それにもかかわらず、私たちの最初の考えは、このパッケージが悪意のあるものであるはずがないということでした。もし悪意のあるものであれば、npm 管理者によって間違いなく気づかれ、削除されたでしょう。」

nodejs-encrypt-agent は当初、警告を発することはなく、 agent-base のような正規のパッケージの機能をミラーリングしていましたが、それだけではないことが研究者らによって発見されました。

悪意のあるパッケージnodejs-encrypt-agentのnpmページ
悪意のあるパッケージnodejs-encrypt-agentのnpmページ(ReversingLabs)

「しかし、小さいながらも非常に重要な違いがありました。nodejs-encrypt-agentパッケージにはポータブル実行可能ファイル (PE) が含まれており、ReversingLabs によって分析されたところ、悪意のあるファイルであることが判明しました」と研究者らは書いています。

参照されている PE ファイルは Windows 実行可能ファイル「lib.exe」で、サイズは約 100 MB なので、すぐには疑わしいとは思えないかもしれません。

lib.exe は、nodejs-encrypt-agent npm パッケージ内に存在します
lib.exe は、nodejs-encrypt-agent npm パッケージ内に存在します()

このファイルは、 PE ヘッダーとメタデータ、コード、機能に関して実際の NodeJS アプリケーションによく似ています。実際、観察されたところによると、 nodejs-encrypt-agentの特定のバージョンに存在する「lib.exe」実行可能ファイルの亜種の検出率は非常に低かったです。

lib.exe の低い VirusTotal 検出率
特定の「lib.exe」ファイルの VirusTotal 検出率が低い(VirusTotal)

ReversingLabs によって特別に分析されたlib.exeについても同じことが当てはまります。 VirusTotal 分析により、実行可能ファイルがどのように Node.js を模倣し、正規のアプリケーションからの同一のメタデータが含まれているかが明らかになります

悪意のあるパッケージを分析した ReversingLabs の研究者 Igor Kramarić は、nodejs-encrypt-agent内の 1 つまたは複数の JavaScript ファイルに正規の機能が含まれているだけでなく、バンドルされている「lib.exe」を静かに実行するコードも含まれていることを発見しました。

EXEはnpmパッケージ内から実行されます
バンドルされた「lib.exe」を実行する npm パッケージ(ReversingLabs)

「上で観察したように、npm パッケージ内で発見された PE が悪意のあるものであることにほとんど疑問の余地はありませんでした」と ReversingLabs の Lucija Valentić 氏は述べています。

問題の悪意のある実行可能ファイルは、 TurkoRATインフォスティーラーと呼ばれるものを実行していました。これは、検出が困難なカスタマイズ可能な「グラバー」および資格情報スティーラーです。

「観察された悪意のあるまたは不審な動作のリストは長く、感染したシステムからユーザーのログイン認証情報や暗号通貨ウォレットなどの機密情報を盗むことを目的とした機能や、悪意のあるファイルの分析に使用されるサンドボックス環境やデバッガを騙したり無効にしたりする機能が含まれていました。」

TurkoRAT コード
EXE 内にパックされた TurkoRAT コードのスニペット (ReversingLabs)

nodejs-encrypt-agentと同様に、 nodejs-cookie-proxy-agentのバージョンもこのトロイの木馬をドロップしましたが、検出を回避するために間に追加の手順が導入されました。

「lib.exe」を直接バンドルする代わりに、 nodejs-cookie-proxy-agent はaxios-proxy を依存関係としてリストし、前者のパッケージがユーザーによってインストールされるたびにプルされる悪意のある実行可能ファイルを含むのは後者です。

「今回、攻撃者は、 nodejs-cookie-proxy-agentバージョン 1.1.0、1.2.0、1.2.1、および 1.2.2 内にあるすべてのファイルにインポートされた依存関係axios-proxyとして偽装しました」と明らかにしています。研究者たち。

すべての悪意のあるパッケージは、ReversingLabs によって検出された直後に npm レジストリから削除されました。しかし、これらが 2 か月以上 npm 上に残っていたという事実は、精査されていないオープンソース パッケージがソフトウェア サプライ チェーンのセキュリティにもたらす可能性がある継続的なリスクを浮き彫りにしている、と研究者らは警告しています。