Sicherheitschecklisten, Perspektiven für die Codeüberprüfung und Richtlinienvorlagen für Entwicklungsteams.
Punkte, die vor der Entwicklung eines neuen API-Endpunkts zu überprüfen sind.
Sicherheitsperspektiven, die bei der Überprüfung des API-Codes zu prüfen sind.
| Artikel prüfen | Bedeutung | Erläuterung |
|---|---|---|
| Authentifizierungs-Middleware wird auf alle Endpunkte angewendet | Erforderlich | Sicherstellen, dass außer bei öffentlichen APIs keine Authentifizierungsprüfungen fehlen |
| Berechtigungsprüfungen auf Objektebene existieren | Erforderlich | Überprüfen, ob die angeforderten Ressourcen dem anfragenden Benutzer gehören |
| Admin-Funktionen haben Rollenüberprüfung | Erforderlich | Sicherstellen, dass normale Benutzer keine Admin-APIs aufrufen können |
| Algorithmus wird bei der JWT-Verifizierung angegeben | Erforderlich | Prävention von alg: keine Angriffe |
| Der Token-Ablauf ist richtig konfiguriert | Empfohlen | Zugangstoken: innerhalb von 15 Minuten |
| Artikel prüfen | Bedeutung | Erläuterung |
|---|---|---|
| Anfragekörper hat Schemavalidierung | Erforderlich | Validierung von Typ, Länge und Format |
| SQL-Abfragen sind parametrisiert | Erforderlich | Sicherstellen, dass Abfragen nicht mit String-Verkettung erstellt werden |
| Pfadparameter-Formatvalidierung vorhanden | Erforderlich | Prüfung auf erwartetes Format wie UUID |
| Paginierungsparameter haben Obergrenzen | Empfohlen | Verhindern Sie übermäßige Anfragen wie limit=999999 |
| Datei-Uploads haben Beschränkungen in Bezug auf Typ und Größe | Empfohlen | Validierung von Content-Type und Dateigröße |
| Artikel prüfen | Bedeutung | Erläuterung |
|---|---|---|
| Die Antworten enthalten keine unnötigen Felder | Erforderlich | Verhindern Sie die Preisgabe von password_hash, internen IDs usw. |
| Fehlerantworten enthalten keine Stack Traces | Erforderlich | Keine internen Informationen in der Produktion preisgeben |
| Sicherheits-Header werden konfiguriert | Empfohlen | X-Content-Type-Options, HSTS, usw. |
| Content-Type ist korrekt eingestellt | Empfohlen | Explizite Angabe von application/json |
| Artikel prüfen | Bedeutung | Erläuterung |
|---|---|---|
| Ratenbegrenzung wird angewendet | Erforderlich | Insbesondere für Authentifizierungs- und Zahlungsendpunkte |
| Entsprechende Protokolle werden aufgezeichnet | Empfohlen | Rückverfolgbar: Wer hat was wann getan? |
| Geheimnisse sind nicht fest kodiert | Erforderlich | Umgebungsvariablen oder geheime Manager verwenden |
| CORS-Einstellungen sind angemessen | Empfohlen | Vermeiden Sie die Verwendung von Wildcards |
| Abhängigkeiten haben keine bekannten Schwachstellen | Empfohlen | Ergebnisse von npm audit / Snyk prüfen |
Vorlagen für grundlegende Richtlinien für die interne API-Entwicklung. Anpassen an Ihr Projekt.
■ Authentifizierungsmethoden - Benutzerseitige APIs: OAuth 2.0 (Autorisierungscode + PKCE) - Server-zu-Server-APIs: OAuth 2.0 (Client Credentials) oder mTLS - Externe Integrations-APIs: API-Schlüssel + HMAC-Signatur ■ Token-Verwaltung - Ablauf des Zugangstokens: 15 Minuten - Ablaufdatum des Refresh-Tokens: 7 Tage (Rotation erforderlich) - Token-Speicherung: HttpOnly + Sicher + SameSite Cookie ■ Passwort-Richtlinie - Mindestens 12 Zeichen, mindestens ein Großbuchstabe, ein Kleinbuchstabe, eine Zahl und ein Symbol - Hash mit bcrypt (Kostenfaktor 12 oder höher) - Passwortlisten-Angriffsschutz (Have I Been Pwned API-Integration)
■ Versionierung - Versionsverwaltung über URL-Pfad: /api/v1/resources - Mindestens 6-monatiger Supportzeitraum für alte Versionen - Meldung der Veralterung über Deprecation-Header ■ Ratenbegrenzung (Standardwerte) - Allgemeine APIs: 100 Anfragen/15 min - Auth-APIs: 5 Anfragen/15 min - Öffentliche APIs: 30 Anfragen/Min. - Immer RateLimit-*-Header zurückgeben ■ Antworten - Inhalts-Typ: application/json (fest) - Fehlerantworten im Format RFC 7807 (Problem Details) - In der Produktion werden niemals Stack Traces zurückgegeben - Paginierung: standardmäßig 20 Elemente, maximal 100 Elemente
■ Erforderliche Protokollfelder - Zeitstempel (ISO 8601, UTC) - Anfrage-ID (UUID für Rückverfolgbarkeit) - Benutzer-ID / API-Client-ID - HTTP-Methode + Endpunkt - Status Code - Quell-IP - Antwortzeit ■ Verbotene Log-Felder (Sensible Daten) - Kennwörter / Token / API-Schlüssel - Kreditkartennummern - Vollständige PII-Anzeige (Maskierung erforderlich) ■ Überwachungswarnungen - Authentifizierungsfehler: Warnung bei 5+/min - 403 Fehler: Warnung bei 10+/min - 500 Fehler: Sofortige Warnung bei 1 Auftreten - Ratengrenze überschritten: Musteranalyse
Erkennen von Vorfällen durch Überwachungswarnungen, Benutzerberichte oder externe Benachrichtigungen. Bestimmen Sie den Schweregrad durch eine erste Triage.
0-30 MinutenVerhindern Sie eine Eskalation des Schadens. Machen Sie API-Schlüssel ungültig, setzen Sie betroffene Endpunkte vorübergehend aus und ermitteln Sie den Umfang der Auswirkungen.
30 min - 2 StundenBehebung von Schwachstellen, Anwendung von Patches und Wiederherstellung von Diensten. Benachrichtigen Sie die betroffenen Benutzer.
2-24 StundenPostmortem durchführen. Durchführung einer Ursachenanalyse, Entwicklung von Maßnahmen zur Verhinderung eines erneuten Auftretens und Dokumentation der Ergebnisse.
1-5 ArbeitstageAdditional checklist items for systems integrating AI models and LLM-powered features.
Related: LLM06: Excessive Agency, LLM02: Insecure Output Handling
Related: ASI01: Excessive Agency, ASI03: Insecure Tool/Function Calling, ASI09: Inadequate Sandboxing
Related: LLM03: Training Data Poisoning, ML02: Data Poisoning Attack, ML06: AI Supply Chain Attacks
Security check items specific to code that integrates LLMs, AI agents, and ML models.
| Artikel prüfen | Bedeutung | Erläuterung |
|---|---|---|
| System prompts are not exposed in client-side code or API responses | Erforderlich | Prompt leakage enables targeted prompt injection attacks |
| LLM outputs are validated before rendering (HTML/JS/SQL) | Erforderlich | LLM-generated content may contain XSS payloads or injection vectors |
| User input and system instructions are clearly separated in prompts | Erforderlich | Prevents direct prompt injection by maintaining instruction-data boundary |
| Tool/function call permissions are scoped per user role | Erforderlich | Prevent privilege escalation through agent tool access |
| Token count limits are enforced per request and per session | Empfohlen | Prevents cost explosion and denial-of-wallet attacks |
| RAG retrieval results are sanitized before insertion into prompts | Erforderlich | Retrieved documents may contain indirect prompt injection payloads |
| Agent actions and tool calls are logged with full audit trail | Empfohlen | Essential for incident investigation and compliance in AI systems |
Policy templates for organizations deploying AI models and LLM-powered applications.
■ Model Access Tiers - Tier 1 (Restricted): GPT-4 class / fine-tuned models — requires team lead approval - Tier 2 (Standard): GPT-3.5 class / embeddings — available to all developers - Tier 3 (Open): Open-source models (local inference) — no approval required ■ API Key Management for LLM Providers - One API key per service/environment (never share across projects) - Monthly spend alerts at 50%, 80%, 100% of budget - Hard spending caps enforced at the provider level - Key rotation: every 90 days or immediately upon team member departure ■ Data Sent to External Models - NEVER send: PII, credentials, internal IP, source code, customer data - ALLOWED with review: anonymized logs, public documentation, synthetic data - All prompts to external APIs must be logged (excluding PII)
■ Training Data Requirements - All training data must have documented provenance and licensing - PII must be removed or anonymized before use in training/fine-tuning - Data poisoning checks: validate data integrity with hash verification - Retain training data snapshots for reproducibility and audit ■ RAG (Retrieval-Augmented Generation) Data - Document ingestion pipeline must sanitize content (strip scripts, injections) - Access control on vector store must mirror source document permissions - Embedding models must be versioned and pinned ■ Model Output Data - LLM outputs must not be trusted as authoritative — always verify facts - Generated code must pass the same security review as human-written code - Outputs containing PII must be flagged and redacted before storage
■ Severity Levels for AI-Specific Incidents - P1 (Critical): Prompt injection leading to data exfiltration or unauthorized actions - P1 (Critical): Model serving compromised or returning manipulated outputs - P2 (High): Training data poisoning detected, jailbreak bypass discovered - P2 (High): Agent performing unintended actions outside approved scope - P3 (Medium): Model drift causing degraded accuracy below threshold - P4 (Low): Cost overrun due to excessive token usage ■ Response Procedures - P1: Immediately disable affected model endpoint, notify security team - P2: Quarantine affected model version, roll back to last known good - P3: Trigger retraining pipeline, increase monitoring frequency - P4: Adjust rate limits and budget caps, review usage patterns ■ Post-Incident Requirements - Root cause analysis within 48 hours for P1/P2 - Update prompt injection test suite with new attack vectors - Review and update guardrails configuration
Sicherheitsrelevante HTTP-Statuscodes, die beim API-Design verwendet werden.
| Code | Bedeutung | Anwendungsfall |
|---|---|---|
| 400 | Bad Request | Fehler bei der Eingabeüberprüfung |
| 401 | Unauthorized | Authentifizierung erforderlich oder Token ist ungültig |
| 403 | Forbidden | Authentifiziert, aber unzureichende Berechtigungen |
| 404 | Not Found | Ressource existiert nicht (kann auch anstelle von 403 verwendet werden) |
| 405 | Method Not Allowed | HTTP-Methode nicht erlaubt |
| 413 | Payload Too Large | Anfragekörpergröße überschritten |
| 422 | Unprocessable Entity | Die Syntax ist korrekt, aber die Semantik fehlerhaft |
| 429 | Too Many Requests | Ratengrenze überschritten |
| 500 | Internal Server Error | Interner Serverfehler (Details ausblenden) |