2021/08/16

IDE によるサプライチェーン攻撃

Code Java ソース コード プログラム プログラミング 開発

2021 年 8 月 16 日 Trevor Collins 著

先日の Defcon で、Google のセキュリティ研究者である David Dworken 氏は数か月間研究の成果として、さまざまな統合開発環境 (IDE) において 30 件以上の脆弱性を発見したことを発表しました。

多くの人は、コンパイルしたり実行したりしない限りソースコード単体では害がないと考えています。しかし Dworken 氏が示したように、IDE にコードを読み込むだけで感染を引き起こす可能性もあります。北朝鮮がセキュリティ研究者に自作の仮定のエクスプロイト調査を依頼した事例もあります。この事例では、IDE に読み込ませるだけで悪意のあるコードを実行できるコードパッケージが研究者に送られてきました。

Visual Studio Code (VS Code) では、Trusted Workspace と呼ばれる設定用のスコープを使用しています。この設定はプロジェクト内部に由来するもので、VS Code でプロジェクトを開いた際に実行されます。これによるセキュリティリスクの例を以下に示します。VS Code の Python モジュールは、適切なコードを識別するために Flate8 と呼ばれる機能を使用しています。攻撃者はこの機能を用いて Flate8 のパスをフォルダ内の実行ファイルに上書きすることで悪用ができます。その結果、プロジェクトを表示するだけで Flate8 が呼び出され、プロジェクト内の実行ファイルが開かれます。

プロジェクトを開く際に実行されるもうひとつの設定ファイルは、JavaScript VS Code モジュール由来のものです。このモジュールは、プロジェクトの node_modules フォルダにある「jsint」をチェックし、ファイルがあればそれを開きます。攻撃者が「jsint.js」ファイルのディレクトリに悪意のある JavaScript を置くだけで、プロジェクトを開くと同時にそれが実行されるようになります。Dworken 氏はクラウドベースの IDE を含め、他にも多くの同様の脆弱性を発見しました。

Dworken 氏はこれらの脆弱性を利用して、コンピュータに感染したのちに他のリポジトリにコピーを配布するワームを作成して、問題の深刻さを示しました。プロジェクトの更新が自動化されている場合、このような攻撃はエンジニアリング部門全体に瞬く間に拡散する可能性があります。信頼できないコードのプロジェクトについても、信頼できないプログラムと同様に扱ってください。ソースを検証しない限り、プロジェクトは開かないでください。ソースを確認できない場合は、VM (仮想マシン) で慎重にプロジェクトを開いてください。