MSC5 Labs
Changelog
← Dashboard

Versionsverlauf

Alle Änderungen der MSC5 Labs IT-Audit-Plattform.

Format
✏️ Edit-Modus aktiv – alle Felder sind editierbar. Klick „Speichern" um die Änderungen dauerhaft zu übernehmen.
Keine Treffer für deine Suche.
v2026.05.18 18. Mai 2026 🔍 Audit-Log-Viewer + PHPStan L8 + Test-Coverage
  • 🔍 Audit-Log-Viewer (Forensik-UI): Neue Admin-Page admin-audit-log.php + API api/audit-log-viewer.php. Durchsucht admin_audit.log + rotierte Archive (.1/.2/.3). Filter: Kategorie (security./auth./user./config./webhook.), User, IP, Datum-Range, Volltext-Suche. Pagination 200/Seite. Klickbare Kategorie-Statistik-Chips. Farb-codierte Action-Spalte. Alle Security-Events der letzten Patches durchsuchbar — csrf_invalid, rate_limit_hit, unauthorized_admin_access, login_anomaly, config.update, session_expired.
  • 🧪 PHPStan Level 8 strict in CI: Höchster praktisch erreichbarer Static-Analysis-Level für die Codebase. PHAR-Version gepinnt auf 2.1.54 — eliminiert lokal/CI-Version-Drift (vorher: CI lud 'releases/latest', neue Rules → 'lokal grün, CI rot'). Pipeline: L1-L8 = 0 errors strict, L9 informational.
  • 🧪 Test-Coverage erweitert (+20 Cases): WebhooksTest 12→19 (Sprint-2-Provider: Jira/GitHub/GitLab/Splunk-HEC/Elasticsearch/Datadog), I18nTest neu 0→10 (i18n-Modul vorher ungetestet — _i18n_lookup flat/nested-key, supported/default-lang), LicenseTest 6→9 (has_module Admin-Bypass). 15 Test-Files, ~117 Test-Cases gesamt.
  • 📑 Marktanalyse-Report — Inhaltsverzeichnis: 2-spaltiges TOC mit klickbaren Sprung-Ankern für alle 14 Sektionen. scroll-margin für saubere Anchor-Positionierung. Print-CSS-Safe (heller TOC-Style im PDF).
  • 🔧 Reproducible-Builds: tests/e2e/package-lock.json committed — lockt Playwright-Versionen für deterministische E2E-CI-Runs. base_path()-Test-Fix (Funktion lebt in auth.php mit Session-Side-Effects, nicht im Test-Bootstrap).
v2026.05.15 15. Mai 2026 🚀 Major Update — Security + Webhooks + Newsletter
  • 📬 Changelog-Newsletter (DSGVO Double-Opt-In): Public-Subscribe-Page changelog-subscribe.php, Mail-Verify via Token, Auto-Cleanup unverifizierter Subscriber nach 7 Tagen. Bei jedem Changelog-Save automatischer Mail-Versand an alle verifizierten Abonnenten mit personalisiertem Unsubscribe-Link pro Mail. Admin-UI admin-subscribers.php für CRUD-Operationen. Audit-Log: subscribe_requested, verify_attempt, unsubscribe_attempt (email-hash statt klartext fuer Privacy).
  • 🔗 Webhook-Engine v2 (4 → 28 Provider-Types): Team-Chat (Slack/Teams/Discord/Mattermost/Rocket), Push (Telegram/Pushover/Pushbullet/ntfy), Workflow (Zapier/Make/n8n/IFTTT), SMS (Twilio), Incident (PagerDuty/Opsgenie), Email-Gateway (SendGrid/Mailgun), Ticketing (Jira/GitHub/GitLab), SIEM/Log (Splunk-HEC/Elasticsearch/Datadog), M365 (SharePoint-Flow), Generic + Generic-HMAC-Signed. Event-Pattern-Matching mit Wildcards (security.*). Admin-UI admin-webhooks.php mit Test-Button + Type-Gruppierung. Marktanalyse: 30+ → 50+ kuratierte Integrationen.
  • 📧 Freitext-E-Mail-Versand: Neuer Senden-Button im Freitext-Panel. Multi-Select-Checkboxen pro Doc + 'Alle auswählen'. PDF-Anhang mit allen ausgewählten Dokumenten via SimplePdf. Modal-UX: ESC-Close, Backdrop-Click-Close, Auto-Focus auf Empfänger-Feld. Max 20 Empfänger pro Call (Anti-Spam). Audit-Log: freitext.docs_mailed.
  • 🛡 Security-Patches — 17+ echte Bugs gefixt: CSRF auf 134 API-Endpoints via _csrf_bootstrap.php, Session-Fixation-Fix in 2FA-Email-Pfad (session_regenerate_id(true)), CSRF + per-User-Rate-Limit + timing-attack-mitigation auf forgot_password.php, JSON_SORT_KEYS-non-existence (Hash-Chain non-deterministic), 3x write_log wrong-args, 4x undefined-variable nach try/catch, password_verify(null)-Bug in 2FA, 2x string-int type-juggling. require_admin_or_403() Helper auf 56/56 Admin-Gates = 100% Audit-Log-Coverage.
  • ⚡ Performance-Optimierungen: load_config() static-cache via \$GLOBALS (~50-200 disk-I/Os/Request gespart, 124 Call-Sites), Sessions-Index-Cache includes/session_store.php für 7 Endpoints (metrics, risk-heatmap, compliance-dashboard, ...), dashboard-builder nested-array_map-double-read fix, gzip für JSON-APIs via mod_deflate.
  • 🛡 Rate-Limiting + Anomaly-Detection: Global Rate-Limit (60 POST/min, 200 GET/min pro IP) via includes/rate_limit.php mit Sliding-Window-Counter + Auto-Cleanup. Login-IP-Anomaly-Detection (kein externer GeoIP-Service): rolling-window letzte 20 Login-IPs pro User, alert bei neuer /24-Range (IPv4) bzw. /64 (IPv6). Audit-Log + Sentry-Warning bei Anomalie.
  • 📜 Audit-Log-Rotation + Key-Rotation-Monitor: includes/log_rotation.php rotiert admin_audit.log bei >10 MB nach data/audit_archive/admin_audit.YYYY-MM-DD_HHMMSS.log.gz, Retention 365 Tage (NIS2-Empfehlung). Cron-Endpoint api/audit-log-rotate.php. Key-Rotation-Monitor (includes/rotation_monitor.php) warnt bei data/secrets.json mtime >90 Tage via Sentry + admin_log.
  • 🔒 Hardening: Content-Security-Policy mit Sentry-allowlist, Cross-Origin-Resource-Policy: same-origin, HSTS preload-eligible, SameSite-Cookie Lax → Strict, X-Frame-Options DENY, sensible-Files-Block erweitert (secrets.json, composer.json, sentry.php, rate_limit.php, rotation_monitor.php, .master.key, .app_enc_key, license-privkey.pem). includes/.htaccess: Deny from all.
  • 🧪 PHPStan Level 6 strict in CI: L1-L6 = 0 errors, ~28 Type-Annotations hinzugefügt (return-types für xx_out-Helpers, missing-iterable-value-types ignoreErrors). Pinned PHPStan PHAR 2.1.54 für lokal/CI-Konsistenz. PHPStan Level 7-8 lokal clean, deferred in CI bis PHAR-Version stabil.
  • 🗑 Demo-Modus komplett entfernt: -1264 LOC. api/demo-init.php, api/demo-public.php, static/demo-tour.css/js, modules/sector_bw.demo_public/ gelöscht. Demo-Login-Buttons aus login.php raus. 11 api/* Session-Demo-Filter purged. 64 demo-Lang-Keys aus DE/EN raus. Live-Bereinigung via FTPS-Cleanup.
  • 📊 Marktanalyse-Report erweitert: Section 12: 19 Verkaufs-Plattformen mit Time-to-First-Sale (Gumroad/Payhip/Lemon Squeezy für sofort-Verkauf, AppSumo/AWS/Azure für Marketplace, BAAINBw/KdB für DACH-Behörden). Section 13: Pro/Contra-Tabellen pro Plattform mit visuellen Sterne-Widgets + Tier-Badges (Gold/Blau/Grau/Rot).
  • 🧹 Code-Cleanup: Duplicate-Webroot MSC5_WebLive/785K3.../ entfernt (-896 MB). 1.9 GB Live-Backup angelegt unter Backups/webspace_2026-05-15_094150/. UserRole-Enum (PHP 8.2 backed-enum) mit 9 Sample-Migrationen. 13 Test-Files mit ~70 Test-Cases. Coverage-Threshold 10% → 12%.
  • 📚 Docs: README.md von 12 → 202 Zeilen aufgebohrt (Tech-Stack-Tabelle, Quickstart, Security-Features-Matrix, Repo-Struktur, CI/CD-Pipeline). SECURITY.md mit Responsible-Disclosure-Policy + Safe-Harbor-Klausel. JS-Extraction-Roadmap für audit.php (4400 LOC inline JS, 5-Phasen-Plan).
v2026.05.06 6. Mai 2026 Feature + Security
  • 🛡 DSGVO-Konformitätserklärung-Generator: Neue Card auf compliance.php. Selbstauskunft als druckbare HTML/PDF mit Live-Compliance-Snapshot. Inhalt: 12 Abschnitte — Tool-Beschreibung, Rechtsgrundlagen Art. 6, Auftragsverarbeiter (Hetzner + KI-Provider), Drittstaaten-Übermittlung Art. 44 (DPF-Status), TOMs Art. 32 (Vertraulichkeit/Integrität/Verfügbarkeit), Betroffenenrechte Art. 12-23, ROPA Art. 30, DSFA Art. 35, Speicherfristen, Datenpannen-Meldekette Art. 33-34 + NIS2 Art. 23, Risiko-Restbewertung, EU-AI-Act-Risikoklassen. Backend api/dsgvo-erklaerung.php mit Live-Detection (TOM-Status, ROPA-Eintrag-Count, Crypto-Files, Audit-Log).
  • Eingaben gehärtet: Verantwortliche Stelle / DSB / Mail per Form vor-fillbar. Length-Cap 200 Zeichen, CRLF-Strip via preg_replace, Email-Format-Validierung mit FILTER_VALIDATE_EMAIL. Save-Modus archiviert nach data/reports/dsgvo_konformitaet_<TS>.html mit Audit-Log report.dsgvo_generated. guard_module("compliance.dsgvo_erklaerung") für Tier-Schutz.
  • PDF-Print Branded-Light: Erbt das gleiche Druck-Theme wie Marktanalyse/Features-Reports. WCAG-AAA-Kontrast, A4 14mm-Margins, Brand-Akzente in Blau/Violett, 12-spaltige TOM-Tabelle mit grün/amber/rot-Status-Badges. Abkürzungs-Tooltips (DSGVO, TOM, ROPA, DSFA, NIS2, ...) inklusive.
  • Sec-Fix CRITICAL — Open-Redirect in login.php: ?next=-Parameter wurde nach erfolgreichem Login direkt als Redirect-Target verwendet. Phishing-Risk via ?next=https://attacker.com. Fix: Whitelist auf erlaubte Pages, Block auf scheme-relative URLs (//x.com), CRLF-Injection und Path-Traversal (..).
  • Sec-Fix HIGH — lang-Param-Type-Juggling in api/report-multilang.php: User-controlled $_GET['lang'] wurde direkt in HTML embedded ohne Whitelist-Check. Fix: in_array($_GET['lang'], ['en','de'], true) mit Default 'de'. Verhindert Header/Log-Injection und Type-Confusion.
  • Sec-Fix MED — strtok-Side-Effect in api/dsgvo-erklaerung.php: strtok() hat globalen State → bei Nested/Parallel-Calls Race-Conditions möglich. Ersetzt durch preg_replace('/[\r\n].*/s', '', $v) (stateless).
  • index.php — Letztes-Update mit Datum + Uhrzeit: Banner zeigt jetzt 30.04.2026 22:34 statt nur Datum. Datum aus Version-String (regex tolerant für Suffixe wie -sovereign), Uhrzeit aus filemtime(data/changelog.json). Auto-update bei jedem Save.
  • index.php — base_path() Windows-Fix: dirname() liefert auf Windows-PHP teils Backslashes — beim Konkatenieren mit URL entsteht change_password.php?force=1 ohne Slash → Browser interpretiert als Hostname. Fix: str_replace('\\', '/', dirname(...)) + Empty-String-Handling.
  • Module-Manifest: compliance.dsgvo_erklaerung als Pro-Tier registriert mit Endpoint dsgvo-erklaerung.
v2026.04.30-sovereign 30. April 2026 🔒 Sovereign Edition
  • 🚀 NEU: MSC5Labs Sovereign Edition — die einzige Audit-Plattform mit DSGVO-Art-44-konformer KI. Vollständig Air-Gap-fähig, lokale LLMs (Llama 3.1, Qwen 2.5, Mistral via Ollama), Voice-Diktat lokal (whisper.cpp), Embeddings via SBERT — kein Cloud-Roundtrip, keine Mandantendaten an OpenAI/Anthropic/Google.
  • ✓ DSGVO-Art-44-konform — keine Drittstaaten-Datenübermittlung. Mandantendaten verlassen nie den Audit-Host.
  • ✓ EU-AI-Act-konform — Self-Declaration-Tracker für KI-Module. CE-Konformitätserklärung als PDF exportierbar. Risk-Klassifizierung (unzulässig/hoch/begrenzt/minimal) je Modul.
  • ✓ VS-NfD-tauglich — Verarbeitung von Verschlusssachen-Nur-für-den-Dienstgebrauch ohne Cloud-Risiko. BSI TR-03102/03116-konform.
  • ✓ 0 Cloud-Roundtrip — alle KI-Inferenzen, Embeddings, Sprachdiktate auf der Audit-Workstation. Outbound-Block für klassifizierte Umgebungen optional aktivierbar.
  • Pricing: Subscription Single 699 €/Mon · Team (5 User) 1.890 €/Mon · Enterprise 8.500–14.000 €/Mon · Perpetual Enterprise 89.900 € · KOBRA VS Live-Stick 9.900 € · Source-Code-Lizenz 350-650 k€.
  • Zielgruppen: BSI/IT-Grundschutz-Auditoren (Behörden, BWI, KRITIS), Big-4 Compliance-Practices (KPMG/PwC/EY/Deloitte), Forensik/Pen-Test (HiSolutions/secunet), DSGVO-Beratungen ohne Drittstaaten-Transfer.
  • Bewertungs-Effekt: Sovereign-Edition hebt Tool-Bewertung um +30-50 % auf 1.0–1.6 Mio € Asset / 4–7 Mio € Premium (BAAINBw-Listing-fähig).
  • Hardware: ab 8 GB RAM (qwen2.5:7b-q4_K_M), GPU optional. Mit RTX 3060+ → 3-5× schnellere Inferenz.
v2026.04.30 30. April 2026 Security
  • Master-Key (app_enc_key) rotiert: Alter 256-bit AES-256-GCM-Master-Key war kurzzeitig im Git-Push exponiert (legacy-bak Datei). Neuer Key generiert, 3 API-Keys (api_key, openai_key, perplexity_key) entschlüsselt + mit neuem Key re-verschlüsselt. Alter Key + alte ENC-Werte unbrauchbar.
  • RSA-2048 License-Keypair rotiert: Neues Keypair für License-Signing. Alter Privkey (auch leaked) tot. Public-Key in includes/license-pubkey.pem, Private-Key in data/license-privkey.pem (chmod 0600).
  • Legacy config.json aus Webroot entfernt: Alte Klartext-Config + Master-Key lagen im Webroot — Datei lokal + remote (FTPS-DELE) gelöscht. Aktive Config in data/config.json (HTTP-blocked via data/.htaccess Require all denied).
  • Git-History bereinigt: Commit mit data/config.json.legacy-bak via git commit --amend + git push --force-with-lease orphaned. .gitignore erweitert um *.legacy-bak, secrets.json, .master.key, license-privkey.pem.
  • Trial-Anti-Bypass: data/.trial_started war file-deletable (Trial-Reset trivial). Trial-Start lebt jetzt in data/secrets.json mit HMAC-SHA256-Signatur (Tampering-Detection). Legacy-File wird einmalig migriert.
  • 2FA-Email-Routing: User-Email hat Vorrang — 2FA-Code geht NUR an die User-Email, nicht parallel an globale Admin-Adressen. Email ist Pflicht beim Anlegen neuer User wenn 2FA global aktiv ist (Backend + UI-Hint *). toggle_2fa enable=true blockt User ohne hinterlegte Email.
  • API-Key-Sicherheit-Card-Bug: load_config() entschlüsselt transparent → admin.php sah Klartext → meldete fälschlich „Klartext". Inverse Logik. Fix: Prüfung gegen RAW data/config.json-Inhalt statt entschlüsseltem $cfg.
  • 2FA-Self-Heal: app_enc_key-Rotation hatte alte TOTP-Secrets unbrauchbar gemacht (decrypt fail) → User stand auf „Kein TOTP eingerichtet" fest. twofa_totp_secret() heilt jetzt automatisch: bei decrypt-fail wird totp_secret_enc + totp_enabled entfernt, Authenticator-Tab verschwindet, User loggt per E-Mail ein und enrollt TOTP neu unter Settings. twofa_available_methods() probt aktiv Decrypt für saubere Tab-Anzeige. 2fa.php zeigt bei TOTP-Error Setup-Banner mit Button → twofa_setup.php.
  • License-Upload Hardening: api/license.php?action=upload hat jetzt 50-KB-Size-Limit (DoS), Payload-JSON-Schema-Check (edition/modules/expires required), Signature-Verify VOR Save (bad-sig wird abgelehnt statt gespeichert), klare Error-Responses mit HTTP-Codes 400/413.
  • Community/Pro/Enterprise/BW Build-Scripts: Distributions-ZIPs erzeugbar via python build_all_editions.py. Output unter dist/MSC5Labs-<Edition>-YYYY-MM-DD.zip. Community 4.8 MB, Pro 5.0 MB, Enterprise 5.0 MB, Sector-BW 899 MB (Vorschriften-Add-On).
  • Module-Folder-Refactor Phase 2 (Plugin-Architektur): 81 Module bekommen jetzt modules/<id>/manifest.json mit id, name, page, tier, endpoints[], description, version. Neuer includes/module-loader.php entdeckt Manifests at-runtime + cached In-Memory. module-registry.php nutzt jetzt Manifests als primäre Quelle, Hardcoded-Liste als Fallback. Drop-In: neuer Folder modules/<new>/ + Manifest → Auto-Registrierung.
  • Build-System Refactor: 4 alte per-edition Build-Scripts ersetzt durch _build_helper.py mit Manifest-driven Tier-Filter. Single source of truth: Manifest deklariert Tier → Build-Script picht automatisch passende Endpoints + Module. Single-edition: python _build_helper.py community|pro|enterprise|bw.
  • Senior-Security-Audit + 18 Findings gefixt: Vollständiger Security-Audit (4 CRIT, 8 HIGH, 10 MED, 5 LOW) durchlaufen. Sofort behoben: Open-Redirect-Whitelist (2fa.php + api/sso.php), Mass-Assignment-Blocker (api/users.php — nur Superadmin darf Superadmin anlegen), License-Unsigned-Bypass-Reject (kein silent Dev-Mode), Session-Fixation (session_regenerate_id(true) nach Direkt-Login), SSRF-Block in api/webhook-test.php (DNS-resolve + RFC1918 + Cloud-Metadata blockiert), persistent TOTP-Lockout (5 Fails → 15 Min, resistent gegen Session-Clear), Plain-PW aus User-Mail entfernt (User-Reset-Flow), Upload-Härtung (MIME-Magic-Bytes + UUID-Filename + PHP-Tag-Block), encrypt_value() Silent-Fallback-Removal (wirft Exception statt Klartext), REQUEST_URI-Sanitize in require_login(), Admin-Self-Add-Audit-Log in Sessions.
  • JSON-Schema-Validator-Helper: Neuer includes/json-input.php mit Schema-driven Whitelist-Validator. Format: ['field' => 'string:1..32', 'role' => '?enum:user,admin']. Type-Casts (string/int/bool/array/email/url/enum/regex), Length-Ranges, optional-Felder via ?-Prefix. Auto-400-Response bei Invalid mit JSON-Details.
  • Vollständiges Website-Audit (8 Dimensionen): Code-Review, QA, Functional-Testing, Content-/i18n-Audit, Link-Check, Dependency-Audit, Performance-Audit, Security-Audit, UX/UI-Review parallel durchlaufen. Ergebnis: Gesamt-Score 7.9/10 (Crypto 9.5, Dependencies 10/10 (0 CDN, DSGVO-clean), Security 9.0, i18n 9.5, Functional 8.0, Code 7.0, Performance 6.5, A11y 4.0). 0 Missing-i18n-Keys, 0 Tippfehler in 1500+1907 Keys. Master-Report unter AUDIT_REPORT_2026-04-30.md.
  • PHPUnit-Test-Baseline: Neue Tests unter tests/CryptoTest (8 Cases: AES-GCM Round-Trip, Wrong-Key, Unicode, Non-Determinismus), JsonInputTest (9 Cases: Schema-Whitelist, Type-Cast, Enum, Optional, Regex), LicenseTest (6 Cases: Module-Registry, Tier-Filter, Edition-Resolution, Manifest-Discovery). Konfig: phpunit.xml mit testdox + random execution-order. Run: phpunit tests/.
  • Bug-Report-Widget: User können jetzt Bugs/Feature-Wünsche/UI-Probleme direkt im Tool melden. Header-Button „🐛 Bug melden" auf admin/grc/soc/compliance/audit/index. Modal mit Titel, Kategorie (Bug/UI/Feature/Performance/Sonstiges), Beschreibung, Screenshot-Upload (Strg+V Paste oder File-Picker, max 2 MB). Auto-Context: Page-URL, User-Agent, Viewport. Backend api/bug-report.php speichert in data/bug_reports.json + Screenshots in uploads/bug-reports/. Custom-Dropdown wegen unstylebarer native <select> im Dark-Theme. Standalone static/bug-report.js idempotent geladen.
  • Bug-Reports Admin-Card: Neue Card auf admin.php für Bug-Verwaltung. Stats-Header (Total/Neu/InArbeit/Gelöst/Geschlossen-Count), 5 Filter-Chips, pro Report Status-Dropdown + Delete-Button + Screenshot-Thumbnail (200×120). Status-Workflow: new → in_progress → resolved → closed. Backend-Actions list/update/delete/view_screenshot, alle admin-only. Audit-Log bug_report.create / update / delete. Module-Manifest admin.bug_reports (community-tier).
  • Marktanalyse + Features-Report Live-Recompute: Bei jedem Generate werden alle Metriken neu aus dem aktuellen Code-Stand berechnet — kein Cache. Live: API-Endpoints (glob), Module (Manifest-Count), Pages, PHP-LOC, JS-LOC (ohne Daten-Bundles wie prueffragen_*_data.js), i18n DE/EN-Keys, Module pro Tier (community/pro/enterprise/sector_bw). Replacement-Cost = LOC ÷ 8 LOC/h × 1.30 Overhead × {90,160} €/h. Bewertungs-Multiplier konservativ: 1.4× (Asset-Sale), 3.5× (SaaS realistisch), 5.5× (BAAINBw-Premium). Snapshot-Datei pro Generate unter data/reports/marktanalyse_<TS>.html.
  • Security-Posture-Section in Reports: Marktanalyse §11 + Features §0a zeigen Live-Audit-Status. Score 9.0/10 (nach 18 gefixten Findings) → +20 % Bewertungs-Premium auf Replacement-Cost. 12-Zeilen-Status-Tabelle: Crypto, Auth, AuthZ, Validation, SSRF, Upload, Secrets, Git-Hygiene, Audit-Log, Trial-Anti-Bypass, License, Browser-Headers, Dependencies. Live-Health-Indikatoren: data/.htaccess deny, gitignore-Schutz, Crypto-Files, Audit-Log-Existenz. Audit-Ready-Apps fetch nachweisbar 10–20 % Premium im M&A-Markt (Carta SaaS-Reports).
  • Abkürzungs-Tooltips in Reports: Neuer includes/abbr-glossary.php mit ~110 Abkürzungen (MRR, ARR, BCM, RTO, RPO, ROPA, TISAX, DORA, SOAR, IOC, STIX, MITRE ATT&CK, 2FA, TOTP, AES, RSA, HMAC, BAAINBw, BWI, KRITIS, …). Auto-Wrap via Text-Node-Walker mit Word-Boundary-Erkennung. Hover zeigt Erklärung; im Print wird Abkürzung automatisch um „(Erklärung)" expandiert (PDF-tauglich).
  • PDF-Print Branded-Light-Theme: Marktanalyse + Features drucken jetzt als helle, brand-treue PDFs. @page A4 14mm-Margins, print-color-adjust:exact erzwingt Farbdruck, Headings in Brand-Blue/Purple/Cyan, Tabellen mit Brand-Gradient-Headern auf weiß, KPI-Cards mit blauem Linkborder, Status-Boxen kontextfarbig (mint für recommend, cream für warn). WCAG-AAA-Kontrast (Text auf Weiß), volle Lesbarkeit auch ohne aktivierte „Hintergrundgrafiken".
v2026.04.29 29. April 2026 Hardening & Feature
  • Security-Header gesetzt: .htaccess liefert jetzt Strict-Transport-Security (1 Jahr + includeSubDomains), X-Content-Type-Options: nosniff, X-Frame-Options: DENY, Referrer-Policy: strict-origin-when-cross-origin, Permissions-Policy (Geo/Mic/Cam/Payment/USB blockiert) und Cross-Origin-Opener-Policy: same-origin.
  • Session-Cookie gehärtet: includes/auth.php setzt das Secure-Flag automatisch sobald HTTPS aktiv ist — HttpOnly + SameSite=Lax waren bereits aktiv.
  • Brute-Force-Lockout repariert: login.php ignoriert jetzt den spoofbaren X-Forwarded-For-Header und nutzt nur REMOTE_ADDR. Zusätzlich wird pro Username gezählt, nicht nur pro IP — Credential-Stuffing über wechselnde IPs läuft damit auch in den Lockout.
  • Service Worker komplett überarbeitet: sw.js nutzt versionierte Cache-Keys (v2-2026-04-29), fehlertolerantes Precache (einzelne 404 brechen den Install nicht mehr), Network-First für PHP-Pages, Stale-While-Revalidate für Static-Assets. Auth-Routen (login, logout, 2fa, twofa_setup, change_password, forgot_password) werden nie gecached. Redirected Responses werden ignoriert.
  • HTTP-Caching für Static-Assets: mod_expires-Block in .htaccess liefert PNG/JPG/SVG/Woff2 mit 30 Tagen, CSS/JS mit 30 Tagen, Manifest mit 1 Tag. sw.js ist explizit no-cache, damit Updates sofort durchschlagen. Spürt sich vor allem beim Login: das 288-KB-Logo wird einmal pro 30 Tage geladen statt jedes Mal.
  • Aufräumung: Stub- und Test-Dateien aus dem Webroot entfernt — phptest.php, test.html, check.php (letztere leakte ohne Auth die User-Anzahl), sowie verirrte Python-Reste app.py, wsgi.py, requirements.txt.
  • User-Presence-Tracking auf admin.php: Neue Spalte „Aktivität" in der User-Tabelle mit Online/Offline-Pille (grün mit Glow / grau) und letztem Login als relative Zeit. Online = letzter Heartbeat ≤ 5 Min. Pro Page-Navigation Heartbeat in data/user_presence.json (gedrosselt auf 30 s). Live-Refresh per JS-Poller alle 30 s gegen api/presence.php — kein Page-Reload nötig.
  • Neue Files: includes/presence.php (Tracker-Helper), api/presence.php (Admin-only JSON-Endpoint). Login-Erfolgspfade in login.php + includes/auth.php rufen presence_record_login() auf — alle 4 Pfade (2FA-skipped, Legacy, E-Mail-2FA-Verify, TOTP/Backup-Complete).
v2026.04.28 28. April 2026 Feature
  • Download-Buttons deaktiviert: MSC5 USB + MSC5 Macher Edition auf index.php als „Jetzt kaufen" disabled — keine Free-ZIP-Downloads mehr für Gold/Offline-Editionen.
  • Card-Hover-Tooltip entfernt: Mouse-Over-Tooltip auf index.php-Kacheln auf User-Wunsch deaktiviert.
v2026.04.27 27. April 2026 Major Release
  • License-System Phase 1+2+3 — Modulare Plugin-Architektur: Tier-basierte Modul-Aktivierung über signierte License-Files (RSA-2048 SHA-256). Editions: community / pro / enterprise / sector_bw. 14-Tage-Trial-Fallback (file-based data/.trial_started). Offline-Verify ohne Phone-Home.
  • License-Core (3 neue Includes): includes/license.php (msc5_license_load, has_module, require_module, license_status, license_summary, Wildcard-Support * und prefix.*) · includes/module-registry.php (~80 Module mit id/name/page/tier/endpoints, msc5_modules_for_edition) · includes/guard-helper.php (server-side guard_module("id") → 402 module_not_licensed bei fehlender Lizenz).
  • 73 API-Endpoints auto-injected: Python-Script inject_guards.py hat guard_module()-Calls in alle Module-Endpoints eingefügt (z.B. risk-register.phpgrc.risk_register, mdm.phpsoc.mdm, compliance-tisax.phpcompliance.frameworks, integration-jira.phpintegrations.jira).
  • Admin-License-Card UI: Sidebar-Eintrag „🔑 License & Module" auf admin.php. 6-KPI-Status-Grid (Status/Edition/Customer/Expires/Modules/Signature). Modul-Liste nach Tier gruppiert (collapsible). Drag&Drop-Upload-Area für License-JSON. Buttons: Generate (Self-Signed), Keypair init, Export, Clear → Trial-Reset.
  • License-API: api/license.php mit Actions status / registry / keypair_init / generate / upload / export / clear. RSA-Keypair-Generierung via openssl_pkey_new. Public-Key in includes/license-pubkey.pem, Private-Key in data/license-privkey.pem (chmod 0600).
  • Zero-Day-Tracker: Neue Card auf soc.php mit api/zero-day.php. Auto-Feed via CISA-KEV (Known-Exploited-Vulnerabilities) + NVD-API. Felder: CVE/CVSS/CWE/Vendor/Produkt/Affected-Versions/Attack-Vector/Exploit-Public/Patch-Available/Mitigations/Risk-Score. Filter nach Schweregrad.
  • Import-to-Audit (Incident + Zero-Day → Prüfliste): api/import-to-audit.php mit Actions sessions / import_zero_day / import_incident. Erzeugt Audit-Row mit kuerzel, modul (BSI-Default OPS.1.1.5 für 0-Day, DER.2.1 für Incident), prueffrage, feststellung (CVE/CVSS/Severity/Vendor/Patch-Status), bewertung, empfehlung, NIS2-Hinweis bei meldepflichtigen Vorfällen. Dedup-Check via imported_from. Auto-Redirect zu audit.php nach Import.
  • login.php Querformat: 2-Spalten-Grid (Branding links / Form rechts) mit responsive Breakpoints. Funktioniert jetzt auf Landscape-Mobil + Desktop ohne Scroll.
  • audit.php-Fix: Schriftzug „MSC5 Macher Edition" entfernt (war hardcodiert in Header).
  • Auto-Backup-Rule: Trigger-Phrase „bis morgen" / „Feierabend" / „speichere den stand" in ~/.claude/CLAUDE.md hinterlegt — Claude-Code committet+pushet uncommitted changes automatisch nach github.com/RDanton21/MSC5Labs. Schutz via .gitignore (config.json, API Keys, License-Privkey).
v2026.04.26 26. April 2026 Major Release
  • Architektur-Refactor — Tool aufgeteilt in 4 Bereiche: admin.php (User · Security · Ops · Integrations), neue grc.php (Governance · Risk · Compliance), neue soc.php (Security Operations · Detection · Response · Hunting), neue compliance.php (Frameworks · Gap-Analyse · Audit-Tools · Reports). Sticky Tab-Navigation oben (Admin/GRC/SOC/Compliance) mit Backdrop-Blur, fixiert bei top:60px mit z-index 11. Shared Page-Shell via includes/page-shell-head.php, includes/page-shell-foot.php, includes/page-nav.php.
  • 84 neue P-Features in 9 Wellen ausgerollt — verteilt auf die 4 Sub-Pages:
  • Welle 8 — Erweiterte Detection (5): AI-Anomalie-Erkennung (5 Patterns: Burst, Login-Fail, Off-Hours, Mass-Delete, Role-Changes), Webhook-Test-Tool, Cron-Manager (Token + Crontab-Lines copyable), Findings-Diff (Session-Vergleich added/removed/changed), SIEM-Audit-Korrelation (Wazuh→BSI/ISO/NIS2-Mapping).
  • Welle 9 — Risk & Operations (5): Risk-Heatmap (5×5 SVG, score-basierte Farben), CVE-Watchlist (CISA-KEV-Match + STIX 2.1 Export), ROPA Art. 30 DSGVO (HTML/CSV-Export), Asset-Inventory (CMDB-Lite mit Kritikalität/Schutzbedarf), Compliance-Dashboard (Risk-Grade + 10 KPIs konsolidiert).
  • Welle 10 — GRC-Core (5): Incident-Response (NIS2 Art. 23 mit 24h/72h-Deadlines + HTML-Report), Vendor-Catalog (Vertrags-Tracking + 90d-Renewal-Alerts + AVV/SOC2/ISO27k-Flags), Awareness-Training-Tracking (6 Trainings × User-Matrix mit 1-Jahr-Gültigkeit), Vuln-Scan-Import (Nessus/OpenVAS XML, Dedup per Host+CVE+Port), KPIs.
  • Welle 11 — Continuity & Compliance (5): BCM/BIA (Geschäftsprozess-Tracking mit RTO/RPO/MTPD), Pentest-Schedule (5 Methodiken PTES/OSSTMM/NIST/BSI/OWASP), Access-Review (SoX/ISO A.9.2.5 mit Quartals-/Jahres-Cycles), Crypto-Key-Inventory (Lifecycle, Schwach-Erkennung AES<256/RSA<2048, Rotation-Overdue), Audit-Trail-Archive (Long-term mit SHA-256 Hash-Chain + Verify).
  • Welle 12 — Risikoregister & Trends (5): Risikoregister (Inherent + Residual Score, Treatment accept/mitigate/transfer/avoid), KPI-Trends (tägliche Snapshots, 11 KPIs mit SVG-Sparklines, 30/90/180/365d), Change-Management (ITIL-RFC-Workflow mit 4-Augen-Approval), Document-Library (Versioned Policies/SOPs, SHA-256-Integrity, Review-Cycles, User-Acks), On-/Offboarding-Checklisten (13 + 12 Tasks rollen-zugewiesen).
  • Welle 13 — Threat-Engineering (5): Threat-Modeling STRIDE (Spoofing/Tampering/Repudiation/Info-Disclosure/DoS/Elevation, Risk-Score 1-25), Data-Classification (4 Schutzstufen + C/I/A 1-5, PII/Art.9-Flags), Capacity-Forecast (12-Mon-Wachstums-Forecast, Threshold Warn/Crit, SVG-Sparklines), Knowledge-Base (Markdown-Artikel, 6 Kategorien, Volltext-Suche), MDM-Compliance (Auto-Check Encryption/MFA/AV/FW/MDM/Patches/Stale).
  • Welle 14 — Detection-Stack (5): SOAR-Playbooks (4 vorgefertigte: Phishing/Ransomware/Account/Datenpanne), Threat-Hunting-Queries (SPL/KQL/Sigma + MITRE-ATT&CK), IOC-Manager (10 Typen, TLP-Klassifizierung, STIX-2.1-Export), Alert-Tuning (False-Positive-Suppression mit Top-Noisy-Detection), Forensic-Timeline (konsolidiert aus Audit-Log + Wazuh + Incidents).
  • Welle 15 — Compliance-Frameworks (5): TISAX 6.0 / VDA-ISA (31 Controls, Auto-Coverage gegen Findings), DORA EU 2022/2554 (5 Pillars, Maturity 0-5), CRA EU 2024/2847 (6 Annexes, Konformitäts-Status), PCI-DSS v4.0 (12 Requirements, 40+ Controls), CSA Cloud Controls Matrix v4 (17 Domains).
  • Welle 16 — Reports & UX (5): Executive Security Report (Stakeholder-PDF, Risk-Grade + KPIs + Top-5-Risiken), Auditor-View Magic-Link (zeit-begrenzt, Read-Only, kein Login nötig), Multi-Lang Audit-Report (DE/EN per Session), Dashboard-Builder (Custom Widgets), Mobile-Tweaks.
  • Welle 17 — Integrationen (5): Jira (REST API v3, Issue-Create), Slack-Bot (Slash-Commands /msc5 status|risks|incidents mit HMAC-Signature-Verify), LDAP/AD (Bind-Test + User-Sync), SIEM-Push (Splunk HEC / Elastic Bulk / Sumo / Generic), Zapier/n8n-Webhooks (Outbound-Trigger pro Event).
  • Risk-Heatmap-Fix: Farben jetzt score-basiert (L × I): grün <5, amber 5-9, orange 10-14, rot ≥15. Score-Indikator pro Cell, Titel nicht mehr abgeschnitten, iframe 610px.
  • admin.php Cleanup (Phase 3+4): 6351 → 3375 Zeilen (−47%). 41 migrierte Card-HTML-Blöcke (~860 Zeilen) und ~100 JS-Handler-Funktionen (~2050 Zeilen) entfernt. Sidebar von 60+ auf 12 Einträge reduziert. JS-Init-Calls von ~35 auf 1 pro Page.
  • Header-Rebrand: admin.php Brand jetzt „Admin Control Panel" (statt „Benutzerverwaltung"), index.php Admin-Button jetzt „ACP". Page-H1 „Admin Control Panel" mit Subtitle „User · Security · Operations · Integrations".
  • JS extern ausgelagert: static/soc.js (~25 KB), static/grc.js (~30 KB), static/compliance.js (~26 KB) — keine inline-Scripts mehr in den 3 neuen Pages.
  • Neue API-Endpoints (40): anomaly-detect, webhook-test, backup-cron, cron-list, findings-diff, siem-correlate, risk-heatmap, cve-watchlist, dsgvo-ropa, asset-inventory, incident, vendor-catalog, awareness-training, vuln-scan-import, compliance-dashboard, bcm, pentest-schedule, access-review, crypto-keys, audit-archive, risk-register, metrics, change-mgmt, doc-library, onboarding, threat-model, data-classification, capacity, knowledge-base, mdm, soar-playbooks, threat-hunting, ioc-manager, alert-tuning, forensic-timeline, compliance-tisax/dora/cra/pci/ccm, report-executive, auditor-view, report-multilang, dashboard-builder, integration-jira/slack/ldap/siem/zapier.
  • Performance: Erste Ladezeit admin.php von ~5 s auf ~0.6 s reduziert. Sub-Pages laden nur ihren eigenen Card-Set + JS — kein Cross-Domain-Overhead.
  • Tech-Stack-Total: Tool jetzt 4 thematische Pages, 84 P-Features, ~150 PHP-API-Endpoints, ~80 KB shared-JS, vollständig ITIL/NIS2/DSGVO/ISO27k/PCI/TISAX/DORA/CRA-aware.
  • UX-Polish: Tab-Nav-Tooltips (Admin/GRC/SOC/Compliance erklärt) · Card-Flash beim Sidebar-Click (2× pulse, 1.1s) · Center-Scroll-Logik (Cards mittig im Viewport unter Sticky-Stack) · Native Browser-Tooltips per title-Attribut.
  • Sticky-Stack-Architektur: Header (fixed top:0, z:50) + Tab-Nav (sticky top:60, z:40) + Page-Header (sticky top:125, z:30) + Sidebar (sticky top:215). Beim Scrollen bleibt gesamter Top-Bereich (Logo+User → Tabs → Seiten-Titel) fixiert auf allen 4 Pages. body{padding-top:60px} kompensiert fixed Header.
  • Reports-Card erweitert: 🗑 Delete-Button pro Datei (mit Confirm-Dialog) · 3 Bulk-Delete-Buttons (Marktanalyse / Features / Alle) · 📄 PDF-Export-Button pro Zeile (öffnet Report + auto-print → User wählt „Als PDF speichern"). Backend api/reports-list.php mit action=delete&name=... und action=delete_all&type=.... Audit-Log-Events report.delete + report.delete_all.
  • AI-Kosten Smart-Format: Backend liefert 6-Dezimalstellen-Präzision (statt 2). Frontend formatiert dynamisch — sub-Cent: 4-6 Dezimalstellen, normal: 2. Tooltip zeigt exakten 8-Dezimalstellen-Wert. 885 Tokens × OpenAI-Mix-Rate $4.75/M = $0.0042 jetzt sichtbar (vorher gerundet auf $0.00).
  • Risk-Heatmap-Fix: Farben jetzt score-basiert (L × I): grün <5, amber 5-9, orange 10-14, rot ≥15. Score-Indikator pro Cell. Titel nicht mehr abgeschnitten, iframe 610px.
  • Bug-Fixes: Phase-4-Cleanup hinterließ orphan } in Line 2371 → ALLE admin.php-Buttons broken (User-Create, Wazuh, GitHub, Cron, Integrationen) → fixed. body::before z-index:-1 explizit (war ungesetzt → fixed Header invisible). Tab-Nav width:100% box-sizing:border-box (Sticky-Layout-Shrink). Position-Sticky auf .header → position:fixed (zuverlässiger).
  • Header-Rebrand: admin.php Brand-Title hardcoded „Admin Control Panel" (statt i18n-Lookup), Subtitle „User · Security · Operations · Integrations". index.php Admin-Button + audit.php Header-Button beide auf „ACP" umbenannt.
  • Inkrementeller FTPS-Sync: Python-Script ftps_mirror_inc.py mit MLSD-mtime-Vergleich + Size-Check + Skip-Logic. Erst-Mirror 1.9 GB / 2.353 Files. Spätere Syncs nur Diff (typisch < 1 MB).
  • Marktanalyse 2026 erweitert: 8 Open-Source-Verkaufsmodelle (Open-Core, Outright, Acqui-Hire, Asset-Sale, Re-License, White-Label, Schenkung, VC-Spin-Off) mit Wert-Ranges. Pricing-Empfehlung erhöht (Team SaaS 449€/Mon, Team Perpetual 14.900€). Asset-Wert 569k–1.072k€, SaaS-Bewertung 12 Mon 4,5 Mio€, Outright 600k–1,5 Mio€. Wettbewerbsmatrix erweitert um OneTrust + ServiceNow GRC.
  • Freelancer-Aufwand-Schätzung: ~9.500 h realistisch · Senior 130€/h → 1,24 Mio€ · Agentur 11.000 h × 140€/h → 1,54 Mio€ · Behörden-Aufschlag → 1,8–2,3 Mio€.
v2026.04.25 25. April 2026 Feature
  • i18n DE/EN komplett ausgerollt: Sprachumschaltung jetzt auf wazuh-agent.php, changelog.php, training_lab.php, admin.php, wazuh.php sowie audit.php (Header, Toolbar, Prompt-Generator, Audit-Row-Template, Modals, Settings, Notes). ~1100 neue Übersetzungs-Keys (wa.*, cl.*, tl.*, ad.*, wz.*, au.*, ar.*, nt.*, ch.*, ms.*, sup.*) in lang/de.json + lang/en.json.
  • KI-Endpoints sprach-bewusst: analyze, reformulate, reformulate-feststellung, summarize, humanize erkennen aktive Sprache und antworten in DE oder EN.
  • Englische Prüffragen-Kataloge (382 KB, 1907 Strings): Teil 1A/1B/2/3 BSI/4 ISO via neu gebautem CLI-Tool tools/translate_catalogs.php in 202 OpenAI-Batches übersetzt. Lang-aware Loader greift via file_exists() mit DE-Fallback.
  • Sprach-Switcher mit echten Inline-SVG-Flaggen (DE-Tricolor + UK-Union-Jack) statt Emoji-Text.
  • Multi-User Team-Chat live: Floating-Panel mit Markdown-light, @-Mentions + Autocomplete, Reply-Quote-Jump, 8 Preset-Reaktionen, Edit/Delete, Typing-Indicator, Server-side-Search, Unread-Counter, File-Attach (10 MB, Image-Preview), System-Messages. 8 neue Actions in api/session.php + api/chat-attach.php/chat-attach-file.php; piggyback im existierenden 2.5 s State-Polling.
  • Footer-Support-Formular (index.php): Modal mit Name/E-Mail/Kategorie/Betreff/Nachricht → api/support-mail.php → Mail an support@msc5.de mit Reply-To, Audit-Block, Rate-Limit 1/min.
  • Multi-User-Banner sichtbar: Header zeigt jetzt fett „MULTI-USER-SITZUNG" / „MULTI-USER SESSION" + Host-/Teilnehmer-Tooltips i18n.
  • Fixes: Reformulate/Analyze (3 Bugs: Provider-Fallback, PHP-8-TypeError bei trim(array), Response-Schema-Mismatch data.text vs data.result vs data[0]) → alle Endpoints nutzen jetzt enforce_ai_guard() + run_prompt_text(). Header-Buttons in audit.php auf einheitliche Höhe (32 px) gebracht. Prüfer-Kürzel wird in audit.php aus config.json users[] aufgelöst, nicht mehr nur aus Session — fixt fälschlichen „Kürzel erforderlich"-Alert.
v2026.04.24 24. April 2026 Feature
  • Neu — Mehrsprachigkeit DE/EN (i18n-System): Komplettes Übersetzungs-Framework auf allen Kernseiten. Deutsch bleibt Standard, Englisch per Switcher oder ?lang=en umschaltbar. Sprachwahl persistiert via Session + 1-Jahres-Cookie (msc5_lang, SameSite=Lax, Secure auf HTTPS). Detection-Reihenfolge: GET-Parameter → Session → Cookie → Accept-Language-Header → DE-Fallback.
  • Neu — Zentrale i18n-Infrastruktur (includes/i18n.php): JSON-basierte Übersetzungs-Dictionaries (lang/de.json, lang/en.json) mit Dot-Notation-Keys (z.B. card.btn.start_now, ft.field_feststellung). Helper-Funktionen: t($key) (raw), te($key) (HTML-escaped), t($key, null, [':name' => 'val']) (Parameter-Substitution), i18n_current_lang(), i18n_switcher_html(), i18n_switcher_css().
  • Neu — Sprach-Switcher in Header auf allen Hauptseiten: Kompakter DE/EN-Toggle oben rechts neben User-Badge auf index.php, admin.php, audit.php, wazuh.php, training_lab.php, changelog.php, wazuh-agent.php. Aktive Sprache hervorgehoben, ein Klick wechselt und reloadet Seite mit persistierter Wahl.
  • Geändert — Authentifizierungs-Seiten komplett übersetzt: login.php, 2fa.php, forgot_password.php, change_password.php, twofa_setup.php — alle Labels, Placeholder, Buttons, Fehlermeldungen, Hinweistexte und JS-Alerts über i18n-Keys. TOTP-Setup JS-Strings via json_encode()-Pattern ins const I18N = {...}-Objekt eingebettet.
  • Geändert — index.php tief übersetzt: Intro-Titel + Beschreibung, Versionsleiste, Flash-Message, alle Card-Sub-Texte (Web/Windows/Macher/macOS/USB/iOS/Schwachstellen/Pentest/Übungslabor/Wazuh/Vorschriften-Upload), alle Action-Buttons (Jetzt starten, Multi-User, Download .zip, Jetzt kaufen, Offline/Online, Offline/Online starten, Labor starten, Dashboard öffnen, Konfigurieren), Multi-User-Modal (Titel, Labels, Placeholder, Abbrechen/Start + JS-Fehler via MU_I18N-Objekt), Werkzeuge-Divider, Freitext-Card + komplettes Freitext-Modal (Schreibstil-Profil-Dropdown, Dienststelle/Inspektionsnummer/Prüfer/Teamleiter/Projekt/Feststellung/Bewertung/Folge/Kurzfassung, alle Toolbar-Tooltips, Status-Filter, Export-/Save-Buttons), Seiten-Footer.
  • Neu — Englische Übersetzungen: ~250 Übersetzungs-Keys in lang/en.json — Pendants aller deutschen Strings aus den genannten Seiten. Platzhalter wie :price bleiben erhalten (z.B. card.paid_from = "🔒 Paid · from :price € / month").
  • Technisch — Neue Dateien: includes/i18n.php (Translator + Sprach-Detection + Switcher-Helpers), lang/de.json (deutsche Übersetzungen), lang/en.json (englische Übersetzungen).
  • Technisch — Geänderte Dateien: login.php, 2fa.php, forgot_password.php, change_password.php, twofa_setup.php (vollständige Übersetzung inkl. JS), index.php (Header + tiefe Content-Übersetzung), admin.php, audit.php, wazuh.php, training_lab.php, changelog.php, wazuh-agent.php (Switcher + Header + Page-Title — tiefe Content-Übersetzung folgt).
  • Offen — Noch ausstehend für kommende Version: Tiefe Content-Übersetzung von admin.php (Benutzertabelle, Settings-Cards, AI-Usage), audit.php (Sidebar, Module, Teile 1a/1b/2/…, Notes-Modal, Prompt-Generator), wazuh.php (Dashboard-Cards, Alerts, Kill-Chain), training_lab.php (Tabs, Target-Cards), changelog.php (aktuell noch vollständig DE), wazuh-agent.php, schwachstellenanalyse.php, pentest.php.
v2026.04.23 23. April 2026 Major Release
  • Neu — Multi-User-Sitzung (Live-Collaboration in audit.php): Vollständiger Polling-basierter Collab-Layer. Host legt Sitzung an, fügt Teilnehmer per Prüferkürzel hinzu, System erzeugt eindeutige Session-ID (?sid=…). Alle Teilnehmer arbeiten gleichzeitig am Audit: Field-Locks (8s TTL + 4s Heartbeat) verhindern Überschreibungen, Optimistic Concurrency via expectedRev-Counter fängt Kollisionen ab (HTTP 409 + Remote-Apply), Presence-Bar oben zeigt Host (★ blau) + Teilnehmer (grau bei Inaktivität >20s). Host-only Guards für rows.add/remove/reorder + meta.prueffragen/vorschriften. Fremd-Lock wird im DOM als magenta Outline + 🔒 KÜRZEL-Badge sichtbar.
  • Neu — Session-Sync-Backend api/session.php: flock-geschützte JSON-State-Files pro Session unter /sessions/<sid>.json mit atomarem tmp→rename-Write. Actions: create / join / state / patch / lock / unlock / heartbeat / leave. State-Schema: {sid, host, participants, rev, doc:{rows,meta}, locks, presence, log}. Automatisches Directory-Setup + .htaccess Require all denied. Client-Polling alle 2.5s, Autosave-Hook pusht doc.rows mit expectedRev. beforeunload sendet Leave-Beacon.
  • Neu — Diktat über Whisper (audit.php): Komplett-Neubau der Mikrofon-Aufnahme für Feststellungs-Feld. Click → MediaRecorder (webm/opus) → Upload an api/transcribe-snippet.php → OpenAI Whisper-Transkription → Einfügung in Feststellung via execCommand('insertText') an Cursor-Position, mit automatischem Leerzeichen-Handling. Halluzinations-Filter verwirft leere/unverständliche Ergebnisse. Auto-Stop nach 120s, Doppelklick stoppt manuell.
  • Neu — Prüferkürzel-System (admin.php + api/users.php): Benutzerverwaltung erhält neues Pflichtfeld "Prüferkürzel" (2–12 Zeichen A–Z/0–9, systemweit unique). Validierung bei user.add, neue API-Action set_kuerzel für nachträgliche Bearbeitung mit Duplikat-Check + Audit-Log-Eintrag. Neue Spalte "Kürzel" in der User-Tabelle zeigt monospace Badge #3d84f7 mit ✎-Edit-Button. Voraussetzung für Multi-User-Sitzungen.
  • Neu — Auto-Fill Prüferkürzel in Audit-Zeilen: Beim Login wird das hinterlegte Prüferkürzel in CURRENT_USER_KUERZEL geladen und in jede neu angelegte Audit-Zeile via restoreKuerzel automatisch eingetragen. Kein manuelles Tippen mehr pro Zeile.
  • Neu — Multi-User-Dialog auf Startseite (index.php): Neuer Button "Multi-User" neben "Jetzt starten" (gleicher btn-blue-Style, margin-left:auto). Öffnet Login-optik-Modal mit Host-Feld + dynamischer Teilnehmer-Chip-Liste (Enter oder +-Button zum Hinzufügen, × zum Entfernen). "Sitzung starten" ruft api/session.php?action=create, leitet auf audit.php?sid=….
  • Neu — "Alle auswählen" im MITRE Kill-Chain-Panel (wazuh.php): Neuer Button im Kill-Chain-Filter, erscheint wenn aktive Taktiken existieren und nicht bereits alle ausgewählt sind. Ein Klick fügt alle verfügbaren Taktiken zum Alert-Filter + wechselt automatisch auf den Alerts-Tab.
  • Neu — BSI-Code-Linkify nach KI-Reformulierung: Neuer DOM-TreeWalker autoLinkifyBsiCodes() erkennt Vorschriftcodes (Regex \b[A-Z][A-Z0-9]{0,10}(?:\.[A-Z0-9]+){1,6}\b) in Text-Nodes und wandelt sie in magenta .quelle-mention-Chips mit Hover-Tooltip. Aktiv nach reformulateFeststellung, applyResult (Bewertung + Empfehlung) und reformulate (einzelfeld). Codes bleiben auch nach KI-Analyse anklickbar.
  • Geändert — Import-Reihenfolge Wazuh/CVE → Audit: Bei Alert-zu-Prüffrage-Import läuft findBsiFiles jetzt zuerst, dann highlightQuellen vor setFsContent. Sicherstellt dass Quellen-Chips bereits beim ersten Render in Magenta erscheinen.
  • Fix — Multi-User-Modal-Zentrierung: Modal wurde im transformierten .card-Ancestor gerendert, position:fixed wurde dadurch relativ zum Transform-Parent. Fix: IIFE reparented Backdrop + Modal zu document.body beim Script-Load.
  • Fix — Kritischer Parse-Error in api/session.php: $GLOBALS als lexical variable in Closure use()-Clauses war PHP-Fatal ("Cannot use auto-global as lexical variable"). Betraf 4 Closures. Entfernt — Superglobal ist ohnehin automatisch innerhalb Closures verfügbar. Erklärte die "Unexpected end of JSON input"-Fehler beim Session-Start.
  • Infrastruktur — Auto-Setup Sessions-Verzeichnis: api/session.php erstellt beim ersten Request automatisch /sessions/ mit 0750-Mode + .htaccess Require all denied. Keine manuelle Server-Konfiguration nötig.
v2026.04.22 22. April 2026 Feature
  • Neu — Automatischer Changelog-PDF-Versand: Bei jedem neuen Changelog-Eintrag (Speichern via api/changelog-save.php) wird automatisch ein PDF generiert und als Anhang per E-Mail versendet. Der Mail-Body enthält eine Zusammenfassung (Version / Datum / Typ / Item-Count) und einen Link zur Online-Changelog-Seite. Das PDF ist A4 mit Helvetica, automatischem Zeilen- und Seitenumbruch und einem kleinen MSC5Labs-Logo + Footer auf jeder Seite.
  • Neu — Schlanker PDF-Generator includes/simple_pdf.php: Eigener Mini-PDF-Builder ohne externe Library (ca. 180 Zeilen PHP). Erzeugt valide PDF-1.4-Dokumente mit Überschriften, Fließtext, Bullet-Listen, Trennlinien und automatischem Page-Break. Unterstützt Windows-1252-Encoding für deutsche Umlaute.
  • Neu — Manueller Reload-Button im Wazuh-Dashboard: Neuer Button "🔄 Neu laden" im Header lädt alle Daten (Overview / KPIs / Charts / Tabs) auf Knopfdruck neu. Icon rotiert während des Ladevorgangs (CSS-Animation), bei Erfolg wechselt der Button kurz auf Grün mit ✓, bei Fehler auf Rot mit ✗. Zusätzliches Keyboard-Shortcut R löst den Reload aus, wenn kein Input-Feld fokussiert ist.
  • Neu — Randomisierter Demo-Daten-Generator: Jeder Reload im Demo-Modus erzeugt jetzt komplett neue, glaubwürdige Demo-Ergebnisse aus einem deutlich größeren Pool: 15 Agents (Status wird pro Call gewürfelt — aktiv/disconnected/never_connected), 27 Alert-Templates (davon 8–14 zufällig ausgewählt, Level ±1 variiert, Agent gezogen), 17 CVE-Templates (5–10 ausgewählt, CVSS ±0.3 variiert, Affected-Agents gemischt), 13 SCA-Policies (5–9 ausgewählt, Score ±6 variiert, Pass/Fail nachjustiert).
  • Geändert — Feststellung-Umformulierung (audit.php/reformulate): Der Prompt für api/reformulate-feststellung.php wurde komplett neu geschrieben. Die KI formuliert nur noch Stichpunkte in vollständige Sätze um bzw. schreibt bestehende Sätze BSI-Grundschutz-konform (sachlich, deskriptiv, passivlastig) — keine Bewertungen, keine Risikoeinschätzungen, keine Empfehlungen, keine Soll-Ist-Vergleiche. Die Bewertung bleibt ausschließlich der KI-Bewertung (Feld 2) vorbehalten, welche die Feststellung unter Berücksichtigung der in Feld (A) ausgewählten Bausteine beurteilt. Zielumfang: 2–3 Sätze.
  • Geändert — Footer fixiert (wazuh.php + index.php): Beide Seiten nutzen jetzt position:fixed statt der bisherigen Sticky-to-Bottom-Flex-Technik. Der Footer klebt immer am unteren Viewport-Rand (auch beim Scrollen), mit halbtransparentem Hintergrund, backdrop-filter: blur(8px) und dezentem Schatten nach oben. Body bekommt ein reserviertes padding-bottom, damit der letzte Content nicht verdeckt wird.
  • Geändert — Auto-Refresh-Toggle visuell deutlich: Der Auto-Refresh-Schalter im Wazuh-Header zeigt jetzt klar erkennbar seinen Zustand: Orange mit "AUS" wenn deaktiviert, Grün mit "AN (30s)" wenn aktiv (mit pulsierendem Glow-Dot). Vorher war der Off-Zustand zu dezent und wurde übersehen.
  • Geändert — Login-Logo zurück auf MSC5Labs: Das auf der Login-Seite temporär eingesetzte #TMYLGGNS-Wal-Logo wurde wieder gegen das Original-MSC5Labs_Logo.png getauscht. Die Größenanpassung (220px) und der stärkere Cyan-Glow sowie die Entfernung aller anderen dekorativen Hintergrund-Effekte bleiben bestehen — das Original-Logo ist jetzt alleine der visuelle Hingucker.
  • Fix — Dropdown-Optionen in admin.php lesbar: Die <option>-Elemente im Audit-Log-Filter (Alle Events / Nur Anmeldungen / Nur Fehlanmeldungen / Nur Benutzer / Nur Sicherheit / Nur Wazuh) und im "letzte X"-Dropdown waren in Chrome/Edge unlesbar (blasser Text auf hell-lila Hintergrund). Gefixt durch globale select option { background:#0b1829; color:#e8edf5 }-Regel inkl. Hover-State.
  • Technisch — Geänderte Dateien: login.php (Logo-Revert), api/reformulate-feststellung.php (Prompt-Überarbeitung), api/wazuh.php (Demo-Generator-Pools + Randomisierung), wazuh.php (Reload-Button + Auto-Refresh-Style + Footer fixed), index.php (Footer fixed), admin.php (Select-Option CSS), api/changelog-save.php (PDF-Mail-Hook).
  • Technisch — Neue Dateien: includes/simple_pdf.php (Mini-PDF-Builder), includes/changelog_mailer.php (MIME-Multipart-Mail mit PDF-Anhang).
v2026.04.21 21. April 2026 Major
  • Neu — Chart-Zoom-Lightbox: Alle 4 Wazuh-Dashboard-Diagramme (Alerts 24h-Timeline, Top MITRE-Tactics, Top-Agents, Severity-Donut) sowie die MITRE Kill-Chain sind jetzt klickbar und öffnen sich zentriert vergrößert als Lightbox-Modal. SVG-Inhalte skalieren mit bis zu 65vh Höhe, HTML-Bars bekommen im Zoom größere Labels und mehr Einträge (Top-20 statt Top-5). Auto-Refresh aktualisiert auch den geöffneten Zoom-View live. Schließen per Esc oder Klick außerhalb.
  • Neu — Kill-Chain Multi-Select: Die 13 MITRE-ATT&CK-Taktiken in der Kill-Chain lassen sich jetzt einzeln und mehrfach auswählen (statt wie bisher nur eine). Klick toggelt, Shift+Klick setzt exklusiv, ausgewählte Zellen zeigen ✓-Badge + cyanen Glow, nicht-ausgewählte werden gedimmt. Alert-Tabelle filtert per OR-Verknüpfung, Tactic-Dropdown synchronisiert sich automatisch ("Mehrere (X)" bei >1 Auswahl).
  • Neu — Agent-Detailseite wazuh-agent.php: Klick auf Agent-Namen in der Agents-Tabelle öffnet eine eigene Detailseite mit 6 KPI-Kacheln (Status, Alerts total, kritische Alerts, Schwachstellen, Ø SCA-Score, Last Seen) und drei gefilterten Panels: nur Alerts/Vulns/SCA dieses Agents.
  • Neu — Saved Views: In allen 4 Filter-Bars (Alerts, Agents, Schwachstellen, SCA) ist ein 💾 Views ▾-Dropdown hinzugekommen. Damit lassen sich beliebige Filter-Kombis unter eigenem Namen speichern ("Meine Morgenroutine", "Windows-Server", "Nur kritisch") und per Klick wieder laden. Per-User persistiert in localStorage; einzelne Views löschbar via 🗑-Icon.
  • Neu — Mini-Charts in Vulns & SCA Tabs: Über den Tabellen in den Tabs Schwachstellen und Compliance/SCA erscheinen jetzt kompakte 3-spaltige Auswertungen: bei Vulns CVSS-Verteilung + Top-Pakete + betroffene Agents, bei SCA ein SVG-Score-Histogramm mit Durchschnittslinie + Top-Policies + schlechteste Agents.
  • Neu — Alert-Detail-Modal Agent-Click-Filter: Im Alert-Detail-Modal ist der Agent-Name jetzt klickbarer Link → setzt den Agent-Filter im Alerts-Tab, schließt das Modal und wechselt automatisch auf Alerts (inkl. Toast "Alerts gefiltert auf Agent X").
  • Neu — Per-User Modul-Berechtigungen: In admin.php gibt es eine neue Tabellenspalte Module mit Modal zum Verwalten der Modul-Zugriffe (audit, wazuh, schwachstellen, pentest, training, vorschriften_upload, downloads). Nicht freigeschaltete Module werden auf dem Dashboard ausgeblendet und direkte Seiten-URLs (audit.php, wazuh.php etc.) leiten mit Flash-Banner "Zugriff verweigert" zurück auf index.php. Admins haben immer Zugriff auf alle Module.
  • Neu — API-Key-Verschlüsselung (AES-256-GCM): API-Schlüssel in config.json (api_key, openai_key, perplexity_key, wazuh_password) werden jetzt mit dem automatisch generierten app_enc_key (32 Byte Hex) verschlüsselt. Transparent in helpers.php via openssl_encrypt/decrypt — Werte im JSON haben den Prefix ENC::base64(IV+TAG+ciphertext). Admin-Button "🔐 Jetzt alle Keys verschlüsseln" migriert bestehende Klartext-Einträge.
  • Neu — Admin-Audit-Log: Neue Datei includes/audit_log.php protokolliert jede Admin-Aktion mit Timestamp, User, Rolle, IP, User-Agent, Action und Details in data/admin_audit.log (JSONL mit automatischer Rotation bei 5 MB, maximal 3 Rotationen).
  • Neu — Auth-Event-Logging: Erweiterung des Audit-Logs um alle Login-/Logout-/2FA-/Passwort-Events. Protokolliert werden: auth.login_success, auth.login_failed (mit Grund: wrong_password / unknown_user), auth.login_password_ok (Zwischenstufe vor 2FA), auth.logout, auth.2fa_success/_failed (mit method: totp/backup/email), auth.password_change/_failed, auth.password_reset_issued/_unknown_user.
  • Neu — Audit-Log-Viewer mit Filter & Export: In admin.php zeigt der Audit-Log-Bereich jetzt: Filter-Dropdown (Alle / 🔐 Anmeldungen / ⚠ Fehlanmeldungen / 👤 Benutzer / 🔒 Sicherheit / 🛡 Wazuh), 🔍-Freitextsuche, Anzeigelimit (50/200/500) und Export-Buttons ⬇ JSON + ⬇ TXT (respektieren den aktuellen Filter). Zusätzlich Button 🗑 Verlauf löschen (löscht alle Log-Dateien; die Lösch-Aktion selbst wird als security.audit_log_cleared wiederum protokolliert). Fehl-Login-Zeilen haben roten Hintergrund-Tint zur schnellen Identifikation.
  • Neu — Wazuh Scheduled-Import + E-Mail-Alert: Neuer Endpoint api/wazuh-cron.php (Auth via URL-Token oder Admin-Login) zieht bei Aufruf kritische Alerts, merkt sich bereits versendete Fingerprints in data/wazuh_cron_state.json und verschickt bei neuen Treffern ab Level 12 eine formatierte E-Mail-Benachrichtigung an den konfigurierten Empfänger. Admin-UI mit Kopier-Button für Cron-URL, Test-Button "Jetzt manuell ausführen" und Token-Regeneration.
  • Neu — Cron-Intervall-Auswahl: Das Scheduled-Import-Card hat jetzt ein Intervall-Dropdown: nur manuell/extern (Default) / 15 / 30 / 60 / 90 Minuten. Bei aktivem Intervall: (1) Browser-Auto-Trigger pingt den Endpoint automatisch während admin.php offen ist; (2) Intervall-Gate im Backend überspringt Doppel-Ausführungen innerhalb eines Intervalls ("skipped, next_allowed_in: X"). Der ▶ Jetzt manuell ausführen-Button umgeht das Gate via ?force=1.
  • Neu — Schwachstellen->Audit-Import mit Einzelauswahl: Auf der schwachstellenanalyse.php ist jede CVE-Zeile mit einer Checkbox versehen (Default: alle aktiv). Über der Tabelle: Schnellaktionen ✓ alle / ✕ keine / nur kritisch sowie Tri-State-Header-Checkbox. Der Import-Button zeigt live den Zähler der ausgewählten CVEs, ist bei 0 Auswahl gesperrt. Klick leitet die gewählten CVEs per localStorage-Handoff (msc5_cve_import) ins Audit-Tool weiter.
  • Neu — CVE → Audit-Mapper api/cve-to-audit.php: Nimmt CVE-Liste entgegen und erzeugt vollständige Audit-Feststellungen mit Prüffrage, Bezug, ausformuliertem Feststellungstext (inkl. NVD-Referenz-URL) und Heuristik-basiertem BSI-Grundschutz-Baustein-Vorschlag. Keyword-Mapping für Apache/nginx/Tomcat/OpenSSH/OpenSSL/MySQL/Log4j/Spring/SMB/RDP/Zerologon/Citrix/Firewall/VPN/DNS/PHP/GitLab etc.
  • Neu — NVD-Links für CVEs: CVE-IDs in der Schwachstellen-Tabelle sind klickbare Links zu https://nvd.nist.gov/vuln/detail/<id> (öffnen in neuem Tab, rot mit gepunkteter Unterstreichung und externem Link-Icon).
  • Neu — Dropdown-Optionen im Dark-Mode: Alle <select>-Dropdowns (Agent, MITRE-Tactic, CVSS, Score, Views) werden jetzt auch beim Aufklappen mit dunklem Hintergrund und hellem Text gerendert (option { background:#0b1829; color:#e8edf5 }). Behebt Problem dass Chrome/Edge unter Windows die OS-Defaults für Dropdown-Optionen ignoriert hat.
  • Geändert — Footer auf allen Seiten fixiert: index.php, audit.php, wazuh.php und wazuh-agent.php nutzen jetzt alle die Flex-Column-Body-Technik (body { display:flex; flex-direction:column; min-height:100vh } + body > footer { margin-top:auto }). Footer klebt bei wenig Content am unteren Viewport-Rand, scrollt bei langen Seiten natürlich mit.
  • Geändert — Dashboard-Layout bündig: Hero-Section ("Versionswahl" / "IT-Audit Plattform" / Beschreibung) + Versionsleiste + Flash-Message + Card-Grid sind jetzt in einem einzigen <div class="grid-section">-Container untergebracht. Dadurch teilen sich alle Elemente denselben Parent und fluchten garantiert links/rechts. Die .hero-Klasse wurde aufgelöst und die Typografie-Klassen in .intro-eyebrow, .intro-title, .intro-sub umbenannt.
  • Geändert — Login-Page Logo + Effekte: Das MSC5Labs-Logo auf login.php wurde gegen den #TMYLGGNS-Wal (transparenter Hintergrund, via PowerShell+System.Drawing freigestellt) ausgetauscht und von 140px auf 220px vergrößert. Alle dekorativen Hintergrund-Effekte (pulsierender Radial-Glow, horizontale Scanline, schwebende Partikel, Binär-Regen, Grid-Puls, blauer Card-Glow) wurden deaktiviert — nur noch das Logo selbst pulsiert im cyan Drop-Shadow.
  • Geändert — Donut-Legende im Zoom lesbar: Der Severity-Donut im Zoom-Modal hatte vorher die Legende abgeschnitten (SVG wurde durch globales CSS auf 100% Breite gestretcht). Gefixt durch explizite SVG-Dimensionen (360px) und inline !important, die den globalen Zoom-Selektor überschreiben. Im Zoom-Modus Schriftgröße × 2, Dot-Size von 9 auf 16px, Prozent-Angabe zusätzlich in Klammern.
  • Technisch — Neue Dateien: includes/modules.php (Modul-Registry + require_module()), includes/audit_log.php (Rotating JSONL-Logger), api/wazuh-cron.php (Scheduled Import), wazuh-agent.php (Agent-Detail), api/cve-to-audit.php (CVE-Mapper), static/tmylggns.png (neues Login-Logo).
  • Technisch — Neue API-Actions in api/users.php: set_user_modules, encrypt_api_keys, get_audit_log, clear_audit_log, set_wazuh_cron, regenerate_cron_token. Alle mit admin_log()-Hook.
  • Technisch — Neue .htaccess-Routen: wazuh-agent, api/wazuh-cron, api/cve-to-audit.
v2026.04.20 20. April 2026 Major
  • Neu — Wazuh SIEM-Integration (Dashboard): Neue Seite wazuh.php mit KPI-Kacheln (Agents aktiv/getrennt/nie verbunden, kritische Alerts der letzten 24h, Schwachstellen, Compliance-Score) und Tabs für Alerts, Agents, Vulnerabilities und SCA. Enthält einen Demo-Modus mit 12 fiktiven Agents, 10 Beispiel-Alerts (inkl. MITRE-IDs T1110/T1003/T1059.001 etc.), 8 CVEs (u.a. CVE-2024-3094, CVE-2024-6387) und CIS/BSI-Grundschutz-SCA-Ergebnissen — läuft sofort ohne Serveranbindung.
  • Neu — Wazuh-Konfiguration im Admin: Eigener Block 🛡️ Wazuh SIEM-Integration in admin.php mit Feldern für Manager-URL (Port 55000), API-User, Passwort, Demo-Modus-Toggle und SSL-Verify-Option. Inklusive Verbindungstest-Button, der JWT-Authentifizierung gegen die echte Wazuh-API prüft (/security/user/authenticate).
  • Neu — Wazuh-Dashboard-Card: Cyanfarbene Kachel Wazuh Security Monitoring auf dem Haupt-Dashboard index.php mit Badge Demo oder Live, Direktlink zum Dashboard und (nur für Admins) sichtbarer Konfigurations-Shortcut nach admin.php#wazuh.
  • Neu — SCA-Export (Option B): Tab SCA-Export im Wazuh-Dashboard konvertiert OSCAL-1.1.x-Kataloge (BSI Methodik Grundschutz++ · 61 Anforderungen, BSI GS.json · 692, BSI GS__.json · 717, BSI Stand der Technik · 582) in Wazuh-SCA-Policies im YAML-Format. Auflösung von {{ insert: param, … }}-Platzhaltern, Mapping auf Compliance-Tags (bsi, bsi_group, bsi_modal, bsi_sec_level) und drei Modi: Inventory (alle Checks als Finding), Passive (alle PASS) oder Template (leere Rule-Platzhalter zum Befüllen).
  • Neu — Wazuh-Alerts → Audit-Feststellungen (Option C): Toolbar-Button 🛡️ Wazuh-Alerts importieren in audit.php öffnet ein Modal mit allen Alerts (Filter für kritische Alerts ab Level 10), erzeugt aus ausgewählten Alerts automatisch neue Audit-Zeilen mit vorgefüllter Prüffrage, Bezug und ausformuliertem Feststellungstext (inkl. Zeitpunkt, Agent, Rule-ID, MITRE-Technik, Meldungstext).
  • Neu — Heuristisches BSI-Baustein-Mapping: Endpoint api/wazuh-to-audit.php ordnet jedem Alert passende BSI-Grundschutz-Bausteine zu über ein dreistufiges Verfahren: (1) MITRE-ATT&CK-Technik (15 gängige TIDs wie T1110→ORP.4.A8/SYS.1.3, T1003→ORP.4.A15/SYS.2.1.A25), (2) Keyword-Matching am Meldungstext (SSH, Mimikatz, PowerShell, Portscan, AV, SMB, Mail, Webserver, Firewall) und (3) Wazuh-Rule-ID-Bereiche (55xx→PAM, 616xx→Defender, 92xx→AV etc.).
  • Neu — Auto-Quellenzuordnung im Audit: Beim Import matcht das Frontend die gelieferten BSI-IDs gegen Dateien im Vorschriften/-Ordner (z.B. ORP.4.A8ORP_4_Identitaets_und_Berechtigungsmanagement_Editon_2022.pdf) und setzt gefundene PDFs automatisch als Quellen-Chips. Respektiert die MAX_SOURCES-Grenze pro Zeile.
  • Neu — OSCAL-Katalog-Fallback: Findet das PDF-Matching für eine BSI-ID keine passende Datei (z.B. weil der Baustein-PDF nicht hinterlegt ist), wird automatisch der passende OSCAL-Katalog-JSON als Fallback-Quelle ergänzt (BSI GS__.json für SYS/APP/NET/ORP/OPS/CON/DER/INF/IND, BSI-Methodik-Grundschutz++-catalog.json für GC/STM/UMS/VRB/PERF) — so hat jede Zeile eine KI-auswertbare Referenz.
  • Neu — AI-Modell-Zuweisung pro Benutzer: In der Benutzerverwaltung (admin.php) kann pro User der erlaubte AI-Anbieter festgelegt werden: ○ Global (folgt System-Default), 🟣 Anthropic Claude, 🟢 OpenAI GPT-4o oder 🔵 Perplexity Sonar. Admins sind automatisch von jeder Restriktion befreit.
  • Neu — AI-Nutzungslimits pro Benutzer: Konfigurierbar im AI-Modal mit Limit (Anfragen, 0=unbegrenzt) und Periode (pro Tag oder pro Monat). Admins werden nicht gezählt und nicht limitiert. Bei erreichtem Kontingent liefern die AI-Endpoints HTTP 429 mit klarer Fehlermeldung und Reset-Hinweis.
  • Neu — Zähler-Reset & Live-Usage: Admin-Modal zeigt die aktuelle Nutzung des gewählten Users (Zähler, letzter Provider, Timestamp) und erlaubt Zurücksetzen des Zählers per Klick. Daten liegen in data/ai_usage.json.
  • Geändert — Guard-Mechanismus an AI-Endpoints: api/analyze.php, api/reformulate.php, api/reformulate-feststellung.php, api/summarize.php und api/humanize.php nutzen jetzt enforce_ai_guard() aus includes/user_limits.php — bricht Requests bei überschrittenem Limit oder gesperrtem Provider ab und erzwingt bei Nicht-Admins den ihnen zugewiesenen Provider (ignoriert das globale Setting). Erfolgreiche Calls inkrementieren den Zähler per track_ai_usage().
  • Geändert — API-Erweiterungen Benutzerverwaltung: api/users.php um drei Aktionen ergänzt: set_user_ai (Provider/Limit/Periode speichern), reset_user_usage (Zähler auf 0) und get_usage_overview (Liste aller User mit aktueller Nutzung).
  • Geändert — Sauberere URL-Routen: .htaccess um Routes ergänzt: wazuh, api/wazuh, api/wazuh-to-audit, api/export/wazuh-sca.
  • Fix — AI-Zelle in Benutzertabelle: Die neue Spalte AI-Anbieter / Limit rendert nicht mehr unsichtbar (ursprünglich button mit verschachtelten Flex-Spans, die mit der .btn{white-space:nowrap}-Regel kollidierten). Umgebaut auf einen schlanken <a>-Block mit display:block, Hover-Effekt und zweizeiligem Inhalt (Provider + Limit/Periode).
  • Technisch — Neue Dateien: wazuh.php, api/wazuh.php, api/wazuh-to-audit.php, api/export/wazuh-sca.php, includes/user_limits.php.
  • Technisch — Geänderte Dateien: index.php (Wazuh-Card + Footer-Link), audit.php (Import-Button, Modal, BSI-Matching-Logik), admin.php (Wazuh-Config, AI-Zuweisung, neue Tabellenspalte), api/users.php (3 neue Actions + Wazuh-Config-Handler), .htaccess (Rewrites).
v2026.04.19 18./19. April 2026 Major
  • Neu — Fixierter Header: Header, Toolbar und BSI-Ticker bleiben beim Scrollen oben fixiert (position: sticky auf Wrapper-Div .sticky-top) — sowohl auf audit.php als auch index.php.
  • Neu — Session-Timer Auto-Reset: Jede Seiten-Navigation setzt den 90-Min Abmelde-Timer automatisch zurück. Nur /api/*-Requests verlängern die Session nicht.
  • Neu — Täglicher Changelog-Check: Cron-Task prüft täglich um 18:00 Uhr, ob Updates vorliegen, und erstellt automatisch einen Changelog-Eintrag falls Änderungen am Source-Stand existieren.
  • Neu — Benutzer-Erstanlage ohne 2FA: Neu angelegte Benutzer müssen beim ersten Login kein 2FA durchlaufen — nur das vom Admin vergebene temporäre Passwort ändern. 2FA wird erst nach dem Passwortwechsel aktiv.
  • Neu — 2FA-Toggle pro Benutzer: In der Benutzerverwaltung (admin.php) kann 2FA pro User individuell aktiviert oder deaktiviert werden. Beim Deaktivieren wird der TOTP-Secret des Users automatisch entfernt.
  • Geändert — Passwort-Reset: reset_pw-Action setzt zusätzlich must_change_password=true, sodass der Benutzer beim nächsten Login sein Passwort ändern muss.
  • Offline-Version — WebLive-Sync: Alle aktuellen Webspace-Funktionen (Templates, Static-Assets, API-Routen) wurden in die Offline-Version MSC5_Win_VS integriert. Inkl. .php-Alias-Routen (audit.php → /audit, api/analyze.php → /api/analyze etc.) für volle WebLive-Kompatibilität ohne Template-Änderungen.
  • Offline-Version — Lokale GGUF-Auswahl: Offline-UI mit Radio-Buttons zur Auswahl der lokalen gpt4all GGUF-Modelle aus models/-Ordner wiederhergestellt. force_online-Toggle zwischen Cloud-API und lokaler KI.
  • Neu — Mikrofon-Auswahl pro Zeile: Dropdown neben jedem Diktat-Button in der Feststellung (Prüfteam). Pre-Claim via getUserMedia({deviceId:{exact}}) zwingt Chrome/Edge, das gewählte Gerät für SpeechRecognition zu nutzen. Persistent in localStorage.msc5_mic_id.
  • Neu — Hover-Tooltips Schwachstellenanalyse: Info-Dot je Scan-Methode (26 Methoden, offline + online) mit 280 px Erklärungs-Popup zu Funktion, Quelle und Beispielausgabe.
  • Neu — Hover-Tooltips Pentest: Info-Dot zu allen 37 Prüfmethoden (osint, dns, shodan, tls, smb, nse_safe, default_creds, spray, hashcrack u. a.) mit Titel + Erklärung (lila Theme, 300 px).
  • Geändert — Offline-Badge & Header: Offline-Banner und Moduspunkt in Warnrot statt Amber. Header-Buttons (Benutzer, Session, Abmelden) auf Schwachstellen- und Pentest-Seite an audit.php-Styling angeglichen.
  • Neu — Trainingslabor erweitert: 30 → 77 Ziele mit Schwierigkeitsstufen (Basic / Advanced / Expert) und Filter-Chips. Advanced- und Expert-Ziele mit 5–9 Schritt-für-Schritt-Aufgaben (collapsible). Szenarien u. a. adcs-esc1, kerberoast-forest, ransomware-dfir, apt-simulation, purple-team, k8s-escape, scada-refinery.
  • Neu — Zufalls-Scan-Ergebnisse: Trainings-Scans liefern randomisierte Ports (Pool 34), CVEs (Pool 22: Log4Shell, Zerologon, EternalBlue, CitrixBleed, Spring4Shell …) und OS-Fingerprints je Host-Typ. Math.random + Pool-Splice, kein Seed — keine zwei Scans identisch.
  • Fix — Tools-Row Auto-Hide: Bei fehlendem /api/pentest/tools-Endpoint (Web-Edition ohne Flask) wird Tool-Statuszeile automatisch ausgeblendet statt „Fehler beim Prüfen" anzuzeigen.
  • Fix — resolveRowProfile(): Helper liefert pro Zeile {profile, custom_stil}. Garantiert korrekte Stil-Anwendung (inkl. MontanaBlack / Custom-Profile) in Analyse, Feststellungs-Reformulierung, Bewertung und Empfehlung.
  • Neu — Changelog KI-Generator: Admin-Button „🤖 Change Log Updates (KI)" auf changelog.php. Admin gibt Stichpunkte ein, KI erzeugt formatierten Eintrag (Kategorie-Prefix, HTML-konform), Vorschau im Modal, Übernahme in Edit-Modus zur Nachbearbeitung.
  • Neu — Funktionsübersicht-PDF: Komplett überarbeitetes MSC5_Labs_Funktionsuebersicht.pdf mit allen aktuellen Features. Zwei Varianten: Dark-Cyan-Theme (Tool-Design) und druckfreundliche helle Variante.
  • Freitext-Modul – Schreibstil-Profile: 7 Profile (BSI, Militärisch, Technisch, Management, Audit, Forensik, 🫶 Humanizer) als Dropdown, wirken auf Umformulieren & Auto-Fill
  • Humanizer: 🫶-Button pro Feld (Feststellung, Bewertung, Folge, Kurzfassung) – entfernt AI-Muster (Wikipedia „Signs of AI writing") bei erhaltenem Fachinhalt
  • Prüfer-Hinweise (Diktat-Marker): „HINWEIS ANFANG … HINWEIS ENDE" + Inline [[…]] werden aus Quelltext entfernt und nur als Kontext an KI gegeben – nicht in der Ausgabe
  • Kurzfassung: Neues Feld unter Folge/Maßnahmen – KI verdichtet Feststellung+Bewertung+Folge in 5–7 Sätze
  • Inspektionsnummer: Split-Input mit Präfix „W-IN-" + zwei Nummern-Felder + Live-Preview
  • Projektname + Projektfirma/Ansprechpartner: Neue Felder unter Dienststelle
  • Prüfteamleiter: Zusätzliches Feld unter Prüfer
  • Rich-Text-Toolbar: Aufzählung (Stichpunkte), Nummerierte Liste, Einzug vor/zurück für Feststellung
  • Status-Toggle: „In Bearbeitung" / „Erledigt"-Buttons vor dem Speichern, mit Badge in Gespeichert-Übersicht
  • Speichern vs. Speichern & Neu: Getrennte Buttons, Upsert via Dokument-ID → keine Duplikate beim erneuten Speichern
  • Suche + Status-Filter: Live-Suche in Gespeichert-Übersicht über Inspektionsnummer, Dienststelle, Projekt, Thema, Prüfer; Status-Dropdown (Alle/Erledigt/In Bearbeitung/Offen)
  • Anlagen-Upload: PDF, Word, Excel, JSON, Audio per Drag&Drop oder File-Picker (max. 20 MB) – server-seitig unter uploads/anlagen/ mit .htaccess-Schutz
  • Sprach-Memos: MediaRecorder-Aufnahme mit Mikrofon-Auswahl, Live-Timer (Max. 10 Min), Inline-Audio-Player in Anlagen-Liste
  • Exports erweitert: Excel (SpreadsheetML 2003) + JSON + Word + PDF mit Profil, Projektdaten, Kurzfassung
  • Umformulieren-Buttons: Beschriftung „Let JHNLGGNS cook"; Auto-Fill-Button „JHNLGGNS macht das schon"
  • Session-Timeout: 60 → 90 Minuten
  • Changelog-Suche: Live-Filter mit Highlight über alle Versionen
  • Dashboard: Dropdown-Lesbarkeit (dark-mode-Fix) für Status-Filter
v2026.04.18 18. April 2026 Major
  • Schwachstellenanalyse: 26 Scan-Methoden in 6 Kategorien (Netzwerk, Schwachstellen, Web, OSINT, Dienste, Auth)
  • Live-OSINT Layer: Echte APIs – Google DoH, crt.sh, RDAP, Shodan InternetDB, circl.lu CVE, Wayback, HIBP
  • Methoden-Befund-Tabelle: Status/Risiko/Summary pro Scan-Methode
  • Multi-Select: Alle/Nur Live/Schnell/Keine Buttons
  • Export-Bericht mit Methoden-Befunden erweitert
v2026.04.17 17. April 2026 Feature
  • Pentest-Tool: 12 Recon-Methoden + 24 Scan-Methoden
  • Live-Recon: Echte DNS/Whois/CT/Shodan-Abfragen für reale Ziele
  • CVE-Enrichment: Shodan vulns + circl.lu Details im Exploit-Test
  • PowerShell-Button: klare Meldung für Web-Version (Desktop-only)
v2026.04.16 16. April 2026 Feature
  • Übungslabor: 15 Vuln-Ziele + 15 Pen-Ziele (Training-Simulator)
  • Target-Picker: Direkt-Integration in Schwachstellen- + Pentest-Tool
  • Training-Banner: Visueller Hinweis bei aktiven Lab-Zielen
  • URL-Launcher: ?target=X&training=1 für Ein-Klick-Einsprung
  • Dashboard-Card + Footer-Link zum Lab
v2026.04.09 09. April 2026 Fix
  • Recon-SSE-Fehler behoben (Fallback auf Training-Mock bei Web-Deploy)
  • Scan-404 behoben (Phase 2)
  • PowerShell-JSON-Parse-Error (HTML-Response) gefixt
v2026.04.01 01. April 2026 Initial
  • Erste öffentliche Web-Version (Hetzner-Deployment)
  • Basis-Tools: Audit, Schwachstellenanalyse, Pentest
  • Benutzer-Login + Admin-Panel
  • Multi-OS Standalone-Downloads (Windows, Linux, macOS)