Skip to content

[security][tools] OS の隔離の残り:$HOME の外の toolchain、GUI の delegate の試験と文書、macOS の rename、private registry #669

Open

Description

@Kewton

背景

#656・#657 の実装とレビュー(L-37・H-27・H-28、2026-10-13)で見つかった、文書・CI・環境の小さな残りをまとめます。
関連:#502、#656、#657

問題

  1. toolchain を $HOME の外に置く環境で、Bash の cargo が動かない([security][tools] Bash と検証コマンドの書き込みを Linux の landlock で閉じ込める(第 1 段 b) #656 の前からある)
    • 子に渡す env の許可リストが PATH・HOME・LANG・TERM だけで、RUSTUP_HOME・CARGO_HOME を渡しません。rust の公式イメージのように toolchain を /usr/local/rustup 等に置く環境では、隔離の有無にかかわらず cargo が toolchain を見つけられません(L-37 の Docker で再現。隔離の中では ~/.rustup を作ろうとして Permission denied)。
  2. GUI の delegate の単体試験が CI で走らない:CI の GUI の job は --test gui_server だけを流し、--bin gui_server の単体試験(delegate に --sandbox required を渡す試験)を流しません。
  3. GUI の文書:[security][tools] Bash の字句検査では、プログラム経由の間接書き込みや検証コマンドの副作用を閉じ込められない #502 の判断 1「GUI の delegate は required」で、隔離が使えない環境では GUI の実行が止まることを GUI の文書に書いていません(H-27 の F5)。
  4. macOS のワークスペースの資格情報は、名前を変えると読める:[security][tools] Bash と検証コマンドの、home の秘密の場所の読み取りを OS の隔離で拒否する(第 2 段:読み取り隔離) #657 の読み取りの隔離は名前で判定するので、書き込めるワークスペースの中で .env 等を rename すると読めます(H-28。[security][tools] Bash と検証コマンドの、home の秘密の場所の読み取りを OS の隔離で拒否する(第 2 段:読み取り隔離) #657 で SECURITY.md に限界として明記)。閉じるかを判断します(例:ワークスペースの資格情報に file-write* の拒否も足し、rename と unlink を止める)。
  5. private registry の npm が隔離の中で失敗する:home の .npmrc を拒否するためで、利用者の決定どおりです。required の run での失敗の実績を見て、registry のトークンを Bash 以外から渡す方法を検討します。

根拠(develop 2ab48952)

  • src/bounded_process.rs:91:env の許可リスト
  • .github/workflows/ci.yml:97-98:GUI の job は clippy と --test gui_server だけ

受け入れ条件

  • 1:RUSTUP_HOME・CARGO_HOME を子に渡すかを決め(渡しても書き込みの許可は増えない)、toolchain を $HOME の外に置いたイメージで Bash の cargo --version が隔離の中で動くことを確かめた
  • 2:CI の GUI の job で delegate の単体試験が流れる
  • 3:GUI の文書に、隔離が使えない環境で止まることと、その理由を書いた
  • 4・5:対処するか、限界として残すかを決め、決定を文書に書いた
  • 字句検査、検証・受入・証跡のゲートを緩めていない。成長上限の baseline を上げていない

対象ファイル

  • src/bounded_process.rs
  • .github/workflows/ci.yml
  • src/tools/os_sandbox/seatbelt.rs
  • SECURITY.md
  • docs/ の GUI の文書(ja/en)

参照

  • L-37・H-27・H-28 の記録(ローカル):workspace/tmp/1007/wave1/results/

Activity

  1. Kewton commented on Oct 13, 2026

    @Kewton
    OwnerAuthor

    #658(PR #671)の追記:runtime の依存の導入も隔離の中で動くようになったため、--offline でない run でも、読み取りの隔離が home の ~/.npmrc を拒否します。private registry を使う npm の依存の導入は失敗します。5 番の判断では、Bash だけでなく依存の導入の分も含めて、ワークスペースの .npmrc と token の扱いを決めてください(H-29)。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions