Visual Studio Code(VS Code)はソースコード編集ツールであり、拡張機能により、利用者は認証付き遠隔接続プロトコルであるSecure Shell(SSH)を使って別のコンピューター上のファイルを編集できる。2025年2月のFly.ioの記事は、その接続がどのように開始されるかを調べ、遠隔側コンポーネントはより精査に値すると主張している。
記事は、VS Codeを、遠隔環境で利用できるコマンドを使うEmacs拡張機能のTrampと比較している。Fly.ioによれば、VS Codeは代わりにBashスクリプトを段階的に配置してエージェントとNodeのバイナリー版インストールを取得し、そのエージェントをSSH接続経由で実行する。著者によると、エージェントはWebSockets接続、つまり持続的な双方向ウェブ接続を、利用者のコンピューター上で動作しているVS Codeフロントエンドへ向けて確立する。
この設計は、本質的に不用意なものではない。遠隔開発では、ローカル編集ツールがファイルの一覧表示、編集、シェルセッションの開始、その他の拡張機能の実行を遠隔側で行えるよう、接続先コンピューター上にソフトウェアが必要になる。実務上、開発マシンへの接続は、そのマシンの権限の範囲内で動作する権限を編集ツールの遠隔エージェントに与えることを意味する。同じ仕組みはテストやデプロイにも利用できる一方、どのマシンをホストにするかという選択も重要になる。
したがってFly.ioの懸念は、ファイル編集だけに関するものではなく、権限の範囲に関するものだ。同記事が示した説明では、このプロトコルはファイルシステム内を移動し、任意のファイルを変更し、シェル疑似ターミナルを起動し、自身を永続的に残すことができる。疑似ターミナルとは、双方向で操作できるコマンドラインセッションのことだ。これらの能力が最も重要になるのは、接続先が共有されていたり、機密性を要したり、インシデント対応に使われたりする場合であり、記事は特に開発サーバーと本番システムについて、より大きな懸念を明示している。
提供された資料は、実装詳細を独自に検証したものではなく、すべてのVS Code Remote SSH構成に同じリスクがあることを示すものでもない。これは一つの発行元によるアーキテクチャ上の解釈であり、読者側の指摘どおり、遠隔制御こそがこの機能の目的でもあり、SSHアクセスは制限もできる。未解決なのは運用上の問いだ。接続先が意図的に信頼された開発環境かどうかということであり、遠隔編集ツールが遠隔コマンドを発行できるかどうかではない。
