← Übersicht

F07 Playwright-Service sicher, begrenzt und instanztreu betreiben

Playwright-Service sicher, begrenzt und instanztreu betreiben

Finding: F07 Priorität: P1 Status: IN UMSETZUNG Stand: 2026-07-16

Problembeschreibung

  • server.js startet Chromium je Aktion (server.js:9/59), nicht eine bestehende Instanz.
  • ignoreHTTPSErrors=true schwächt TLS (server.js:67).
  • Leeres WETELL_HEADLESS_SECRET erlaubt jeden POST (server.js:401).
  • Body ist unlimitiert (server.js:36), URLs frei steuerbar, Login-Erfolg nur Heuristik.

Ziel

Ein kontrollierter Browser wird wiederverwendet; Dienst ist zwingend authentisiert, TLS-validierend und begrenzt.

Aufgabe

  1. Browser beim Start, Context pro Job.
  2. Pflichtsecret oder Unix-Socket/mTLS plus Allowlist.
  3. Body-/Zeit-/Queue-/Speicherlimits und Readiness implementieren.

Scope

  • In Scope: alle unter Code Blast genannten Komponenten, Daten, Verträge und Tests.
  • Out of Scope: neue Features und produktive externe Mutation ohne separate Freigabe.

Harte Spezifikation

  • MUST: kein launch im Handler.
  • MUST: Secret nie leer/geloggt.
  • MUST: TLS-Fehler nicht ignoriert.
  • MUST: Body max 64 KiB, Limits/Cleanup.

Harte Quality Gateways

  • 100 Requests nutzen eine Browser-PID, 0 offene Contexts.
  • Kein/falsches Secret immer 401/403.
  • Fremde URL/TLS-Fehler blockiert.
  • Überlast 429/503; Node-Tests grün.
  • Global: PHPStan Level 8 und PHPUnit liefern 0 Fehler; kein Ignore oder Baseline.

Code Blast

  • Direkt: server.js, package, README, Service-Unit, Headless-PHP-Adapter.
  • Betrieb: Browser-PID, Speicher, Neustart.

Code-Impact-Analyse

  • Weniger Ressourcen/Startlatenz.
  • Erfordert Browser-Recovery und Servicevertrag.

Risikoanalyse

| Risiko | Eintritt | Schaden | |---|---|---| | Unauthentisierter SSRF-Proxy | mittel | kritisch | | TLS/DoS/Sessionleck | hoch | hoch |

Strategie zur Risikonullierung

  1. Prevent: Auth/Loopback/TLS/Allowlist.
  2. Detect: PID/Context/Queue.
  3. Contain: Isolation/Limits.
  4. Recover: Browserneustart.

Abschlussnachweis

Erledigt erst, wenn alle MUST-Spezifikationen implementiert, alle Gateways mit unveränderlicher Evidenz grün und Restrisiken technisch ausgeschlossen oder ausdrücklich fachlich akzeptiert sind.

Supervisionsfortschritt 2026-07-16

  • Eine Browserinstanz pro Dienst, Context pro Job, Pflichtsecret, Loopback, TLS-Validierung, 64-KiB-Body, 2 Jobs und 5-MB-PDF-Limit; 9 Node-Tests gruen; ephemere Instanz ready=true.

Frühere Versionen

VersionZeitpunktOperation
38 2026-07-16 19:53:19.687329+02 UPDATE