# Accenture Application Security Standard V7.30 — Compliance ToDo > Basierend auf: Application Security Standard V 7.30, Effective Date: February 13, 2026 > Analysiert gegen: CapaKraken (Stand: 2026-03-27) --- ## Legende - OK = Bereits compliant - TODO = Muss implementiert werden - PARTIAL = Teilweise compliant, Nacharbeit noetig - N/A = Nicht anwendbar --- ## 3.1 Governance | # | Anforderung | Status | CapaKraken Stand | ToDo | |---|------------|--------|-----------------|------| | EAPPS.3.1.1 | App muss im AIR (Application Information Repository) registriert sein | TODO | Nicht registriert | AIR-ID beantragen | --- ## 3.2.1 Application Architecture | # | Anforderung | Status | CapaKraken Stand | ToDo | |---|------------|--------|-----------------|------| | 3.2.1.01 | Architectural document muss vorhanden sein | PARTIAL | CLAUDE.md + docs/ vorhanden, kein formelles Security Architecture Doc | Formelles Security Architecture Document erstellen | | 3.2.1.03 | Kein direkter Internet-Zugang zu Datenbanken | OK | PostgreSQL nur ueber Docker-Netzwerk, nicht extern exponiert | — | | 3.2.1.04 | Proaktives Monitoring bei business-kritischen Systemen | PARTIAL | Health-Endpoints vorhanden, kein externes Monitoring | Uptime-Monitoring einrichten (UptimeRobot o.ae.) | --- ## 3.2.2.1 Identity and Access Management | # | Anforderung | Status | CapaKraken Stand | ToDo | |---|------------|--------|-----------------|------| | 3.2.2.1.01 | Compliant mit Identification and Authentication Standard | PARTIAL | Auth.js v5 mit Argon2 Passwort-Hashing, RBAC vorhanden | ESO/ADFS Integration pruefen (aktuell eigene Auth) | | 3.2.2.1.02 | OAuth v2.0 fuer APIs/Services | TODO | Kein OAuth — tRPC mit Session-basierter Auth | OAuth 2.0 oder JWT-basierte API Auth evaluieren | | 3.2.2.1.03 | Token Validity: Access Token max 1h, Refresh Token max 24h | PARTIAL | Auth.js Session-basiert, kein Token-Expiry konfiguriert | Session-Timeout konfigurieren (idle + absolute) | | 3.2.2.1.04 | Nur immutable Claims in Tokens | OK | Auth.js nutzt server-side Sessions, keine JWT-Claims | — | --- ## 3.2.2.2 Multi-Factor Authentication (MFA) | # | Anforderung | Status | CapaKraken Stand | ToDo | |---|------------|--------|-----------------|------| | 3.2.2.2 | MFA muss implementiert sein | TODO | Keine MFA — nur Email+Passwort | MFA via TOTP oder WebAuthn implementieren, oder ESO-Integration | --- ## 3.2.2.3 Input & Output Validation | # | Anforderung | Status | CapaKraken Stand | ToDo | |---|------------|--------|-----------------|------| | 3.2.2.3.01 | Input Validation Controls | OK | Zod-Schemas auf allen tRPC-Inputs, TypeScript strict mode | — | | 3.2.2.3.02 | Passwort-Felder muessen maskiert sein | OK | `type="password"` auf allen Passwort-Inputs | — | | 3.2.2.3.03 | Laengen-Validierung auf Input-Parametern | OK | Zod `.min()` / `.max()` auf relevanten Feldern | — | | 3.2.2.3.04 | Numerische Werte Bereichs-Validierung | OK | Zod `.min()` / `.max()` auf Number-Feldern | — | | 3.2.2.3.05 | Malicious Characters ablehnen/sanitizen | PARTIAL | Zod validiert Typen, kein explizites XSS-Sanitizing | DOMPurify oder aehnliches fuer User-generierte Texte (Kommentare, Descriptions) | | 3.2.2.3.06 | Parameterized SQL (kein SQL Injection) | OK | Prisma ORM — alle Queries sind parameterized | — | | 3.2.2.3.13 | HTTP Security Headers auf gesamter Seite | PARTIAL | Einige Headers via next.config.ts, nicht vollstaendig | Siehe HTTP Headers Sektion unten | --- ## 3.2.2.4 Session Management | # | Anforderung | Status | CapaKraken Stand | ToDo | |---|------------|--------|-----------------|------| | 3.2.2.4.01 | Session IDs muessen unpredictable sein, terminiert nach Timeout | PARTIAL | Auth.js generiert sichere Session-IDs, kein expliziter Timeout | Session Idle Timeout (30min) und Absolute Timeout (8h) konfigurieren | | 3.2.2.4.02 | Concurrent Sessions limitieren fuer High-Impact Systeme | TODO | Keine Session-Limitierung | Max 3 concurrent Sessions pro User implementieren | | 3.2.2.4.04 | Nur server-issued Session-IDs verwenden | OK | Auth.js server-side Sessions | — | | 3.2.2.4.05 | Idle Timeout konfigurierbar (SaaS) | TODO | Kein konfigurierbarer Timeout | Idle Timeout in SystemSettings aufnehmen | --- ## 3.2.2.5 Insecure File Upload | # | Anforderung | Status | CapaKraken Stand | ToDo | |---|------------|--------|-----------------|------| | 3.2.2.5 | Sichere File-Upload Validierung | PARTIAL | Cover-Art Upload validiert Dateityp + Groesse, XLSX Import parst sicher | File-Type Validation verstaerken (Magic Bytes pruefen, nicht nur Extension) | --- ## 3.2.2.6 Error Handling | # | Anforderung | Status | CapaKraken Stand | ToDo | |---|------------|--------|-----------------|------| | 3.2.2.6 | Keine technischen Fehlerdetails an User | PARTIAL | tRPC gibt Error-Codes zurueck, Stack Traces nur in Dev | Sentry fuer Production error capturing (installiert, DSN fehlt) | --- ## 3.2.2.7 Application Security Assessments | # | Anforderung | Status | CapaKraken Stand | ToDo | |---|------------|--------|-----------------|------| | 3.2.2.7 | Regelmaessige Security Scans | TODO | Kein SAST/DAST, kein Pen-Test | npm audit in CI (Dependabot vorhanden), SAST-Tool evaluieren (SonarQube, Snyk) | --- ## 3.2.2.8 Other Additional Controls | # | Anforderung | Status | CapaKraken Stand | ToDo | |---|------------|--------|-----------------|------| | 3.2.2.8 | Secure Development Lifecycle | PARTIAL | CI/CD vorhanden, Code Review via PR, TypeScript strict | Formales SDLC-Dokument erstellen, Security Checklist in PR-Template | --- ## 3.2.3 Data Protection | # | Anforderung | Status | CapaKraken Stand | ToDo | |---|------------|--------|-----------------|------| | 3.2.3.01 | Autocomplete=off fuer Passwort-Felder | TODO | Nicht explizit gesetzt | `autocomplete="off"` oder `autocomplete="new-password"` auf Passwort-Feldern | | 3.2.3.02 | Source-Code Zugang nur fuer Dev-Team | OK | Gitea mit User-Authentifizierung | — | | 3.2.3.03 | Keine Produktionsdaten in Non-Prod | OK | Seed-Daten sind fiktiv (Marvel-Characters) | — | --- ## 3.2.4 Change Management | # | Anforderung | Status | CapaKraken Stand | ToDo | |---|------------|--------|-----------------|------| | 3.2.4 | Change Management Prozess | PARTIAL | Git-basiert mit PRs und CI, Activity History vorhanden | Formalen Change-Approval-Prozess dokumentieren | --- ## 3.2.7 Logging and Auditing | # | Anforderung | Status | CapaKraken Stand | ToDo | |---|------------|--------|-----------------|------| | 3.2.7.01 | Authorization/Access Failures loggen | PARTIAL | RBAC Fehler werden als tRPC FORBIDDEN zurueckgegeben, nicht explizit geloggt | Failed Auth Attempts in Audit-Log aufnehmen | | 3.2.7.01 | Input Validation Failures loggen | TODO | Zod-Errors werden an Client zurueckgegeben, nicht geloggt | Validation Failures an Pino Logger weiterleiten | | 3.2.7.01 | Application Errors loggen | OK | Pino Structured Logging auf allen tRPC-Procedures | — | | 3.2.7.01 | Config Changes loggen | OK | Activity History System audited 29/36 Router | — | | 3.2.7.01 | High-Risk Functionality (User-Mgmt) loggen | OK | User Create/Delete/SetPassword/SetPermissions audited | — | | 3.2.7.01 | API/Third-Party Access loggen | PARTIAL | AI-Aufrufe (OpenAI, Gemini) nicht explizit geloggt | API-Calls an externe Services loggen | | 3.2.7.03 | Access Logs fuer alle User inkl. Vendor | PARTIAL | Audit-Log vorhanden, kein Login-Log | Login/Logout Events loggen | --- ## 3.3.1.3 HTTP Response Headers | # | Anforderung | Status | CapaKraken Stand | ToDo | |---|------------|--------|-----------------|------| | X-Frame-Options: DENY | OK | In next.config.ts gesetzt | — | | X-Content-Type-Options: nosniff | OK | In next.config.ts gesetzt | — | | Referrer-Policy: strict-origin-when-cross-origin | OK | In next.config.ts gesetzt | — | | Permissions-Policy | OK | In next.config.ts gesetzt (camera, mic, geo disabled) | — | | Strict-Transport-Security (HSTS) | TODO | Nicht gesetzt | `Strict-Transport-Security: max-age=31536000; includeSubDomains` hinzufuegen | | Content-Security-Policy (CSP) | TODO | Nicht gesetzt | CSP Header definieren (script-src, style-src, img-src etc.) | | X-XSS-Protection | TODO | Nicht gesetzt | `X-XSS-Protection: 0` (Browser-eigener XSS-Filter, CSP preferred) | | Cache-Control fuer sensitive Seiten | TODO | Nicht gesetzt | `Cache-Control: no-store` fuer Auth-Seiten | | Server Header entfernen | TODO | nginx/openresty zeigt Server-Version | `server_tokens off` in nginx Config | | X-Powered-By entfernen | OK | Next.js entfernt X-Powered-By automatisch | — | --- ## 3.3.1.6 Cookies & Attributes | # | Anforderung | Status | CapaKraken Stand | ToDo | |---|------------|--------|-----------------|------| | HttpOnly Flag | OK | Auth.js Session-Cookie ist HttpOnly | — | | Secure Flag | PARTIAL | In Production ja (HTTPS), in Dev nein (HTTP) | Sicherstellen dass Secure Flag in Prod immer gesetzt | | SameSite Attribute | PARTIAL | Auth.js setzt SameSite=Lax | Pruefen ob Strict moeglich | | Cookie-Prefix (__Host- oder __Secure-) | TODO | Keine Cookie-Prefixe | `__Host-` Prefix fuer Session-Cookie evaluieren | --- ## 3.3.1.12 API Management | # | Anforderung | Status | CapaKraken Stand | ToDo | |---|------------|--------|-----------------|------| | Rate Limiting | TODO | Kein Rate Limiting | Rate Limiting auf tRPC-Endpoints implementieren (z.B. `express-rate-limit` oder nginx level) | | API Versioning | N/A | Internes Tool, kein oeffentliches API | — | | API Authentication | OK | Alle tRPC-Procedures hinter protectedProcedure | — | | API Input Validation | OK | Zod-Schemas auf allen Inputs | — | --- ## Priorisierte ToDo-Liste ### Prioritaet 1: KRITISCH (muss vor Production) 1. **[ ] MFA implementieren** — TOTP oder WebAuthn, oder ESO/ADFS Integration 2. **[ ] Session Timeouts** — Idle (30min) + Absolute (8h) konfigurieren 3. **[ ] HTTP Security Headers vervollstaendigen:** - `Strict-Transport-Security: max-age=31536000; includeSubDomains` - `Content-Security-Policy` definieren - `Cache-Control: no-store` fuer Auth-Seiten 4. **[ ] Rate Limiting** auf API-Endpoints (Brute-Force Schutz) 5. **[ ] Sentry DSN konfigurieren** fuer Production Error Tracking 6. **[ ] Failed Auth Attempts loggen** (Audit-Log oder separater Security-Log) ### Prioritaet 2: HOCH (innerhalb 30 Tage) 7. **[ ] AIR Registration** — Application Information Repository Eintrag 8. **[ ] Security Architecture Document** erstellen 9. **[ ] SAST/DAST Tool** evaluieren und in CI integrieren (Snyk, SonarQube) 10. **[ ] XSS Sanitization** — DOMPurify fuer User-generierte Texte 11. **[ ] Autocomplete="new-password"** auf allen Passwort-Feldern 12. **[ ] Login/Logout Events** im Audit-Log erfassen 13. **[ ] External API Calls loggen** (OpenAI, Gemini Aufrufe) 14. **[ ] nginx Server-Header entfernen** (`server_tokens off`) 15. **[ ] Concurrent Session Limit** (max 3 pro User) ### Prioritaet 3: MITTEL (innerhalb 90 Tage) 16. **[ ] Cookie Prefix** (`__Host-`) evaluieren 17. **[ ] SameSite=Strict** evaluieren (statt Lax) 18. **[ ] File Upload Magic Bytes** Validierung 19. **[ ] Input Validation Failures** an Logger weiterleiten 20. **[ ] Change Management Prozess** formell dokumentieren 21. **[ ] Security Checklist** in PR-Template aufnehmen 22. **[ ] Session Idle Timeout** in Admin-Settings konfigurierbar machen 23. **[ ] Formaler SDLC** dokumentieren --- ## Bereits Compliant (kein Handlungsbedarf) | Bereich | Standard-Anforderung | CapaKraken Feature | |---------|---------------------|-------------------| | SQL Injection Prevention | Parameterized Queries | Prisma ORM | | Password Hashing | Sichere Hash-Funktion | Argon2 via @node-rs/argon2 | | RBAC | Rollenbasierte Zugriffskontrolle | 5-stufiges RBAC (USER→ADMIN) + Per-User Overrides | | Input Validation | Alle Inputs validiert | Zod-Schemas auf allen tRPC-Procedures | | Audit Logging | Aenderungen nachvollziehbar | Activity History System (29/36 Router) | | Data Masking | Passwort-Felder maskiert | `type="password"` durchgehend | | Source Code Access | Nur Dev-Team | Gitea mit Auth | | No Prod Data in Dev | Fiktive Testdaten | Marvel-Character Seed | | X-Frame-Options | Clickjacking-Schutz | DENY in next.config.ts | | X-Content-Type-Options | MIME-Sniffing Schutz | nosniff in next.config.ts | | API Auth | Alle Endpoints geschuetzt | protectedProcedure Middleware |