[Security]: SessionControl list enumerates sessions in any workspace without caller-ownership check
- Dominant language
- Rust
- Stars
- 2.2k
- Forks
- 229
- Avg merge
- 2h 46m
- Merged PRs (30d)
- 577
Description
Summary: SessionControl's list action accepts an explicit `workspace` argument and enumerates every session in it without checking whether the caller session belongs to that workspace. A delegated session can therefore enumerate other workspaces' session summaries (ids, names, activity times).
Area: Agent runtime / core
Reproduction or evidence: src/crates/assembly/core/src/agentic/tools/implementations/session_control_tool.rs:653-692 — the List branch resolves the effective workspace (resolve_effective_workspace, which for List accepts any workspace argument) and calls runtime.list_sessions directly; no caller-ownership check exists between resolution and enumeration.
Environment: BitFun version/commit 32f2427697ee16f253ee6119860a03255c0b3e47 (origin/main).
Contributor guide
Research direction
Start in src/crates/assembly/core/src/agentic/tools/implementations/session_control_tool.rs:653-692 and trace the List branch through resolve_effective_workspace to runtime.list_sessions. Check how caller-session ownership is represented and add coverage for delegated sessions listing another workspace; done means such enumeration is rejected while permitted listings still work.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- authorization, security
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 74/100