Files
IT-Nexus/SYSTEM_AUDIT_2026-05-07.md

7.2 KiB

IT Nexus System Audit — 07.05.2026

Erstellt von: Claude (Read-Only, keine Änderungen) Status: Offen — noch nicht bearbeitet


Executive Summary

Das System läuft stabil. Frontend und Backend sind erreichbar, die letzten 10+ Tage alle grün im Health-Check. Es gibt aber konkrete Probleme in den Bereichen Sicherheit, Konsistenz und Wartbarkeit.


🟢 Was gut ist

Bereich Status
System erreichbar (HTTPS)
Health: letzte 10 Tage alle grün
Agent-Auth (X-Agent-Key) korrekt
JWT-Auth auf geschützten Routes korrekt
Rate-Limiting auf Login vorhanden
DB-Migrations (try/catch) idempotent
asyncHandler auf Controllern konsistent

🔴 Kritische Probleme (sofort)

1. Agent-Version Default falsch

  • AGENT_VERSION Fallback im Code noch auf '1.2.4' — zieht sich durch 3 Stellen im Controller
  • Fix: In docker-compose.yml AGENT_VERSION=2.0.0 — bereits gesetzt . Aber Fallback im Code noch '1.2.4' und '1.2.3' — sollte auf '2.0.0' geändert werden
  • Dateien: backend/src/controllers/monitoringAgent.controller.js Zeilen 25, 113, 136

2. /api/monitoring/agent-setup ohne vollständige Auth

  • Endpoint prüft Key im Controller, aber Route liegt vor Middleware — unkonventionell
  • Kein HTTPS-erzwungener Download

3. SSE-Endpoints mit Token im Query-Parameter

  • /api/tickets/:id/events?token=xxx — Token landet in Server-Logs und Browser-History
  • /api/network-monitor/sse?token=xxx — gleiches Problem
  • Dateien: backend/src/routes/ticket.routes.js, backend/src/routes/networkMonitor.routes.js

🟡 Hohe Priorität (diese Woche)

4. Kein Rate-Limiting außer Login

  • POST /api/tickets/public — jeder kann Tickets erstellen, keine Limits
  • POST /api/tickets/:id/comments — Spam möglich
  • Datei: backend/src/server.js Zeilen 64-74

5. Keine Pagination auf großen Endpoints

  • GET /api/users → alle User auf einmal
  • GET /api/assets → alle Assets auf einmal
  • GET /api/tickets → alle Tickets
  • Bei Wachstum wird das ein Performance-Problem

6. E-Mail-Fehler werden ignoriert

  • .catch(err => console.error()) ohne Retry
  • Bestätigungs-Mails, Onboarding-Mails könnten lautlos verloren gehen
  • Dateien: backend/src/controllers/ticket.controller.js Zeilen 131, 137, 178

7. Kein Graceful Shutdown der DB

  • SQLite wird beim Neustart nicht sauber geschlossen → mögliche Locks
  • Datei: backend/src/server.js (fehlt: process.on('SIGTERM') Handler)

🟠 Mittlere Priorität (diesen Monat)

8. Kein strukturiertes Logging

  • Überall console.log/error — kein Log-Level, kein JSON-Format
  • Schwer zu debuggen in Produktion
  • Empfehlung: Winston oder Pino einführen

9. Planner-Sync läuft alle 10 Sekunden

  • Sehr aggressiv — sollte 5 Minuten sein
  • Datei: backend/src/server.js Zeile 274-290

10. CORS in Dev auf *

  • Alle Ursprünge erlaubt — sollte auch in Dev eingeschränkt sein
  • Datei: backend/src/server.js Zeilen 46-53

11. Onboarding-PII unverschlüsselt

  • emp_phone, emp_address, emp_private_email in Klartext in DB
  • DSGVO-relevant bei DB-Leak
  • Tabelle: onboarding_protocols

12. Schema-Inkonsistenz Asset-Typen

  • DB-Schema kennt 4 Typen, seed.js seeded 9 Typen — CHECK-Constraint wird umgangen
  • Datei: backend/src/db/seed.js

13. Audit-Logging unvollständig

  • Password-Änderungen nicht gelogged
  • Token-Generierungen nicht gelogged
  • Empfehlung: Alle Auth-Events in audit_log schreiben

📊 Vollständige Route-Übersicht

Auth Routes (/api/auth)

Methode Pfad Auth
POST /login Public (Rate-Limited)
GET /me JWT
POST /change-password JWT
PUT /notifications JWT
PUT /staff-notifications JWT
GET /microsoft Public
GET /microsoft/callback Public
GET /microsoft/addin Public
GET /microsoft/addin-callback Public
GET /microsoft/addin-result/:sessionId Public

Monitoring Routes (/api/monitoring)

Methode Pfad Auth
POST /checkin X-Agent-Key
POST /announcements-poll X-Agent-Key
GET /agent-script X-Agent-Key
GET /agent-setup X-Agent-Key (Controller)
GET /statistics JWT + Admin
GET / JWT + Admin
GET /:id JWT + Admin
DELETE /:id JWT + Admin

Patch Routes (/api/patch)

Methode Pfad Auth
POST /commands/result X-Agent-Key
GET /overview JWT
GET /groups JWT + Admin
POST /groups JWT + Admin
PUT /groups/:id JWT + Admin
DELETE /groups/:id JWT + Admin
POST /commands/trigger JWT + Admin
POST /commands/trigger-group JWT + Admin
GET /commands JWT + Admin

📋 Datenbank-Tabellen (38 gesamt)

Tabelle Zweck
roles Benutzerrollen
users Benutzerkonten
fido_keys FIDO2-Schlüssel
assets IT-Assets
asset_assignments Asset-Zuweisungen
asset_inspections Inspektionen
asset_movements Bewegungshistorie
asset_types Asset-Kategorien
onboarding_protocols Onboarding
offboarding_protocols Offboarding
tickets Support-Tickets
ticket_comments Kommentare
ticket_links Ticket-Verknüpfungen
ticket_assignees Mehrfach-Zuweisungen
ticket_routing Auto-Routing
monitoring_agents Windows Agenten
network_devices Netzwerk-Monitoring
device_checks Prüf-Ergebnisse
health_history System-Health
patch_groups Patch-Gruppen
patch_policies Patch-Richtlinien
patch_agent_groups Agent-Gruppen
patch_commands Patch-Befehle
licenses Softwarelizenzen
warehouse_locations Lagerplätze
stock_thresholds Mindestbestände
purchase_orders Bestellungen
knowledge_base Wissensdatenbank
ai_knowledge KI-Wissensdatenbank
portal_guides Portal-Guides
announcements Ankündigungen
announcement_acks Bestätigungen
external_alerts Externe Warnungen
teams_channels Teams-Kanäle
audit_log Audit-Protokoll
unifi_config Unifi-Konfiguration
unifi_devices Unifi-Geräte
it_topics IT-Übersicht

📋 Priorisierte To-Do-Liste

Prio Aufwand Was Datei
1 5 Min Code-Fallback '1.2.4''2.0.0' monitoringAgent.controller.js
2 30 Min Rate-Limiting auf public Ticket-Erstellung server.js
3 30 Min Pagination auf /api/users, /api/assets, /api/tickets controllers
4 1h Graceful Shutdown für SQLite server.js
5 2h E-Mail Retry-Logic ticket.controller.js
6 2h SSE Token aus Query absichern routes
7 1 Tag Strukturiertes Logging einführen server.js + alle
8 1 Tag PII-Felder verschlüsseln (DSGVO) onboarding_protocols

Live-System Stand (07.05.2026)

Health letzten 10 Tage alle OK
Frontend erreichbar
API erreichbar
Agent v2.0.0 IT-NB-02, TBO-NB-02, FAM102223
Geräte mit altem Agent ⚠️ ~41 Geräte noch v1.x
CT 110 (AI) nach fsck repariert
CT 102, 103, 111 alle healthy

Nächster Schritt: Priorisierung mit Simon besprechen, dann schrittweise abarbeiten.