NPM リポジトリ汚染:タイポスワッティングで正規のパッケージを偽装

Thousands Download Malicious npm Libraries Impersonating Legitimate Tools

2024/12/19 TheHackerNews — npm レジストリへのアップロードが確認された悪意のパッケージは、正規のパッケージである ”typescript-eslint” や ”@types/node” などを装うものである。それらの偽のパッケージは ”@typescript_eslinter/eslint”/”types-node” と名付けられ、それぞれがトロイの木馬をダウンロードするものとして、また、2段階目のペイロードを取得するものとして設計されている。

Sonatype の Ax Sharma は、12月18日に公開された分析で、以下のように述べている:

このようなタイポスクワッティング攻撃自体は、目新しいものではない。しかし注目に値するのは、これらの2つのライブラリを、正規のものとして偽装するために、攻撃者が費やした労力である。 ”types-node” などのパッケージが、数多くダウンロードされているため、一部の開発者が騙されていると懸念される。この攻撃者は、悪意のコンポーネントの信頼性を高めるために、ダウンロード数を人為的に増やしている可能性もある — Sonatype

Sonatype の分析によると、@typescript_eslinter/eslint の npm リストが指し示すのは、2024年11月29日に作成された “typescript-eslinter“ というアカウントが設定する、偽の GitHub リポジトリである。さらに、この悪意のパッケージには、“prettier.bat“ という名前のファイルが取り込まれているという。

同じ npm/GitHub アカウントにリンクされる別パッケージには、@typescript_eslinter/prettier という名前が付けられていた。それが装うのは、TypeScript という同名のツールだが、実際には偽の @typescript_eslinter/eslint ライブラリをインストールするように設定されている。

この悪意のライブラリに取り込まれたコードは、“prettier.bat“ を一時ディレクトリにドロップし、Windows のスタートアップ・フォルダに追加することで、マシンの再起動時に自動実行を達成するものだ。

Sharma は、「prettier.bat ファイルはバッチ・ファイルではなく、以前に VirusTotal でトロイの木馬/ドロップ型マルウェアとしてフラグが付けられた、Windows 実行ファイル (.exe) である」と述べている。

2つ目のパッケージである types-node は、Pastebin の URL にアクセスする。そして、“npm.exe“ という名前の、悪意の実行型ファイルをトリガーするための、スクリプトを取得するように設計されている。

Sharma は、「この事例が浮き彫りにするのは、サプライチェーンに対するセキュリティ対策の改善が不可欠であり、また、サードパーティであるソフトウェア・レジストリ開発者に対する、監視の強化が急務であるという点だ」と指摘する。

この攻撃スキームは、ReversingLabs が 2024年10月に Visual Studio Code (VSCode) マーケットプレイスで特定した、複数の悪意の VSCode エクステンションから始まっている。翌月となる 2024年11月には、npm レジストリに新たなパッケージが追加されている。このパッケージは、合計で 399回もダウンロードされているという

以下に示す、不正な VSCode エクステンションの一覧は、現在はストアから削除されている。

  • EVM.Blockchain-Toolkit
  • VoiceMod.VoiceMod
  • ZoomVideoCommunications.Zoom
  • ZoomINC.Zoom-Workplace
  • Ethereum.SoliditySupport
  • ZoomWorkspace.Zoom
  • ethereumorg.Solidity-Language-for-Ethereum
  • VitalikButerin.Solidity-Ethereum
  • SolidityFoundation.Solidity-Ethereum
  • EthereumFoundation.Solidity-Language-for-Ethereum
  • SOLIDITY.Solidity-Language
  • GavinWood.SolidityLang
  • EthereumFoundation.Solidity-for-Ethereum-Language

ReversingLabs の研究員である Lucija Valentic は、「このキャンペーンは、暗号通貨コミュニティを標的として始まったものだ。そして、2024年10月末までに公開された悪意のエクステンションの大半は、Zoom アプリケーションを装うものだった。新たに公開された悪意のエクステンションは、それぞれが前回よりも洗練されていた」と述べている。

すべてのエクステンションは npm パッケージと同様に、リモート・サーバーからの第2段階のペイロードのダウンローダーとして動作する、難読化された JavaScript コードを取り込んでいることが判明している。 それらのペイロードの詳細は、現時点においては不明である。

今回の調査結果が改めて浮き彫りにするのは、オープンソース・システムからツールやライブラリをダウンロードする際には、注意が必要だという点である。また、大規模プロジェクトでの依存関係において、悪意のコードを導入しないように注意を払うことも重要だ。

Valentic は、「プラグインをインストールすることで機能を拡張できる IDE (Integrated Development Environment) は、攻撃者にとって非常に魅力的なターゲットとなる。たとえば、VSCode のエクステンションにおいては、そのインストール時に、セキュリティ・リスクの見落としが多発する。そして、IDE が侵害されると、企業の開発サイクルにおいて、さらなる侵害の足がかりにされる可能性が生じる」と指摘している。