Bugfixes für kritische Sicherheitslücke in Contao
von Nicky Hoff
Update 12.02.2014, 18.00 Uhr
Soeben wurden die Contao-Versionen 3.2.6 und 2.11.15 veröffentlicht. Die Bugfix-Releases beheben eine weitere Sicherheitslücke im Zusammenhang mit der PHP-Object-Injection-Schwachstelle, die sich im Contao-Backend auch in der Version 3.2.5 und 2.11.14 noch ausnutzen ließ (Ankündigung auf contao.org).
Die deserialize()
Funktion wurde gegen weitere Angriffsmöglichkeiten gehärtet und die Filter der Input-Klasse verbessert. Somit sind das Frontend und auch das Backend, sowie Drittanbieter-Erweiterungen potientiell nicht mehr gefährdet.
Auch wenn bereits die bisherigen Patches eingespielt wurden, empfehlen wir dieses Update durchzuführen, da die bestehenden Patches als Hotfix anzusehen sind und nur die akuten Probleme im Frontend behoben wurden. Wir werden versuchen, aktualisierte Patch-Sets umgehend zur Verfügung zu stellen.
Es gibt keine Sicherheit, nur verschiedene Grade der Unsicherheit.
Anton Neuhäusler
Das mussten wir nun leider schmerzlich feststellen, denn wie jetzt bekannt wurde, gibt es eine kritische Sicherheitslücke in Contao (Ankündigung auf contao.org), welche es ermöglicht durch PHP-Object-Injection "beliebigen PHP-Code auf dem Server auszuführen (Arbitrary Code Execution)". Um diese Lücke zu schließen, wurden die Updates 3.2.5 und 2.11.14 zur Verfügung gestellt. Unsere bisherigen Tests haben auch gezeigt, dass die Sicherheitslücke damit auch behoben ist und somit nicht mehr ausgenutzt werden kann.
Wer/was ist betroffen?
Nach aktuellem Wissenstand sind wirklich ALLE Contao-Versionen betroffen, außer natürlich die Versionen 3.2.5 und 2.11.14. Des weiteren sind alle Dritterweiterungen, die die Funktion deserialize()
benutzen, potentiell ebenfalls betroffen und sollten umgehend geprüft und gepatched werden.
Wie kann ich dieses Problem beheben?
Mit der Installation/einem Update von/auf Contao 3.2.5 bzw. 2.11.14 gibt es bei den Contao Core-Funktionen aktuell keine bekannte Angriffsfläche mehr. ABER: Extensions von Drittanbietern sind davon unberührt und gefährden potentiell weiterhin die gesamte Contao-Installation.
Damit Ihr nun nicht Eure kompletten Websites auf die jeweils aktuellsten Contao-Versionen updaten müsst, stellen wir Euch nachfolgend verschiedene Patchpakete für verschiedene Contao-Versionen zur Verfügung. Dazu müsst Ihr Euch einfach das passende Paket herunterladen und dann die jeweiligen Dateien auf Eurer Website ersetzen.
Wir stellen Euch nachfolgend verschiedene Patch-Pakete zur Verfügung. Diese gelten ausschließlich für die jüngste Version aus den jeweiligen Minor-Zweigen von 2.6 bis 3.2. Solltet Ihr noch nicht auf der jeweils jüngsten Version sein, ist ein Update unumgänglich.
Contao 3.x
Contao 2.x
Typolight 2.x
Anwendungsbeispiele:
Fall 1: Wenn Ihr Contao 2.10.3 habt, dann solltet Ihr die Komplettinstallation von uns nehmen und damit direkt ein Update auf Contao 2.10.4 durchführen.
Fall 2: Ihr habt bereits die Version 2.10.4, dann müsst Ihr lediglich die jeweiligen Patch-Files per FTP in Eure Contao-Installation kopieren.
Achtung
Die Benutzung dieser Bugfix-Versionen geschieht auf eigene Gefahr. Sie wurden von uns getestet und geprüft. Aber es kann immer sein, das sich ein Fehler eingeschlichen hat. Deswegen wird (wie immer) angeraten, ein Backup der Installation vor dem Einspielen vorzunehmen.
Bitte beachtet weiterhin, dass dies inoffizielle Patch-Files sind und somit vom Contao Core Team nicht supported werden!
Für Entwickler
Wie kann man seine Erweiterungen absichern?
Das Problem an sich besteht in der Methode unserialize()
und deren Contao Pendant deserialize()
in Verbindung mit POST-Daten (und logischerweise auch GET). Die Input Klasse filtert diese zwar, jedoch kann man besonders formatierte Strings versenden, welche Schadcode beinhalten.
Man muss in seiner Erweiterung prüfen, ob die Verwendung von deserialize()
unbedingt notwendig ist, was jedoch in 99% der Fälle nicht zutreffen wird.
Sollte es dennoch der Fall sein, muss man seine Erweiterung dahingehend umbauen, dass dies nicht mehr der Fall ist - Ja, das ist unser Ernst, ganz ehrlich, KEIN Scherz!