Auf dieser Seite
KI-gestützte Angriffe nehmen rasant zu. Laut Google Threat Intelligence Report 2025 nutzen staatliche Akteure und kriminelle Gruppen KI inzwischen aktiv, um Schwachstellen schneller zu identifizieren und auszunutzen als je zuvor. Die mittlere Zeit von der Entdeckung einer Lücke bis zum ersten Exploit liegt 2025 bei unter 5 Tagen. Teams, die Security-Reviews manuell nachziehen, verlieren diesen Wettlauf strukturell. Dieser Artikel ist Teil der Run-Ressourcen zu KI-Betrieb und Compliance.
Dieser Artikel zeigt einen konkreten Gegenentwurf: eine CI-Pipeline, die Security-Probleme erkennt, selbst ein GitHub Issue öffnet, auf menschliche Freigabe wartet und dann per KI-Agent einen fertigen Pull Request erstellt. Live zeigbar. In bestehende Pipelines integrierbar.
Das Problem in zwei Zeilen Code
Das folgende Beispiel ist minimal und absichtlich verständlich gehalten. Es zeigt eine der häufigsten API-Schwachstellen überhaupt: Broken Object Level Authorization (BOLA) – OWASP API Security Risk #1.
# FastAPI-Endpunkt: eingeloggter Nutzer kann beliebiges Projekt abrufen
@app.get("/projects/{project_id}")
async def get_project(project_id: int, current_user: User = Depends(get_current_user)):
return db.query(Project).filter(Project.id == project_id).first()
Ein authentifizierter Nutzer ruft GET /projects/42 auf. Das System prüft, ob er eingeloggt ist – aber nicht, ob das Projekt ihm gehört. Nutzer 1 sieht problemlos die Daten von Nutzer 2.
Der korrekte Fix ist drei Zeilen:
@app.get("/projects/{project_id}")
async def get_project(project_id: int, current_user: User = Depends(get_current_user)):
project = db.query(Project).filter(Project.id == project_id).first()
if not project or project.owner_id != current_user.id:
raise HTTPException(status_code=403, detail="Kein Zugriff")
return project
Genau das – Erkennung und automatisierter Fix – übernimmt die Pipeline.
Die vollständige Pipeline: Was passiert automatisch
Code-Push
│
▼
CI läuft: Tests + Security Scan (Semgrep / Bandit)
│
├─ kein Befund → Pipeline grün, fertig
│
└─ Befund → GitHub Issue wird automatisch angelegt
│
▼
CISO / Entwickler prüft Issue
│
└─ Genehmigung: Label "ai-fix-approved"
│
▼
Container startet (Hetzner / GitHub Actions)
│
▼
Claude analysiert Code + schreibt Fix
│
▼
Pull Request wird automatisch erstellt
│
▼
Mensch reviewed + merged
Der entscheidende Punkt: Der KI-Agent schreibt keinen Code ohne menschliche Freigabe. Die Eskalation von Befund zu PR läuft automatisch – die Entscheidung, ob der Fix eingespielt wird, bleibt beim Menschen.
Schritt 1: Security Scan in der CI
Eine GitHub Actions Workflow-Datei, die Semgrep und Bandit ausführt und bei Befunden automatisch ein Issue öffnet:
# .github/workflows/security-scan.yml
name: Security Scan
on:
push:
branches: [main, develop]
pull_request:
jobs:
security:
runs-on: ubuntu-latest
permissions:
issues: write
contents: read
steps:
- uses: actions/checkout@v4
- name: Python Setup
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install Scanner
run: pip install semgrep bandit
- name: Semgrep OWASP Scan
id: semgrep
run: |
semgrep --config=p/owasp-top-ten --json --output=semgrep-results.json . || true
- name: Bandit Scan
id: bandit
run: |
bandit -r . -f json -o bandit-results.json || true
- name: Issue anlegen bei Befund
if: always()
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
FINDINGS=$(python -c "
import json, sys
results = []
try:
with open('semgrep-results.json') as f:
data = json.load(f)
for r in data.get('results', []):
results.append(f\"- {r['check_id']} in {r['path']}:{r['start']['line']}\")
except: pass
try:
with open('bandit-results.json') as f:
data = json.load(f)
for r in data.get('results', []):
if r['issue_severity'] in ['HIGH', 'MEDIUM']:
results.append(f\"- {r['test_id']}: {r['issue_text']} in {r['filename']}:{r['line_number']}\")
except: pass
if results:
print('\n'.join(results))
")
if [ -n "$FINDINGS" ]; then
COMMIT="${{ github.sha }}"
SHORT="${COMMIT:0:7}"
gh issue create \
--title "Security-Befund: Commit $SHORT" \
--body "## Automatisch erkannte Sicherheitsprobleme
Commit: \`$COMMIT\`
Branch: \`${{ github.ref_name }}\`
### Befunde
$FINDINGS
### Nächster Schritt
Prüfe die Befunde. Wenn ein automatisierter Fix sinnvoll ist, setze das Label \`ai-fix-approved\`.
Ein KI-Agent erstellt dann einen Pull Request mit dem Fix.
> Dieses Issue wurde automatisch von der CI-Pipeline erstellt." \
--label "security,needs-review"
fi
Schritt 2: Der KI-Agent erstellt den Pull Request
Sobald ein Entwickler oder CISO das Label ai-fix-approved setzt, startet ein zweiter Workflow:
# .github/workflows/ai-security-fix.yml
name: AI Security Fix
on:
issues:
types: [labeled]
jobs:
fix:
if: github.event.label.name == 'ai-fix-approved'
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
issues: write
steps:
- uses: actions/checkout@v4
- name: Claude Fix generieren
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
pip install anthropic
ISSUE_BODY="${{ github.event.issue.body }}"
ISSUE_NUMBER="${{ github.event.issue.number }}"
python - <<'EOF'
import anthropic, subprocess, os, textwrap
client = anthropic.Anthropic()
# Relevante Dateien ermitteln
diff = subprocess.check_output(["git", "diff", "HEAD~1"], text=True)
issue_body = os.environ.get("ISSUE_BODY", "")
prompt = textwrap.dedent(f"""
Du bist ein Security-Engineer. Dir wurde folgendes Security-Issue gemeldet:
{issue_body}
Hier ist der aktuelle Code-Diff:
{diff[:8000]}
Analysiere die gemeldeten Schwachstellen und erstelle einen minimalen, korrekten Fix.
Gib NUR den geänderten Dateiinhalt aus – keine Erklärung, kein Markdown.
Format: DATEINAME\\n---\\n<vollständiger Inhalt>
""")
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=4096,
messages=[{"role": "user", "content": prompt}]
)
print(response.content[0].text)
EOF
- name: Branch erstellen und PR öffnen
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
BRANCH="security-fix/issue-${{ github.event.issue.number }}"
git checkout -b "$BRANCH"
git config user.name "Security Bot"
git config user.email "security-bot@helm-nagel.com"
# Fix-Dateien committen (aus vorherigem Schritt)
git add -A
git commit -m "fix: Security-Lücken aus Issue #${{ github.event.issue.number }} behoben
Automatisch generierter Fix. Muss manuell reviewed und gemerged werden.
Closes #${{ github.event.issue.number }}"
git push origin "$BRANCH"
gh pr create \
--title "Security Fix: Issue #${{ github.event.issue.number }}" \
--body "Automatisch generierter Sicherheits-Fix.
Bitte Code-Review durchführen, bevor dieser PR gemerged wird.
Closes #${{ github.event.issue.number }}" \
--base main \
--head "$BRANCH"
Was du dafür brauchst
Die Pipeline läuft vollständig in GitHub Actions – kein eigener Server notwendig. Wer den Agenten auf eigener Infrastruktur betreiben möchte (z. B. für sensible Repositories oder Compliance-Anforderungen), kann den Container auf einem Hetzner VPS deployen: ein cx22 für ca. 4 Euro/Monat reicht für diese Workload.
Secrets einrichten:
# Einmalig im Repository konfigurieren
gh secret set ANTHROPIC_API_KEY --body "sk-ant-..."
# Labels anlegen
gh label create "security" --color "d93f0b"
gh label create "needs-review" --color "e4e669"
gh label create "ai-fix-approved" --color "0075ca"
Hinweis für Security-Verantwortliche: Penetrationstests
Diese Pipeline erkennt statische Schwachstellen zuverlässig – OWASP Top 10, bekannte Muster, Konfigurationsfehler. Sie ersetzt keinen Penetrationstest.
Für vollständige Pentests gilt in regulierten Umgebungen typischerweise der Vorbehalt, dass nur Anbieter aus der Shortlist zugelassener Vendors beauftragt werden dürfen. Wie Helm & Nagel mit DSGVO-konformer Infrastruktur und ISO 27001 die Basis dafür schafft, ist separat dokumentiert. Diese Einschränkung ist legitim. Die CI-Pipeline ist kein Vendor – sie ist interne Hygiene, die kontinuierlich und kostenlos läuft und dafür sorgt, dass Pentester keine Trivialprobleme mehr finden.
Die Kombination aus automatisierter CI-Security und regelmäßigen Pentests durch zugelassene Anbieter ergibt eine belastbare Verteidigungsstrategie.
Verwandte Security-Themen
Vertrauen und Sicherheit
ISO 27001, DSGVO, Vanta Trust Center: Wie Helm & Nagel Sicherheitsstandards → in der Praxis umsetzt – und was das für Ihre Daten bedeutet.
Cybersicherheit im KI-Zeitalter
OWASP Top 10 für LLM-Anwendungen →: Die spezifischen Risiken, wenn KI-Modelle selbst Teil der Angriffsfläche werden.
Menschliche Firewall
Technische Kontrollen allein reichen nicht. Wie Unternehmen Mitarbeitende → als aktive Verteidigungslinie aufbauen.
Cloud-Datenbanksicherheit
Best Practices für cloudbasierte Datenbanken → in regulierten Branchen – Verschlüsselung, Zugriffskontrolle, Audit-Logs.
Helm & Nagel implementiert Security-Pipelines dieser Art direkt in Ihre Entwicklungsumgebung – inkl. Konfiguration, Integration in bestehende CI/CD-Prozesse und Anbindung an Ihr Incident-Response-Verfahren. Wenn Sie sehen möchten, wie das in Ihrer konkreten Infrastruktur aussieht, sprechen wir das in einem ersten Gespräch durch.