VS Code Marketplaceで19種類の偽装PNG拡張機能が発見されセキュリティ警告

概要

ReversingLabsの研究者たちは、Visual Studio Code (VS Code) Marketplaceにおいて、19種類の悪意ある拡張機能が関与する高度なサプライチェーン攻撃を発見し、セキュリティ警告を発令しました。このキャンペーンは2025年2月から活動しており、2025年12月2日にその実態が明らかになりました。攻撃者は開発者エコシステムの信頼を悪用し、悪意あるマルウェアを機能する拡張機能の依存関係フォルダ内に隠蔽していました。特に注目すべきは、マルウェアをPNG画像ファイルに偽装して隠すという、新しい回避技術が用いられた点です

攻撃の手口

この攻撃は、標準のnpmパッケージのインストールとVS Code拡張機能のアーキテクチャの違いを巧妙に利用しています。通常のnpmインストールでは実行時にリモートレジストリから依存関係がフェッチされますが、VS Code拡張機能は必要な依存関係がすべて含まれたnode_modulesフォルダと一緒にプリパッケージ化されています。攻撃者はこのプリパッケージ構造を悪用し、npmで公式にホストされているパッケージには変更を加えることなく、ローカルバージョンの人気ライブラリ(累積ダウンロード数が90億回を超えるpath-is-absoluteパッケージなど)を改ざんしました。これらの変更はバンドルされた拡張機能内にのみ存在するため、公式のnpmリポジトリは手つかずの安全な状態が保たれ、拡張機能自体が悪意あるコードの運び屋として機能していました

「Banner.png」の偽装

この攻撃の技術的な実行は、改ざんされた依存関係内に埋め込まれた多段階の感染チェーンに依存しています。攻撃者はpath-is-absoluteパッケージのindex.jsファイルを変更し、マルウェアを起動する新しいクラスを組み込みました。このクラスはVS Codeの起動時にコードを実行し、lockという名前のファイルに隠されたJavaScriptドロッパーをデコードします。このドロッパーは、静的解析を回避するためにBase64エンコードと文字列反転によって難読化されていました。

拡張機能が実行されると、デコードされたドロッパーはこれらのバイナリを抽出し、正規のWindows「Living-of-the-Land」バイナリ(LOLBIN)であるcmstp.exeを使用して実行します。一つのバイナリはLOLBINウィンドウを閉じるためにキープレスをエミュレートし、もう一つは現在分析中の複雑なRustベースのトロイの木馬です。

攻撃のバリエーション

発見された拡張機能のほとんどはpath-is-absoluteを悪用していましたが、研究者たちは4つの拡張機能で@actions/ioパッケージを標的としたバリエーションも確認しました。これらのケースでは、PNGによる偽装は使用されず、悪意あるバイナリはTypeScript(.ts)ファイルとソースマップ(.map)ファイルに偽装された別々のファイルに分割されていました。

主要な技術要素

  • path-is-absolute npmパッケージ: 悪意のあるロジックをホストするためにローカルで変更された正規の依存関係。
  • banner.png アーカイブ: Rustトロイの木馬とヘルパーバイナリを含む偽の画像ファイル。
  • lock 難読化ファイル: 反転されたBase64エンコードのJavaScriptドロッパーを含む。
  • index.js スクリプト: lockファイルのデコードをトリガーする変更されたエントリポイント。
  • cmstp.exe LOLBIN: 抽出されたペイロードを実行するために悪用された正規のWindowsツール。
  • @actions/io npmパッケージ: マルウェアを.tsおよび.mapファイルに隠すために使用された代替ターゲットパッケージ。

高まる脅威の状況と推奨事項

このキャンペーンの重要な要素は、「banner.png」というファイルです。これは拡張機能の標準的な画像アセットに見えますが、実際には2つの悪意あるバイナリを含むアーカイブであることがReversingLabsの研究者によって発見されました。この事件は、攻撃者が開発者環境を標的とする広範な傾向を浮き彫りにしています。

ReversingLabsのデータによると、VS Code Marketplaceにおける悪意あるソフトウェアの検出数は、2024年の27件から2025年の最初の10ヶ月間で105件へと、約4倍に増加しています。セキュリティ専門家は、開発チームに対し、特にインストール数が少なく、公開日が新しい拡張機能の厳格な監査を推奨しています。マルウェアは主要な拡張機能コードではなくnode_modules階層の奥深くに潜んでいる可能性があるため、自動セキュリティツールとパッケージ化された依存関係の詳細な検査が、安全な開発パイプラインを維持するために不可欠です。


元記事: https://gbhackers.com/fake-png-extensions/