Zend-Framework-Schwachstelle kann zu Remote-Code-Execution führen

Das Zend-Framework, das von Entwicklern zur Erstellung objektorientierter Webanwendungen verwendet wird, besteht aus PHP-Paketen, die weltweit millionenfach installiert wurden. Das Framework zusammen mit dem Laminas-Projekt ist anfällig für eine nicht vertrauenswürdige Deserialisierung. Die als CVE-2021-3007 verfolgte und als hochriskant eingestufte Schwachstelle kann zu Remote-Code-Execution führen.

Bei der Deserialisierung handelt es sich laut IIT-Visions um die „Umwandlung eines Bytestroms in ein Objekt. Serialisierung bedeutet die Umwandlung des Zustands eines Objekts in eine Folge von Bytes. Deserialisierung ist der umgekehrte Vorgang, bei dem aus einer Byte-Folge wieder ein programmierbares Objekt erzeugt wird. Dabei wird der ursprüngliche Zustand des Objekts wiederhergestellt.“

Die eigentliche Schwachstelle liegt in der Klassenkette der PHP-Sprache und nicht im Framework selbst. Unsichere Deserialisierung – wenn eine Website es einem Benutzer erlaubt, nicht vertrauenswürdige Daten in eine Web-App einzuführen oder eine Objektinjektion durchzuführen.  Die injizierten Daten können die Logik einer Anwendung missbrauchen und einen Denial-of-Service (DoS)-Angriff auslösen oder einem Angreifer die Ausführung von beliebigem Code ermöglichen, während die Daten deserialisiert werden.

Der Destruktor der Stream-Klasse ist die verwundbare Komponente. Um den Speicher freizugeben und das neue Klassenobjekt zu zerstören, das im Programm bereits seinen Zweck erfüllt hat, wird der PHP-Interpreter den Destruktor des Objekts aufrufen. Wenn die Klasse des serialisierten Objekts eine Methode namens __wakeup() und __destruct() implementiert, werden die Methoden automatisch ausgeführt, wenn unserialize() auf einem Objekt aufgerufen wird.

Betroffene Versionen und Lösung

  • Zend-Framework Version 3.0.0
  • Laminas Projekt laminas-http vor 2.14.2

Im Januar 2020 wurde Zend-Framework auf das Laminas-Projekt migriert. Laminas-Project hat einen kleinen Sicherheitspatch auf GitHub veröffentlicht. Qualys-Kunden können ihr Netzwerk mit der QID 374828 scannen, um verwundbare Assets zu erkennen.

#Qualys