Files
odysseus/docs/discovery/domains/security.md
T
2026-07-26 12:44:34 +01:00

6.2 KiB

Security

Features in this document are generated from ../feature-catalog.json, the canonical inventory.

SECURITY-001 — Authentication, Session Cookies & User Management

  • Domain: security
  • Status: verified
  • Evidence Maturity: E0
  • Commit Verified: d8a2059df8e53bc7275c45339849d14c8651e73c
  • Runtime Validation: not-required — No separate environment-dependent runtime validation was identified during this documentation pass.

Purpose

Handles bcrypt password hashing, session cookie issuance, authentication enforcement, and user administration.

Evidence summary

  • routes/auth_routes.py@router.post('/login') — Authenticates credentials and sets session cookie.
  • core/auth.pyAuthManager — Handles user creation, password verification, and session tokens.

Unknowns

  • Cookie session hijack if deployed over unencrypted HTTP without HTTPS cookie flags.

SECURITY-002 — System Vault Encrypted Secret Storage

  • Domain: security
  • Status: verified
  • Evidence Maturity: E1
  • Commit Verified: d8a2059df8e53bc7275c45339849d14c8651e73c
  • Runtime Validation: pending — Requires installed Bitwarden CLI (bw) executable.

Purpose

Encrypts API keys, passphrases, and third-party secrets on disk using AES-GCM / PBKDF2 key derivation.

Evidence summary

  • routes/vault_routes.pysetup_vault_routes — Admin routes for vault configuration, login, unlock, lock, and logout.
  • src/secret_storage.pySecretStorage — Fernet symmetric key DB secret encryption.
  • tests/test_vault_password_not_in_argv.pytest_bw_password_not_in_argv — Verifies master password is fed via stdin and never appears in process argv.

Unknowns

  • Loss of vault master passphrase renders all encrypted secrets permanently unrecoverable.

SECURITY-003 — API Token Management & Scope Access Control

  • Domain: security
  • Status: verified
  • Evidence Maturity: E0
  • Commit Verified: d8a2059df8e53bc7275c45339849d14c8651e73c
  • Runtime Validation: not-required — No separate environment-dependent runtime validation was identified during this documentation pass.

Purpose

Generates scoped API bearer tokens (read/write/admin) for external tool and script authentication.

Evidence summary

  • routes/api_token_routes.pysetup_api_token_routes — Exposes API token creation, scope assignment, and revocation.
  • core/database.pyApiToken — SQLAlchemy ORM schema for API tokens and permissions.

Unknowns

  • Leaked API bearer tokens with excessive permission scopes.

SECURITY-004 — Prompt Security & Injection Defense Engine

  • Domain: security
  • Status: verified
  • Evidence Maturity: E1
  • Commit Verified: d8a2059df8e53bc7275c45339849d14c8651e73c
  • Runtime Validation: not-required — No separate environment-dependent runtime validation was identified during this documentation pass.

Purpose

Scans system prompts and external inputs for prompt injection attempts, jailbreaks, and sensitive data leaks.

Evidence summary

  • src/prompt_security.pyuntrusted_context_message — Wraps untrusted context with guard delimiters and sets metadata.trusted = False.
  • src/tool_security.pyNON_ADMIN_BLOCKED_TOOLS — Enforces tool execution safety for non-admin user roles.
  • tests/test_skill_index_prompt_injection.pytest_skill_index — Verifies skill index descriptions cannot leak into trusted system prompts.
  • tests/test_tool_output_prompt_injection.pytest_tool_output — Tool output injection guards.

Unknowns

  • False positives blocking legitimate complex coding or security prompts.

SECURITY-005 — URL & Path Confinement Security Guards

  • Domain: security
  • Status: verified
  • Evidence Maturity: E1
  • Commit Verified: d8a2059df8e53bc7275c45339849d14c8651e73c
  • Runtime Validation: not-required — No separate environment-dependent runtime validation was identified during this documentation pass.

Purpose

Prevents SSRF attacks and path traversal by validating target IP addresses and resolving symlinks.

Evidence summary

  • src/url_safety.pycheck_outbound_url — Rejects non-HTTP(S) schemes, link-local, cloud metadata SSRF addresses.
  • src/url_security.pyvalidate_public_http_url — Validates public-facing endpoints.
  • tests/test_url_safety.pytest_url_safety — Scheme validation, cloud metadata SSRF rejection, IP classification.
  • tests/test_tool_path_confinement.pytest_path_confinement — Path traversal checks.
  • tests/test_workspace_confine.pytest_workspace_confine — Workspace confinement checks.

Unknowns

  • DNS rebinding attacks if IP address is re-resolved post-validation.

SECURITY-006 — HTTP Security Headers Middleware

  • Domain: security
  • Status: verified
  • Evidence Maturity: E0
  • Commit Verified: d8a2059df8e53bc7275c45339849d14c8651e73c
  • Runtime Validation: not-required — No separate environment-dependent runtime validation was identified during this documentation pass.

Purpose

Injects standard OWASP HTTP security headers (CSP, HSTS, X-Content-Type-Options, X-Frame-Options).

Evidence summary

  • core/middleware.pySecurityHeadersMiddleware — Sets strict security headers and CSP nonces on HTTP responses.

Unknowns

  • Strict Content Security Policy (CSP) blocking third-party embedded web resources.

SECURITY-007 — Admin System Data Wipe ('Danger Zone')

  • Domain: security
  • Status: verified
  • Evidence Maturity: E0
  • Commit Verified: d8a2059df8e53bc7275c45339849d14c8651e73c
  • Runtime Validation: not-required — No separate environment-dependent runtime validation was identified during this documentation pass.

Purpose

Provides administrative reset operations to wipe sessions, cache, uploaded files, or factory reset state.

Evidence summary

  • routes/admin_wipe/admin_wipe_routes.py@router.delete('/wipe/{kind}') — Executes systemic data wipe based on requested scope.

Unknowns

  • Accidental catastrophic data loss if triggered without user confirmation.