Unsichere Deserialisierung
Erlaubt Angreifern, Code durch manipulierte serialisierte Daten auszuführen.
Was ist diese Schwachstelle?
Unsichere Deserialisierung tritt auf, wenn eine Anwendung Daten deserialisiert (vom gespeicherten Format zurück in Objekte konvertiert), die von einem Angreifer manipuliert wurden. In PHP kann die unserialize()-Funktion missbraucht werden, um beliebige Objekte zu instanziieren und "magische Methoden" (__wakeup, __destruct, __toString) auszulösen, die gefährliche Operationen ausführen. Dies kann zu Remote Code Execution, Dateimanipulation oder Denial of Service führen.
Wie nutzt ein Angreifer dies aus?
Angreifer identifizieren, wo serialisierte Daten verarbeitet werden (Cookies, Formularfelder, API-Parameter, gecachte Daten). Sie analysieren die Codebasis auf "Gadget Chains" – Sequenzen von Objektmethoden, die bei der Deserialisierung zu gefährlichen Operationen führen. PHPs POP-Chains (Property-Oriented Programming) können aus mehreren Klassen kombiniert werden. Tools wie PHPGGC (PHP Generic Gadget Chains) stellen vorgefertigte Exploitationsketten für gängige Frameworks und Bibliotheken bereit.
Mögliche Konsequenzen
- Remote Code Execution durch PHP Magic Method Chains
- Beliebige Datei-Lese/Schreib/Lösch-Operationen
- Denial of Service durch Erzeugung ressourcenintensiver Objekte
- SQL-Injection durch deserialisierte Objekte, die mit der Datenbank interagieren
- Authentifizierungs-Umgehung durch Manipulation von Session-Objekten
- Vollständige Serverkompromittierung in Kombination mit Code-Execution
Wie schützen Sie sich
- Niemals unserialize() auf benutzergelieferte Daten anwenden – dies ist die wichtigste Regel
- JSON (json_encode/json_decode) statt PHP-Serialisierung für den Datenaustausch verwenden
- Falls unserialize nötig ist, die Option allowed_classes verwenden, um einschränkbar zu machen, welche Klassen instanziiert werden
- Integritätsprüfungen (HMAC-Signaturen) auf serialisierte Daten implementieren, um Manipulation zu erkennen
- Alle Bibliotheken aktuell halten, da Gadget Chains von spezifischen Klassenimplementierungen abhängen
- Statische Analyse-Tools verwenden, um unsichere unserialize()-Aufrufe zu erkennen
Wie finden Angreifer diese Schwachstelle?
Angreifer suchen nach serialisierten PHP-Daten in Cookies, URL-Parametern, POST-Daten und API-Antworten. PHP-serialisierte Daten haben ein charakteristisches Format: O:4:"User":2:{s:4:"name";...}. Sie testen, indem sie die serialisierten Daten modifizieren und die Reaktion der Anwendung beobachten. Tools wie PHPGGC generieren Payloads für gängige Frameworks. Fortgeschrittene Angriffe umfassen den Aufbau benutzerdefinierter POP-Chains durch Analyse der Klassenhierarchie des Plugins.
Beispiel-CVEs aus unserer Datenbank
The ShortPixel Image Optimizer plugin for WordPress is vulnerable to PHP Object Injection in versions up to, and including, 5.4.1 via deserialization of untrusted input in post content. This allows authenticated attackers with editor capabilities or above to inject a PHP Object. No POP chain is present in the vulnerable plugin. If a POP chain is present via an additional plugin or theme installed on the target system, it could allow the attacker to delete arbitrary files, retrieve sensitive data, or execute code.
The YITH WooCommerce Compare plugin for WordPress is vulnerable to PHP Object Injection in versions up to, and including, 2.0.9 via deserialization of untrusted input from the 'yith_woocompare_list' cookie. This allows unauthenticated attackers to inject a PHP Object. It has been confirmed that this vulnerability allows attackers to execute arbitrary PHP code.
The Ecwid Ecommerce Shopping Cart plugin for WordPress is vulnerable to PHP Object Injection in versions before 4.4.4 via deserialization of untrusted input from the vulnerable cookie parameter 'ecwid_oauth_state' in the _load_state function. This allows unauthenticated attackers to inject a PHP Object. No POP chain is present in the vulnerable plugin. If a POP chain is present via an additional plugin or theme installed on the target system, it could allow the attacker to delete arbitrary files, retrieve sensitive data, or execute code.
The WP Super Cache plugin for WordPress is vulnerable to PHP Object Injection in versions up to, and including, 1.4.4 via deserialization of untrusted input. This allows attackers to inject a PHP Object into cache files. If the cache file is accessed, it could allow the attacker to delete arbitrary files, retrieve sensitive data, or execute code.
The Easy Digital Downloads plugin for WordPress is vulnerable to PHP Object Injection in versions up to, and including, 2.5.7 via deserialization of untrusted input from cookies and request parameters. This allows unauthenticated attackers to inject a PHP Object.
... und 94 weitere in unserer Datenbank
Typische Auswirkung
Remote Code Execution, Denial of Service, Manipulation der Anwendungslogik.
Empfohlene Maßnahme
the affected plugin sofort aktualisieren. Keine benutzergelieferten Daten unserialisieren. JSON statt PHP-Serialisierung verwenden.
Ist Ihre WordPress-Seite von dieser Art von Schwachstelle betroffen?
Jetzt Ihre Seite scannen