直ちにセキュリティインシデントとして対応するようCISOに勧告;研究者は「これまでで最も高度なサプライチェーン攻撃の一つ」と警告、現在も拡大中。
自己増殖型ワームがオープンソースNPMコードリポジトリで発見されてから1か月後、同様のワームがVisual Studio Code拡張機能をターゲットにしたオープンマーケットプレイスで発見されました。
イスラエルのKoi Securityの研究者によると、このマルウェアは「GlassWorm」と名付けられ、OpenVSXおよびMicrosoft VS Codeマーケットプレイスの拡張機能で発見されました。
「これは私たちがこれまでに分析した中で最も高度なサプライチェーン攻撃の一つです」と研究者は警告します。「そして、今まさに拡大しています。」
感染した拡張機能がコードに組み込まれると、開発者が作業中に残したNPM、GitHub、Gitの認証情報を収集し、49の暗号通貨ウォレットから資金を抜き取り、開発者のコンピュータにSOCKSプロキシサーバーを展開し、リモートアクセス用の隠しVNXサーバーをインストールし、盗んだ認証情報を使ってさらに他のパッケージや拡張機能を侵害します。
報告によれば、先週OpenVSXの7つの拡張機能が侵害され、35,000回以上ダウンロードされました。さらに、週末にはVS Codeマーケットプレイスでも別の感染した拡張機能が検出されました。
拡張機能内のワームは、古い手法を使って検知を回避します。つまり、Unicodeバリエーションセレクタで書かれたマルウェアを含めるのです。これらはUnicode仕様の一部である特殊文字ですが、視覚的な出力はありません。
「コードレビューを行う開発者には、空白行やホワイトスペースのように見えます」とKoi Securityは述べています。「不審なコードをスキャンする静的解析ツールには、何もないように見えます。」しかし、JavaScriptインタプリタには実行可能なコードとして認識されます。
「CISOは、開発者がVS Codeを利用している場合、これを直ちにセキュリティインシデントとして扱うべきです」と、カナダのセキュアコーディング研修コンサルタントSheHacksPurpleの代表Tanya Janca氏は述べています。
「拡張機能はVS Codeの全権限を継承するため、一度インストールされると認証情報の窃取、ソースコードの外部送信、リモートコマンド&コントロール(例:VNCやSOCKSプロキシ経由)を可能にします。リスクレベル:非常に高い。」
CISOは直ちにインシデント対応プロセスを開始し、どの企業アプリケーションがVS Codeを使用しているか、どの拡張機能が含まれているか、既知の影響リストに該当するものがないかを棚卸しする必要があると彼女は述べました。
また、特に研究で言及されている不審な外部接続やプロセス、承認されていないVNCサーバー、長時間稼働するSOCKSプロキシプロセスなど、アプリケーションの不審な挙動を監視すべきだと付け加えました。
開発者への教育を
その間、Janca氏はすべてのアプリケーションの自動更新を無効化し、全開発者に状況と注意すべき拡張機能について教育することを推奨しています。
「OpenVSXレジストリおよびその他の信頼できない/不明なマーケットプレイスへのアクセスを恒久的にブロックしてください」と彼女は助言します。「開発者には開発ツールからログアウトし、再起動させてください。再ログイン前に漏洩した可能性のある認証情報はすべて失効・ローテーションしてください。」
通常のインシデント対応手順に従ってください、と彼女は締めくくりました:検知、封じ込め、根絶、復旧。
標的となったマーケットプレイス
Koi Securityの報告は、脅威アクターがVS Codeマーケットプレイスをサプライチェーン攻撃の標的としていることを警告する一連の最新事例です。先週、Koi SecurityはTigerJackと呼ばれる脅威アクターによる悪意ある拡張機能の拡散を明らかにしました。また、Wizの研究者もOpenVSXとVS Codeマーケットプレイスの広範な悪用を示す研究を発表しました。
Unicodeを使ってマルウェアを隠す手法は、先月にもRadwareの研究者によって明らかにされており、ChatGPTの侵害に使われていることが判明しました。
これらの報告は驚くべきことではありません。開発者が他者のアプリケーションで利用できるコードをアップロードできるオープンコードマーケットプレイスは、長年にわたり脅威アクターによる悪意あるコード挿入の手段として標的にされてきました。そのコードは開発者や顧客の環境に拡散し、認証情報やデータを盗みます。これらは総称してサプライチェーン攻撃と呼ばれます。
特に標的となっているリポジトリには、GitHub、GitLab、NPMなどがあります。
Microsoftは開発者がVisual Studio Codeに拡張機能やテーマを追加できるようにしており、開発者の利便性や機能拡張を図っています。拡張機能はデバッガーや新しい言語、その他の開発ツールなどの機能を追加でき、テーマはエディタの外観(色やフォントなど)を変更する拡張機能の一種です。
ブロックチェーンを活用
Koi Securityの研究者は、OpenVSXでCodeJoyという開発者向け生産性ツールの拡張機能のアップデートで不審な挙動をリスクエンジンが検知したことで、ワーム感染した拡張機能を発見しました。CodeJoyは数百回ダウンロードされていましたが、バージョン1.8.3で不審な動作変更が導入されていました。ソースコードには、コードエディタでは表示できない印刷不可能なUnicode文字でエンコードされた悪意あるコードが、巨大な空白のように見える形で含まれていました。
さらに悪いことに、このマルウェアはコマンド&コントロール(C2)インフラとしてパブリックなSolanaブロックチェーンを利用し、特に暗号通貨ウォレットのログイン情報を狙っています。また、バックアップのC2手段としてGoogleカレンダーイベントにもアクセスします。
盗まれたNPM、GitHub、Git、OpenVSXの認証情報も、マルウェアがワームとして拡散するのに役立っています。
最終的にこのマルウェアは、被害開発者のワークステーションにリモートアクセス型トロイの木馬を注入し、SOCKSプロキシサーバーに変えてしまいます。ワークステーションは組織のITシステムへのアクセスに利用され、内部ネットワークへのアクセスポイント、持続的なバックドア、他の内部システムへの攻撃やデータ流出のプロキシとなります。
開発者は「主要な標的」
開発者は近年攻撃の主要な標的になっていると、SANS Institute研究部長Johannes Ullrich氏は指摘します。多くの開発者が気づいていないのは、どんな拡張機能でも一見無害に見えても、自分のコードに完全にアクセスでき、開発者に明示的に通知することなく変更を加える可能性があるということです。
CISOは開発ツールのセキュリティ確保に関する議論に開発者を含める必要があると彼は助言します。許可するツールを制限しすぎると、開発者は業務を進めるために回避策を見つけてしまうことが多いため、逆効果になることもあります。セキュリティ部門は、開発者が必要なツールを安全に使えるよう協力し、エンドポイント保護製品は開発者特有の利用パターンをサポートするよう調整する必要があります。
これは単なるサプライチェーンの問題ではないと、Team CymruのフィールドCISO Will Baxter氏は述べています。これはサイバー犯罪ツール、ブロックチェーンの耐障害性、開発者ツールのピボットを融合した新たなインフラ層です。レジストリ運営者、脅威研究者、ブロックチェーン監視パートナーは、こうしたハイブリッド攻撃を特定するためにインテリジェンスを共有し、より緊密に連携する必要があると彼は付け加えました。
CSOへのさらなる助言
Janca氏は、サプライチェーン攻撃のリスクを低減するために、セキュリティリーダーやアプリケーションセキュリティ担当者は以下を実施すべきだと述べています:
- 攻撃対象領域を可能な限り減らす:実際に使用する機能やソフトウェアのみをインストールし、使っていないVS Code拡張機能はアンインストールし、コードから未使用の依存関係をすべて削除すること;
- 全従業員のワークステーションを異常な挙動について監視し、特にソフトウェア開発者など特権アクセスを持つ者に注力すること。
- 特に開発者マシンについて、IDとアクセス管理に最小権限を適用すること
- ソフトウェアサプライチェーンの変更を含む、迅速かつ効率的な変更管理プロセスを実装すること;
- 開発者に安全なコーディング、サプライチェーンの保護、インシデント対応時の役割について教育し、将来このような問題を未然に防ぐ、あるいはより迅速かつ適切に対応できるようにする
リスクを低減し、セキュリティインシデントになる前に問題を発見できる各種セキュリティスキャンツール(拡張機能スキャナー、シークレットスキャナー、サプライチェーンセキュリティツール(SCAやSBOM)、エンドポイント保護など)を活用すること; - 適切なシークレット管理のベストプラクティスを遵守し、このような悪意あるパッケージによる認証情報の収集を防ぐこと;
- 組織内で使用するリポジトリやマーケットプレイスなどは承認済みのものだけに限定すること。未知または信頼できない場所からのコード、パッケージ、イメージ、拡張機能のダウンロードはすべてブロックすること;
- サードパーティコンポーネントやコードだけでなく、ソフトウェアサプライチェーン全体を強化すること。これにはCI/CD、開発者IDEやワークステーション、アーティファクトなどへのアクセスの定期的な更新と制限も含まれる。
- 多くの人が依存している非常に安全性の低いオープンソースソフトウェアエコシステムに対し、政府が解決策を提供するよう働きかけること。または、クローズドソースの開発言語やフレームワークを優先すること。ただし、彼女はこのケースでは.NetはクローズドソースだがVS Code Marketplaceはそうではないため、効果はなかったと認めています。
本記事は元々InfoWorldに掲載されたものです。