[HIGH] /tunnels/history — Leak ohne Tenant-Header + Filter nach LIMIT (unvollständige Eigenliste) #111

Closed
opened 2026-06-20 14:40:13 +00:00 by chinux · 3 comments
Owner

Teil von #108. HIGH (Leak + Funktionsbug). GET /tunnels/history (tunnel_router.py:203-222):

  1. Leak: Tenant-Filter haengt an if not cu.is_superadmin and cu.tenant_id → ohne X-Tenant-ID (cu.tenant_id=None) kein Filter → alle Mandanten.
  2. Funktionsbug: Filter wird in Python nach dem SQL-LIMIT angewandt (Filter Z.217, LIMIT Z.213) → eigene Liste unvollstaendig.

Fix: Tenant-Constraint in die SQL-WHERE vor LIMIT ziehen (via list_user_accessible_nodes), require_read(), nie ungefiltert. Akzeptanz: ohne Header nur eigene/keine; Eigenliste vollstaendig bis LIMIT.
Verifiziert @ 282b76e.

Teil von #108. **HIGH (Leak + Funktionsbug).** `GET /tunnels/history` (`tunnel_router.py:203-222`): 1. **Leak:** Tenant-Filter haengt an `if not cu.is_superadmin and cu.tenant_id` → ohne `X-Tenant-ID` (`cu.tenant_id=None`) **kein Filter → alle Mandanten**. 2. **Funktionsbug:** Filter wird in Python **nach** dem SQL-`LIMIT` angewandt (Filter Z.217, LIMIT Z.213) → eigene Liste unvollstaendig. **Fix:** Tenant-Constraint in die SQL-WHERE **vor** LIMIT ziehen (via `list_user_accessible_nodes`), `require_read()`, nie ungefiltert. **Akzeptanz:** ohne Header nur eigene/keine; Eigenliste vollstaendig bis LIMIT. Verifiziert @ 282b76e.
Author
Owner

Umgesetzt in d634f79 (Branch security/tenant-scope-108). Test: server/tests/test_tenant_scope.py::test_update_history_scope. Nicht geschlossen — Review durch Sebastian.

Umgesetzt in `d634f79` (Branch `security/tenant-scope-108`). Test: `server/tests/test_tenant_scope.py::test_update_history_scope`. Nicht geschlossen — Review durch Sebastian.
Author
Owner

Tenant-Scope umgesetzt in a6e324b (in main, deployed). Test test_tunnel_history_scope_and_limit (inkl. LIMIT-Vollständigkeit). Schließe als erledigt.

Tenant-Scope umgesetzt in `a6e324b` (in main, deployed). Test `test_tunnel_history_scope_and_limit` (inkl. LIMIT-Vollständigkeit). Schließe als erledigt.
Author
Owner

Verifiziert @ 6fabc1f → gefixt, wird geschlossen.

tunnel_router.py /tunnels/history: BEIDE Schwächen behoben — Scope jetzt in SQL-WHERE vor LIMIT, kein tenant_id-abhängiges Leck mehr; require_read().

Muster aus #108 korrekt umgesetzt.

**Verifiziert @ 6fabc1f → gefixt, wird geschlossen.** tunnel_router.py `/tunnels/history`: BEIDE Schwächen behoben — Scope jetzt in SQL-WHERE **vor** LIMIT, kein tenant_id-abhängiges Leck mehr; `require_read()`. Muster aus #108 korrekt umgesetzt.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
chinux/theProx#111
No description provided.