マイクロソフトは、Visual Studio Code で作業中のコードを本当に信頼しているかを尋ねる、押し付けがましいダイアログを擁護している。

Table of Contents

マイクロソフトは、Visual Studio Code で作業中のコードを本当に信頼しているかを尋ねる、押し付けがましいダイアログを擁護している。

Visual Studio Code プログラム マネージャーの Chris Dias 氏は、新しい煩わしい「ワークスペース トラスト」ダイアログについて、「インターネットからコードをダウンロードするときには多くの攻撃の機会があることを認識させる」ためのものだと擁護しました。

先月バージョン1.57で導入されたこの機能は、当初は「見慣れないソースコードを閲覧する際のコード実行に対する追加のセキュリティ」と説明されていた。

この文脈で馴染みのないコードには、開発者が書いたばかりのコードが含まれる可能性があります。例えば、空のフォルダを作成し、readme.txt を追加(または空のままにしておく)し、VS Code でそのフォルダを開くと、エディタに「このフォルダ内のファイルの作成者を信頼しますか?」という恐ろしいダイアログが表示されます。選択肢は「すべての機能を有効にする」か「制限モードでフォルダを参照する」かのどちらかです。

Visual Studio Code を「制限モード」で実行する

Visual Studio Code を「制限モード」で実行する

制限モードでは、「タスク、デバッグ、ワークスペース設定、拡張機能など、いくつかの VS Code 機能の操作を無効化または制限することで、自動コード実行を防止しようとします」とドキュメントに記載されています。

ディアス氏によると、VS Code は「ユーザーに代わってワークスペースからコードを実行し、より充実した開発エクスペリエンスを提供する」機能を備えているが、これにより開発者は「暗号通貨ウォレットの秘密鍵を盗む npm モジュール」などのリスクにさらされることになる。

ディアス氏は、VS Code とその拡張機能がコードを実行する方法は複数あり、その一部は自動化されており、たとえばデバッグ用にプロジェクトをビルドする起動前タスクなどがあり、潜在的に「ビルドとは無関係の任意のコードを実行する追加タスク」が存在する可能性があると指摘した。

Jupyterノートブックは、JavaScript用のLintツールであるES Lintと同様に、コードを実行します。Dias氏によると、当初はこのようなアクションの前に警告を表示するようにしていましたが、その後、異なる目的のために複数のプロンプトを表示するのは、ワークスペース全体に対して単一のプロンプトを表示するよりも不便だと感じました。VS Codeでは、フォルダーを開くことはワークスペースを開くことと同じです。

  • Windows 11 向けの開発: Windows 10 向けの開発と似ていますが、角が丸いのでしょうか?
  • ちょっと待って。Linuxをインストール?RegがMicrosoftの最新Windowsティーザーを解読
  • マイクロソフト:64ビット版Visual Studioの最初のプレビュー版を破ってみませんか?
  • マイクロソフトはLinuxが大好きなので、packages.microsoft.comはダウンし、立ち上がれなくなっています

ディアス氏は、このダイアログの見苦しさを認め、「設定を行わない限り、新しいフォルダを開くたびにかなり大きく表示され続ける」と指摘した。しかし、チームが「パッシブ通知」、つまり明示的に有効にするまで信頼を無効にする設定を試したところ、「パッシブ通知による信頼付与率が非常に低いことが使用データから明らかになった。ユーザー調査では、ユーザーが何かを壊してしまったのではないかと考えながら、ずっと時間を費やしているのが観察された」と付け加えた。

VS Code が初めてフォルダを開くたびに、大きなモーダルダイアログがポップアップ表示されます。

VS Code が初めてフォルダを開くたびに、大きなモーダルダイアログがポップアップ表示されます。

そのため、現在の設計では、1つのモーダルで煩わしいダイアログが用意されており、これを通過すればすべてが有効になります。さらに、「親フォルダ内のすべてのファイルの作成者を信頼する」というオプションもあり、これにより、実質的にプロジェクト全体に対してこの機能を無効にすることができます。また、「設定」→「セキュリティ」には、この機能を完全に無効にするオプションもあります。

フォルダを信頼しないことによる結果:多くの機能が動作しない

フォルダを信頼しないことによる結果:多くの機能が動作しない

VS Codeユーザーがすぐに指摘したように、この機能には問題がある。「#vscode の新しい『ワークスペーストラスト』機能を無効にする方法がわかってとても嬉しかった…コードを信頼していなければ、自分のシステムには存在しないのに」とあるユーザーは言った。「GDPRクッキーバナーの繊細さとクリッピーの魅力を兼ね備えている」と別のユーザーは言った。「#microsoft に #vscode を安全にするように頼むと、こういうのが出てくる。#VistaPrompt」という意見もあった。

Workspace Trustには確かにユースケースがあります。それは、疑わしいコードを安全に閲覧することです。しかし、開発者のPC上のすべてのソースコードが突然デフォルトで信頼できなくなるという考えは奇妙であり、モーダルダイアログは開発者が作業を進めるために確認してしまうような、鈍感な手段です。例えば、現代のJavaScriptプロジェクトは数千ものファイルで構成され、その多くはnode_modulesというディレクトリ以下に埋もれています。それらをすべて人間が確認することは不可能であり、膨大な数の開発者が関与している可能性があります。開発者にこれらの開発者を信頼することを宣言してもらうだけでは、セキュリティが大幅に向上しない可能性があります。

開発者は、機能の改善または削除を求める複数の GitHub の問題の 1 つにコメントし、VS Code が「徐々に、優れたシンプルさから、IT 経験のないユーザー向けに設計された DevOps プラットフォームへと移行している」と不満を述べています。

Workspace Trust は善意に基づいているものの、軽量で邪魔にならないエディターの理念とは一致していないように思われます。

とはいえ、この機能はオプションであり、「インターネットからコードをダウンロードする際の」リスクへの意識を高めるという目標は達成されているかもしれない。ディアス氏は、「皆さんの意見に基づいて、1.58リリースでいくつかの修正と改善を行う」と約束した。®

Discover More