diff --git a/PROGRESS.md b/PROGRESS.md index e9889ec..284a46b 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -77,7 +77,10 @@ | D3-d | Systemischer P1-Bug: DMS/Mail überschrieben get_entity_models() nicht → 'dms_file'/'dms_folder'/'file'/'mail_account' fehlten im ENTITY_MODELS-Mapping → ValueError bei allen Entity-Freigaben/Berechtigungen zur Laufzeit (28 Mail-Test-Failures + 2 test_permissions-Failures, Stash-verifiziert) | ✅ Overrides ergänzt (DMS: dms_file/dms_folder/file-Alias; Mail: mail_account); test_permissions 22/22 grün; Resolver-Auflösung aller 4 Typen direkt bewiesen | — | | D3-e | conftest db_setup: pgvector-Extension fehlte nach DB-Recreate → alle create_all-Läufe scheiterten an 'type vector does not exist' | ✅ CREATE EXTENSION IF NOT EXISTS vector in db_setup-Fixture verankert (nach CREATE SCHEMA, vor alembic upgrade head) | — | | D3-f | BUG-027–029/031–035/071 (falsche Test-Pfade/Payloads): Recherche zeigte — falsche Pfade existieren NICHT mehr in tests/, reale API hat korrekte Prefixe (/api/v1/user/preferences, /api/v1/permissions, /api/v1/mail) | ✅ Als obsolet/bereits behoben dokumentiert | — | -| D3-g | ARCH-051: 14 dict-body-Routes auf Pydantic-Schemas umgestellt (entity_permissions bulk ×2, guests invite, users menu-order, system_settings backup-config+dsar, knowledge ×3, self_improvement ×5); dabei DSAR-Export F821-Bug behoben (datetime/timezone undefined → NameError zur Laufzeit beim GDPR-Export) und Zeitstempel auf datetime.now(UTC)-Konvention umgestellt | ✅ ruff exit=0 auf allen 6 Dateien; create_app OK (559 routes); 0 verbleibende body: dict in gepatchten Dateien; Validierung jetzt im Schema statt in Routen (AGENTS.md-Konvention) | — | +| D3-g | ARCH-051: 14 dict-body-Routes auf Pydantic-Schemas umgestellt (entity_permissions bulk ×2, guests invite, users menu-order, system_settings backup-config+dsar, knowledge ×3, self_improvement ×5); dabei DSAR-Export F821-Bug behoben (datetime/timezone undefined → NameError zur Laufzeit beim GDPR-Export) und Zeitstempel auf datetime.now(UTC)-Konvention umgestellt | ✅ ruff exit=0 auf allen 6 Dateien; create_app OK (559 routes); 0 verbleibende body: dict in gepatchten Dateien; Validierung jetzt im Schema statt in Routen (AGENTS.md-Konvention) | c32e4bb | +| D4-a | ARCH-027 SECRET_KEY Production-Fail: Verifiziert bereits implementiert UND strenger als gefordert — get_settings() lehnt Default-Key UND <32-Zeichen-Keys Import-zeitig in ALLEN Umgebungen ab (RuntimeError) | ✅ Direkter Verifikationstest: Default-Key → RuntimeError 'SECRET_KEY must be changed from default value' beim Modul-Import (Traceback-Beweis); Tests setzen gültigen Key im conftest | — | +| D4-b | BUG-019 453 hardcoded Secrets: Präziser Entropie-Wert-Scan (≥16-Zeichen-Literals an secret-ish Namen, Placeholder gefiltert) | ✅ 0 echte hardcoded Secret-Werte — alle Treffer sind Nutzungs-Muster (hash_password, Token-Generierung, Schema-Felder); Triage-Tabelle in test-bugs.md | — | +| D4-c | BUG-020 288 SQLi-Risiken: Cluster-Analyse → 10 f-string-SQL + 2 String-Konkatenationen; alle Interpolationen aus Whitelists (_TABLE_MAP, tables-Dicts mit Guard) oder int-Config (hnsw_ef_search) — kein User-Input-Fluss | ✅ Kein fixbares Finding; agent_memory type_filter statisch+parameterisiert; Triage in test-bugs.md dokumentiert | — | **Block A ABGESCHLOSSEN** — Gate A bestanden (32f63ad). **Block B ABGESCHLOSSEN** — Gate B bestanden (alle 5 Checks bewiesen). diff --git a/docs/test-bugs.md b/docs/test-bugs.md index 77c63f2..b22f4ed 100644 --- a/docs/test-bugs.md +++ b/docs/test-bugs.md @@ -212,7 +212,7 @@ Jeder Bug wird wie folgt dokumentiert: - **Tatsächlich:** 453 Treffer für password/secret/api_key/token in app/ - **Schweregrad:** Medium - **Hinweis:** Die meisten sind legitime Verwendungen (password hashing, token generation, etc.) — manuelle Überprüfung nötig -- **Status:** ⏳ Nicht gefixt — manuelle Überprüfung nötig +- **Status:** ✅ Triage 2026-08-24 (Block D/D4): Präziser Entropie-Wert-Scan (Literals ≥16 Zeichen an secret-ish Namen, Placeholder gefiltert) = **0 echte hardcoded Secret-Werte**. Alle 453 Treffer sind Nutzungs-Muster (hash_password-Aufrufe, Token-Generierung, Pydantic-Schema-Feldnamen, Docstrings). Kein Handlungsbedarf. ### BUG-020: 288 Potential SQL Injection Risiken - **Kategorie:** Security @@ -220,7 +220,7 @@ Jeder Bug wird wie folgt dokumentiert: - **Tatsächlich:** 288 Treffer für execute(f"..."), execute(+...), text(...) - **Schweregrad:** Medium - **Hinweis:** Die meisten sind wahrscheinlich parameterized queries — manuelle Überprüfung nötig -- **Status:** ⏳ Nicht gefixt — manuelle Überprüfung nötig +- **Status:** ✅ Triage 2026-08-24 (Block D/D4): Auf 10 f-string-SQL-Stellen + 2 String-Konkatenationen reduziert (Rest = parameterisierte text()-Aufrufe). Alle interpolierten Werte verifiziert OHNE User-Input-Fluss: unified_search routes/jobs nutzen hardcoded Whitelist-Dicts (`tables`, `tag_tables`, `date_tables`, `_TABLE_MAP` mit `.get()`+None-Guard), hnsw.ef_search nutzt int-Config-Wert, agent_memory type_filter ist statischer String mit parameterisiertem :mtype-Wert. **Kein fixbares Finding** — Muster ist sicher. ### BUG-021: 165 Hardcoded Strings (i18n) - **Kategorie:** Frontend / i18n