Once Again, Malware Discovered Hidden in npm
2023/05/19 DarkReading — 人気の npm JavaScript ライブラリ/レジストリに存在する、“nodejs-encrypt-agent” という名前の2つのコード・パッケージに、オープンソースの情報窃盗型マルウェア TurkoRat を含まれていることが判明した。このマルウェアが仕込まれたパッケージを発見した、ReversingLabs の研究者たちによると、2,000 万回以上ダウンロードされている別の正規のパッケージ (agent-base version 6.0.2) への偽装を、背後にいる攻撃者は試みていたという。

長年にわたり npm では、特定タイプの typosquatting が考慮されないことを、脅威アクターが悪用した結果だと、Checkmarx は最新レポートで警告を発している。つまり、企業が不注意にマルウェアをダウンロードし、再配布してしまう可能性があることを示している。
ReversingLabs の研究者たちは、このパッケージに与えられたバージョン番号の不規則性などが、悪意の発見のカギだったと述べている。今回のケースでは、最新のパッケージ・リリースを装い、開発者を騙してダウンロードさせるために、妙に高いバージョン番号 (6.0.2) が使われていた。
ReversingLabs はレポートで、「この脅威アクターは、数百万人の開発者のうちの1人であっても、その人物を騙して悪意のパッケージをダウンロードさせることを望んでいた」と述べている。
npm ライブラリから削除された TurkoRat パッケージは、npm パッケージの “pkg” を利用してファイルを1つの実行ファイルにバンドルし、実行時にアクセスできる仮想ファイル・システムに悪意のファイルを保存していた。
“nodejs-encrypt-agent” は、index.js ファイルに隠された悪意のコマンドを使用して、パッケージの実行直後に起動する、悪意のポータブル実行型ファイル (PE:Portable Executable) を含むことを除いて、ベースとなった “agent-base” モジュールと酷似していることが判明した。
そこに含まれる、一連の悪意のアクションとして挙げられるのは、Windows システム・ディレクトリでの書込/削除および、コマンドの実行や、DNS 設定の改ざんなどである。
悪意の npm パッケージを見分けるには
ReversingLabs の Software Threat Researcher である Lucija Valentić は、悪意のパッケージを特定する方法はたくさんあると述べている。
彼女は、「パッケージ・リポジトリにはソースコードが含まれている。したがって、最も簡単な方法の1つは、それを手動で検査することだ。また、パッケージを隔離された環境でインストール/実行し、異常な動作を検査することもできる」と説明している。
たとえば、ネットワークに関連しないパッケージ内でのネットワーク・リクエストなどは、つまり、それらのパッケージで宣言/予期されていない、場違いなコンテンツや動作に関しては、再検証する必要があるだろう。
さらに Lucija は、「特定の機能を実装するために、外部依存が必要かどうかを、常に確認する必要がある。その機能が簡単なものであれば、検証されていないコードをプロジェクトに導入するよりも、自分で書いた方がよいかもしれない。もし、本当にライブラリを使用する必要がある場合には、そのライブラリの名前と評判を確認し、正しいライブラリが含まれていることを確認するために、コードをレビューしてほしい」と述べている。
ソフトウェア・サプライチェーンの脅威
新たに発見された悪意のパッケージ “nodejs-encrypt-agent” のダウンロード数は、2ヶ月間で約 500 回だった。この件数は、”nodejs-cookie-proxy-agent” の 約 700 回と比べると少ない。
しかし、このレポートは、「そうであっても、TurkoRat を実行する悪意のパッケージが、未知数の開発者マシン上における、悪意の原因にあるのは間違いない。また、その悪性化による長期的な影響を測定することも困難だ」と警告している。
npm/NuGet/PyPI に対する、自動化されたサイバー攻撃のエスカレートが浮き彫りにするのは、脅威アクターたちの高度化と、オープンソース・ソフトウェアのサプライチェーンの危機である。パッケージやカウントの作成において、自動化されたプロセスが使用されているため、セキュリティ・チームがパッケージを特定し、ダウンさせるにしても、物理的に追いつかなくなってきている。
2023年3月には、.NET コード・リポジトリに存在する、十数個の悪意のコンポーネントが、Coinbase /Microsoft ASP.NET といった、正規のソフトウェアになりすまし、インストール時の警告やアラートを回避しながら、悪質なスクリプトを実行していたことが発見された。
2022年7月には、JavaScript の難読化を用いる、24種類以上の悪意の npm パッケージを介して、複数のサイトやアプリからフォームデータを盗み出すキャンペーンが、ReversingLabs のアナリストたちにより発見している。
Google などの Tech 企業 は、オープンソース・ソフトウェアのサプライチェーンのセキュリティを強化するために、さまざまな措置を講じている。たとえば、開発者が利用を検討するパッケージについて、各種の情報を提供する deps.dev API も、その一例である。また、Google 社内でオープンソース・パッケージを使う際のワークフローを、ユーザー組織にも組み込むことができる Assured OSS も提供されている。
文中でも紹介されているように、すでに Google では Assured OSS サービスにより、Java/Python エコシステムへのサポートを開始しています。それほどまでに、npm/PyPI/GitHub などの汚染が進んでいるわけです。よろしければ、DevSecOps ページも、ご利用ください。
2023/02/22:Npm に大量の悪意のパッケージ
2023/02/10:NPM に悪意のパッケージ aabquerys
2023/02/01:NPM に悪意のパッケージ:bloxflip に要注意

You must be logged in to post a comment.