Malicious VSCode Marketplace extensions hid trojan in fake PNG file

VSCode Marketplace上で19のエクステンションを使用したステルスキャンペーンが2月から活動し、依存フォルダ内にマルウェアを隠して開発者を標的にしていた。

この悪質な活動は最近発覚し、セキュリティ研究者は、運営者が.PNG画像を装った悪質なファイルを使用していることを発見した。

VSCode Marketは、広く使われているVSCode統合開発環境(IDE)用のマイクロソフトの公式拡張ポータルで、開発者はその機能を拡張したり、視覚的なカスタマイズを追加したりすることができる。

VSCodeは人気が高く、サプライチェーンに大きな影響を与える攻撃の可能性があるため、このプラットフォームは進化するキャンペーンを展開する脅威行為者によって常に狙われている。

ファイルとソフトウェアのサプライチェーンセキュリティに特化した企業であるReversingLabsは、悪意のある拡張機能をインストールする際にVSCodeがnpmレジストリから依存関係を取得するのを防ぐために、「node_modules」フォルダが事前にパッケージ化されていることを発見しました。

攻撃者は、バンドルされたフォルダ内に、VSCode IDEの起動時に自動的に実行される’index.js‘ファイル内の追加クラスで、修正された依存関係、’path-is-absolute‘または’@actions/io‘を追加した。

Malicious code added to the index.js file
index.jsファイルに悪意のあるコードが追加される
Source:ReversingLabs

なお、「path-is-absolute」は2021年以降90億ダウンロードを記録した大人気のnpmパッケージであり、兵器化されたバージョンはキャンペーンで使用された19のエクステンションにのみ存在していた。

index.js」ファイル内の新しいクラスによって導入されたコードは、「lock」という名前のファイル内の難読化されたJavaScriptドロッパーをデコードする。dependenciesフォルダに存在するもう1つのファイルは、.PNG(banner.png)ファイルを装ったアーカイブで、「cmstp.exe」と呼ばれるliving-off-the-landバイナリ(LoLBin)とRustベースのトロイの木馬の2つの悪意のあるバイナリをホストしています。

ReversingLabsは、トロイの木馬の全機能を特定するため、現在も分析を続けている。

研究者によると、このキャンペーンにおける19のVSCode拡張機能は、以下の名前のバリエーションを使用しており、すべてバージョン番号1.0.0で公開されています:

  • Malkolmテーマ
  • PandaExpressテーマ
  • プラダ555テーマ
  • Priskinskiテーマ

ReversingLabsがマイクロソフトに報告したところ、すべて削除されたことが確認された。しかし、これらの拡張機能をインストールしたユーザーは、侵害の兆候がないかシステムをスキャンする必要があります。

脅威行為者は、ソフトウェア開発に使用される公開リポジトリでの検出を回避する新しい方法を見つけるため、ユーザーは、特にソースが評判の良いパブリッシャーではない場合、インストールする前にパッケージを検査することをお勧めします。

特に、VS Codeの拡張機能のように、依存関係がパッケージにバンドルされており、npmのように信頼できるソースから取得されていない場合は、依存関係を注意深く確認する必要がある。

.ia_ad { background-color:#width: 95%; max-width: 800px; margin: 15px auto; border-radius: 8px; border:1px solid #d6ddee; display: flex; align-items: stretch; padding: 0; overflow: hidden; }:0; overflow: hidden; } .ia_lef { flex: 1; max-width: 200px; height: auto; display: flex; align-items: stretch; } .ia_lef a { display: flex; width: 100%; height: 100%; } .ia_lef a img { width: 100%; height: 100%; border-radius: 8px 0 0 8px; margin: 0; display: block; } .ia_rig { flex: 2; padding:display: flex; flex-direction: column; justify-content: center; } .ia_rig h2 { font-size: 17px !important; font-weight: 700; color:#line-height: 1.4; font-family:margin: 0 0 14px 0; } .ia_rig p { font-weight: bold; font-size: 14px; margin: 0 0 clamp(6px, 2vw, 14px) 0; } .ia_button { background-color:#border:1px solid #3b59aa; color: black; text-align: center; text-decoration: none; border-radius: 8px; display: inline-block; font-size: 16px; font-weight: bold; cursor: pointer; padding:width: fit-content; } .ia_button a { text-decoration: none; color: inherit; display: block; } @media (max-width: 600px) { .ia_ad { flex-direction: column; align-items: center; } .ia_lef { max-width: 100%; } .ia_lef a img { border-radius: 8px 8px 0 0; } .ia_rig { padding:15px;
width: 100%;
}

.ia_button {
width: 100%;
margin: 0px auto;
}
}

Bitpanda、KnowBe4、PathAIのようなIAMサイロを破壊する

壊れたIAMはITだけの問題ではありません – その影響はビジネス全体に波及します。

この実用的なガイドでは、従来の IAM の慣行が現代の要求に追いつけない理由、「優れた」 IAM とはどのようなものかの例、拡張可能な戦略を構築するための簡単なチェックリストについて説明します。