Windows sandbox: toolchain access is granted on the shared Program Files folder itself

クローズ
#207 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
55/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
typescript
領域
desktop, security

調査の方向性

Start by reading native/sandbox-helper/src/win.rs, especially the ACL grant near line 1732 and recovery around line 1646; trace how Program Files toolchains are selected for staging versus a shared-folder grant. Compare the proposal's staging default, narrower bin grant, and launch-time recovery options. Done means the chosen approach limits access to the necessary files and cleans up any temporary permissions after forced termination.

索引モデルが issue の本文から書いたものです。

説明

enhancement platform: windows priority: low security severity: low

From Finding 1 of the earlier SECURITY-REVIEW.md, checked against the current code on 2026-10-07.

Problem

When a Program Files toolchain folder isn't readable by app containers but its permissions are writable, the helper grants that run's container SID FILE_READ_EXECUTE on the shared install folder itself (native/sandbox-helper/src/win.rs:1732: edit_acl(&plan.source, sid, FILE_READ_EXECUTE, Change::Grant)). The grant is inherited by everything below it. It is revoked at cleanup, or by recovery at the next helper start after a forced kill (record.granted, win.rs:1646).

Impact (bounded)

  • While the command runs, it can read every file in that install folder, not just the toolchain's public files.
  • After a forced kill, the ACE stays until the next helper start. The SID is unique per run, so no later process gets that access. The leftover is clutter on a system folder rather than an open door.

Proposal

Make staging (the private read-only copy, already used for protected installs) the default for Program Files toolchains, and keep the shared-folder grant as a last resort. Or grant only the smallest folder needed (for example bin). Optionally start a recovery pass when the app launches, so a forced kill leaves no ACE behind until the next command.

主要言語
TypeScript
スター
2
フォーク
2
PR マージ指標
30日以内にマージされた PR はありません

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。