Redis-Ausfall & Race Condition im Security-Observer
Herausforderung
Redis reagierte während eines Arbeitstages nicht mehr und ließ sich über das Hosting-Backend nicht neu starten. Mit ausgefallenem Redis versagte die Session-Verwaltung, Kunden konnten keine Artikel mehr in den Warenkorb legen - der Checkout des Shops war damit faktisch offline.
Was wurde entwickelt
Nach Abstimmung mit dem Managed-Hosting-Provider zur Wiederherstellung von Redis wurde die Ursache des Warenkorb-Problems weiter zurückverfolgt: Ein VaryContentLength-Observer im individuellen Security-Modul interagierte unerwartet mit der Varnish-Integrationsschicht. Unter Last konkurrierte der Observer mit anderen Observern der Response-Phase um das Event http_response_send_before, wodurch eine Race Condition entstand, bei der die Session geschlossen wurde, bevor der Observer das Schreiben der Response-Header abschließen konnte. Das Verschieben des Observers auf ein früheres Event reduzierte die Kollisionshäufigkeit, beseitigte sie aber nicht vollständig. Die Interaktion schien spezifisch für den verwendeten Varnish-Stack zu sein. Der betreffende Observer wurde als unkritische Cache-Poisoning-Abwehr identifiziert (Risiko: sehr gering, Exploit-Komplexität: sehr hoch) und deaktiviert. Ein separater Tab-Nabbing-Schutz-Observer im selben Modul wurde behoben, unabhängig getestet und blieb aktiv - er war von der Race Condition nicht betroffen.
Ergebnis
Der Shop war noch am selben Tag wieder voll funktionsfähig. Die Entscheidung, den betreffenden Observer zu deaktivieren statt unbegrenzt weiter zu debuggen, hielt die Ausfallzeit minimal und erhielt gleichzeitig alle wirklich kritischen Sicherheitsmechanismen.
Passende Leistung: Infrastruktur & Hosting
Eine ähnliche Herausforderung?
Kontaktieren Sie mich - kein Sales-Pitch, nur ein offenes Gespräch über Ihre Anforderungen.