GHSA-763v-5pjm-fx36Medium▾ SunlitStrands Agents: Default FileSessionManager storage is world-readable on shared systems
▾ Sunlit zone — Low / medium · no exploitation signal
impact 27.5 · likelihood 0 · exploitation 0
Need a working PoC? Pro members can cast a request and our team develops one — it lands right here.
There is a local confidentiality issue in the default FileSessionManager storage behavior. By default it writes session data under /tmp/strands/sessions and relies on the process umask for directory and file permissions. On systems using the common umask 022, the session directories are 0755 and JSON files are 0644, so other local users can read persisted agent session data.
This matters on shared developer machines, CI hosts, notebooks, jump boxes, and multi-user GPU servers. Session storage is intended to persist conversation/history/state, so it can contain prompts, model output, tool inputs/outputs, intermediate state, and secrets that pass through the agent.
Relevant code:
strands-py/src/strands/session/file_session_manager.py:58: default storage path is os.path.join(tempfile.gettempdir(), "strands/sessions").strands-py/src/strands/session/file_session_manager.py:118: creates parent directories without a private mode.strands-py/src/strands/session/file_session_manager.py:121: writes JSON files via normal open(..., "w").strands-py/src/strands/session/file_session_manager.py:131: creates session directories without a private mode.Local reproduction with umask 022:
default_storage_dir= /tmp/strands/sessions
0o755 /tmp/strands/sessions
0o755 /tmp/strands/sessions/session_codex_perm_poc
0o644 /tmp/strands/sessions/session_codex_perm_poc/session.json
file_contains_secret= True
The fixture wrote a fake secret into the session dict to show that sensitive session fields are readable through the resulting file.
Suggested fixes:
/tmp, or create /tmp/strands and descendants with 0700.0600 permissions.storage_dir explicitly when they need shared storage.This was reproduced on commit dd7b41de38cb.
strands-agents < 1.48.0Upgrade to a patched release:
strands-agents 1.48.0Connected by shared product, vendor, weakness, or advisory.
GHSA-3w55-933p-8pv5High· 7.1Strands Agents: Local Privilege Escalation via Symlink Attack in Default Session File Storage
CVE-2026-115419High· 8.1Strands Agents SDK: Exposure of data element to wrong session in the A2A Server
CVE-2024-1488High· 8.0A vulnerability was found in Unbound due to incorrect default permissions, allowing any process outside the unbound group to modify the unbound runtime configuration
CVE-2025-8766Medium· 6.4A container privilege escalation flaw was found in certain Multi-Cloud Object Gateway Core images
CVE-2022-24769Medium· 4.8moby: Default inheritable capabilities for linux container should be empty (CVE-2022-24769)
CVE-2026-53870Medium· 5.5Hermes Agent before 0.16.0 creates response_store.db and webhook_subscriptions.json with world-readable permissions (mode 0o644), exposing conversation history and HMAC secrets to local users