VYPR
Unrated severityNVD Advisory· Published Jun 17, 2026· Updated Jun 17, 2026

Hermes WebUI < 0.51.443 - Broken Access Control in /api/session Endpoint

CVE-2026-55197

Description

Hermes WebUI before 0.51.443 contains a broken access control vulnerability in the /api/session endpoint that allows authenticated users to disclose cross-profile session transcripts. Attackers can bypass profile boundary checks by directly querying session IDs belonging to other profiles via GET /api/session?session_id=<foreign_id>&messages=1 to retrieve unauthorized conversation transcripts and metadata.

AI Insight

LLM-synthesized narrative grounded in this CVE's description and references.

Affected products

1

Patches

Vulnerability mechanics

Root cause

"Missing profile boundary check in by-id session detail endpoints allows cross-profile session transcript disclosure."

Attack vector

An authenticated attacker can bypass profile boundary checks by directly querying a known or guessed session ID belonging to another profile via `GET /api/session?session_id=<foreign_id>&messages=1` to retrieve unauthorized conversation transcripts and metadata. The same issue affects `GET /api/session/export?session_id=<foreign_id>` for full transcript JSON downloads. The `/api/sessions` list endpoint already scoped its rows to the active profile, but the by-id detail endpoints did not apply the same check, making them vulnerable to cross-profile information disclosure [ref_id=1].

Affected code

The vulnerability exists in `api/routes.py` in the `handle_get` function (for `GET /api/session`) and the `_handle_session_export` function (for `GET /api/session/export`). Both endpoints loaded a session purely by its session ID without verifying that the session belonged to the request's active Hermes profile, allowing cross-profile disclosure. The patch adds a `_session_visible_to_active_profile` check that returns a 404 when the session's profile does not match the active profile [patch_id=6466842][patch_id=6466841].

What the fix does

The patch introduces a `_session_visible_to_active_profile` helper function in `api/routes.py` that compares the session's profile against the active profile using the existing `_profiles_match` function. This check is inserted early in both `handle_get` (for both regular sessions and CLI-session fallback) and `_handle_session_export`, returning a generic 404 "Session not found" response when the profiles do not match, which also avoids revealing the existence of foreign-profile sessions [patch_id=6466842][patch_id=6466841].

Preconditions

  • authThe attacker must be an authenticated user of the Hermes WebUI application.
  • inputThe attacker must know or guess a session ID belonging to a different profile.

Generated on Jun 18, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

5

News mentions

0

No linked articles in our index yet.