Skip to content

[security][tools] --offline のネットワーク隔離の残り:help と doctor の文、MPTCP、Linux の pip のキャッシュ、port 不明時の文書、Linux の stdin の試験 #672

Open

Description

@Kewton

背景

#658(PR #671)の merge 前レビュー H-29・H-30 と、リーダーの検証(L-42・L-44、2026-10-13)で見つかった後続の論点のうち、--offline のネットワークの隔離に関わる小さな残りをまとめます。どれも blocker ではありませんでした。
関連:#502、#658、#668(reason の文)、#669(private registry)

問題

  1. CLI の --offline の help と doctor の文が古い:[security][tools] --offline の外向きの通信を OS の隔離で遮断し、runtime の依存の導入を隔離の中で動かす(第 3 段) #658 で、隔離が使えるときは OS が外向きの通信を遮断するようになりましたが、help は今も「Provider/API requests and other network-capable commands are unaffected」と書いています。この文は試験で固定されています。
  2. Linux の MPTCP が未確認:IPPROTO_MPTCP の socket が landlock の ConnectTcp の対象かを、H-29 の Docker(linuxkit kernel、MPTCP 非対応)では確かめられませんでした。
  3. Linux の pip のキャッシュ:macOS は ~/Library/Caches/pip を書き込みの許可に入れますが、Linux の ~/.cache/pip は許可に入っておらず、隔離の中の pip はキャッシュなしで動きます(成功はします)。
  4. port が取れないときの文が cli-reference に無い:dev server の port が goal からも profile からも取れないとき、Linux の --offline は localhost を含めてすべての TCP connect を拒否します。SECURITY.md には書きましたが、cli-reference(en・ja)には書いていません。
  5. 依存の導入の stdin の試験が macOS だけ:Linux は in-place の wrap なので今も正しいですが、退行を捕まえる試験はありません。

根拠(develop 72807847)

  • src/tools/offline_policy.rs:1:CLI_HELP
  • src/cli.rs:711:help の文を固定する試験
  • docs/guide/en/cli-reference.md:81:--offline の表の行
  • src/tools/os_sandbox.rs:778-788:resolve_cache_paths(pip は macOS のパス)

対処の方向

  • help・doctor・cli-reference の --offline の文を「OS が遮断するもの(隔離が使えるとき)」と「字句検査だけのもの」に分けて書き直し、固定している試験を新しい文に合わせる(緩めない)。
  • CI(Ubuntu x86_64、MPTCP が既定で有効)で MPTCP の connect を 1 回 probe し、拒否されなければ UDP と同じく文書の限界に足す。
  • Linux の pip のキャッシュを既知のキャッシュに足すか決める(決定 2「既知のキャッシュだけ許可」の範囲)。
  • cli-reference に port が取れないときの 1 文を足す。Linux の stdin の試験を足す。

受け入れ条件

  • help・doctor・cli-reference の --offline の文が実装と一致し、試験が新しい文を固定している
  • MPTCP の connect の結果を CI で確かめ、記録した(拒否されないなら文書の限界に書いた)
  • Linux の pip のキャッシュの扱いを決め、決定どおりに実装または文書化した
  • Linux の依存の導入の子の stdin が null であることを試験で確かめた
  • 字句検査、検証・受入・証跡のゲートを緩めていない。成長上限の baseline を上げていない

対象ファイル

  • src/tools/offline_policy.rs
  • src/cli.rs
  • src/doctor.rs
  • src/tools/os_sandbox.rs
  • src/tools/os_sandbox/landlock.rs
  • tests/issue502_os_sandbox_network.rs
  • SECURITY.md
  • docs/guide/ja/cli-reference.md
  • docs/guide/en/cli-reference.md

参照

  • H-29・H-30 と L-42・L-44 の記録(ローカル):workspace/tmp/1007/wave1/results/

Activity

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