Skip to content

bug(sandbox): Linux 软链接 HOME 下会话定位失败,宿主转发被误判为读隔离 #1313

Description

@Rememorio

现象

Linux 开启文件沙箱后,使用软链接形式的 HOME 启动会话,宿主侧存在的会话在沙箱内无法定位:

  • botmux schedule add "0 12 * * *" "fixture reminder" 提示无法推断 chat-id。
  • botmux history --session-id <current-session> 提示未找到 session。

此外,Linux outbox watcher 合法发起的宿主 botmux send 重执行仍可能报:

botmux send refused: read-isolated owning data-root locator is missing or ambiguous

两个问题相互独立;仅修正会话数据路径不能修复后一个错误。

复现条件

  1. HOME 经目录软链接访问,SESSION_DATA_DIR 保留该软链接路径;会话数据库与每个 bot 的目录位于该 HOME 下。
  2. 启用 Linux bwrap 文件沙箱,创建正常的 bot 会话。
  3. 从会话内运行上述定时任务命令,不显式传入 chat-id。
  4. 对发送链路,令 outbox watcher 保留 origin channel,移除 relay 环境变量并从已记录的 worker 直接重执行 CLI。

已在 v3.19.3 和当前 master 的测试中复现。无需真实飞书凭据即可构造临时目录、会话数据库和受控子进程重现。

原因

  • worker 按 realpath 生成沙箱挂载,但 prepareDirectSandbox 未将 SESSION_DATA_DIR 对齐到这些挂载。新根目录中没有宿主的 HOME 软链接。Linux managed-origin capability / attestation 目录也仍使用未规范化路径。
  • cmdSend 在验证宿主重执行的 worker 父进程绑定之前,就将继承的 origin marker 判为读隔离。合法的 Linux 宿主转发因此提前进入 locator 检查。

期望

会话定位和定时任务存储应与已授权的挂载一致;合法宿主转发应进入现有的精确会话/轮次校验。修复不应扩大读取范围,也不能仅凭 BOTMUX_HOST_RELAY_AUTHORIZED 环境变量信任调用者。改变启动时环境及挂载约定后,旧沙箱 pane 应冷启动一次,避免重连沿用旧状态。

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