Bugfixes für kritische Sicherheitslücke in Contao

28

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!

Zurück

Einen Kommentar schreiben

  1. Kommentar von Mathias |

    Besten Dank, dass ihr auch für ältere Versionen die Bugfixes bereit stellt. Das rettet mir echt den A**** :)

  2. Kommentar von Veronika |

    Von mir auch herzlichen Dank!

  3. Kommentar von Stefan Preiss |

    Thanx guys. 3.1.5 komplett aufgespielt. Keine Probleme. Chapeau - auch für die Reaktionsgeschwindigkeit.

  4. Kommentar von Tim Becker |

    Danke Danke und dubbele Merci wie man hier so schön sagt. Vor allem die Patchs für die alten rettet auch mir grad ein wenig den Arsch :-)

  5. Kommentar von Chris |

    Danke für den Artikel und die Aufklärung. Eine kurze Suche nach „deserialize“ in einigen Installationen bringt Treffer in nachfolgenden Modulen:

    <ul>
    <li>changelanguage</li>
    <li>dlh_googlemaps</li>
    <li>efg</li>
    <li>googlesitemap</li>
    <li>html5video-js</li>
    <li>html5video-js_ext</li>
    <li>image_headline</li>
    <li>multicolumnwizard</li>
    <li>pk_noobSlide</li>
    <li>socialmedialinks</li>
    <li>subcolumns</li>
    <li>xtmembers</li>
    </ul>

    Kann ich irgendwie testen, ob die Module betroffen sind?

    Danke für die Hilfe!

  6. Kommentar von Andreas Isaak |

    Patcht nicht selbstständig alle Extensions! Spielt nur die Patches ein, mehr könnt ihr derzeit nicht tun. Die CCA und andere fähige Entwickler der gesamten Community arbeiten bereits an einer allgemeingültigen Lösung die dann (sofern alles gut läuft) auch in eine neue Contao-Version veröffentlicht wird.

  7. Kommentar von Thorsten Neuhaus |

    Danke!

  8. Kommentar von Toni |

    Danke für die Patches!

    Weiss jemand ob der Patch für 2.11.13 auch bei 2.11.12 funktioniert?

    Gruß

  9. Kommentar von Tristan Lins |

    Also wir haben es nicht getestet, möglich ist es ggf. schon. Aber ein Update auf die neueste Version sollte bei einer einzelnen Minor Version Unterschied kein Problem sein.

  10. Kommentar von Oliver |

    Ich habe nun das Patch(nurPatch) für 3.1 aufgespielt. Hab die Check drüberlaufen lassen. Meldet mir nun Corrupt files fü genau diese Files.
    Website läuft einwandfrei!! Hab ich was vergessen??

  11. Kommentar von Tristan Lins |

    @Oliver nein das ist richtig, es entspricht ja keiner originalen 3.1.5 mehr, sondern eine modifizierten / gepatchten Version.

  12. Kommentar von Andi |

    Besten Dank für die Patches, unser Sorgenkindm eine veraltete Contaoversion 2.10.4, scheint damit noch bestens zu funktionieren :)

  13. Kommentar von Dennis |

    Hallo,
    gibt es die Möglichkeit betroffene Extensions, die die Funktion deserialize() benutzen, zu identifizieren?

    @Chris wie genau hast du die „kurze Suche“ durchgeführt?

    Laut Chris handelt es sich im Schnellschuss um folgende:

    changelanguage
    dlh_googlemaps
    efg
    googlesitemap
    html5video-js
    html5video-js_ext
    image_headline
    multicolumnwizard
    pk_noobSlide
    socialmedialinks
    subcolumns
    xtmembers

  14. Kommentar von Sascha |

    Sorry aber ich bin in Updates bisher recht unerfahren.
    Ist es nun so, dass ich mir oben das passende Paket heraussuchen muss und mit den Dateien die Dateien auf dem Server überschreiben?

    Ist es wirklich so einfach? Wenn ja, unendlichen Dank!

  15. Kommentar von Nicky Hoff |

    @Sascha ja ... es ist so einfach, aber nur für die jeweiligen Versionen, für die Pakete gedacht sind!

  16. Kommentar von Chris |

    @Dennis: Ich habe nur im Verzeichnis „system/modules“ nach der Funktion „deserialize“ gesucht.

    Ob die Module wirklich betroffen sind, kann ich aber nicht einschätzen. Beim efg z. B. wird die Funktion scheinbar beim Dateiupload verwendet – eine Installation ohne Dateiupload könnte also unproblematisch sein.

    Der Konjunktiv in meinen Aussagen verrät schon, dass ich fachlich nichts beisteuern kann, weil ich schlichtweg kein Entwickler bin. Vlt. bekommen wir noch eine Stellungnahme von einem Profi?

  17. Kommentar von Matthias |

    Hallo,
    ich habe gestern und heute ebenfalls diverse Contao-Installationen patchen und updaten dürfen. Vielen vielen Dank für Eure Arbeit und das schnelle Bereitstellen der Patch-Files!! Das gibt mir ein gutes Gefühl bzgl. der Zukunftssicherheit von Contao ;-)

  18. Kommentar von Bernhard |

    Hallo und vielen Dank für eure tolle Arbeit!
    Ist schon absehbar, wann es die aktualisierten Patch-Sets inkl. der letzten Anpassungen aus 3.2.6 bzw. 2.11.15 für ältere Versionen geben wird?

  19. Kommentar von Tristan Lins |

    Wir stehen mit Leo Feyer und dem Core Team in Verbindung, es scheint da noch Probleme zu geben. Sobald Leo, das Core Team und wir uns sicher sind, dass alle Sicherheitsprobleme behoben sind, stellen wir entsprechende Updates für ältere Versionen bereit.

  20. Kommentar von Bernhard |

    Hallo Tristan, danke für Deine Auskunft. Dann gehe ich davon aus, dass 2.11.15 und 3.2.6 noch nicht der letzte Stand für die Lösung des aktuellen Problem sein werden? Es macht dann wohl auch Sinn, auf die neuesten Releases zu warten, bevor man Patches einspielt.

  21. Kommentar von danielx11 |

    Hallo! Besten Dank für eure Mühe! Es bestätigt mal wieder das tolle CMS inkl. Community.

    Eine Verständnisfrage, bevor ich was zerhaue ;) :
    Installiert ist Contao 3.1.1
    > ich sichere die FTP-Daten
    > lade mir Contao 3.1.5 (Komplett-Installation inkl. Patch-Files)
    > Uploade sie auf dem FTP und überschreibe damit die alten Daten
    > Fertig? Alles korrekt so?

  22. Kommentar von mathias |

    sind in den Patchfiles auch die Dateien von den letzten Updates (z.B. 2.11.16) drin?

  23. Kommentar von Tristan Lins |

    @danielx11 du solltest zur Sicherheit noch ein Datenbankupdate machen. Für mehr Details empfehle ich das Handbuch zu studieren:
    https://contao.org/de/manual/3.2/installation.html#manuelles-update

    @mathias ja, wir haben die Patches bereits aktualisiert. Außerdem haben wir dazu auch noch einen neuen Newsbeitrag verfasst (http://c-c-a.org/aktuelles/news/details/sicherheitshinweise-zu-aktuellen-contao-releases) und eine eigene Seite eingerichtet (http://c-c-a.org/aktuelles/sicherheitshinweise).

  24. Kommentar von giorgio |

    Ich habe eine Installation mit Contao 2.11.3 welches patch soll ich denn da nehmen. Kann hierzu leider nichts finden?

    Antwort von Nicky Hoff

    @giorgio Das Patch für Contao 2.11.3 kannst du auch nicht finden, da es dafür kein Patch-Set gibt. Deshalb solltest du mind. auf eine Contao 2.11.16 aktualisieren.

  25. Kommentar von giorgio |

    Hallo Nicky Hoff
    jetzt bin ich etwas verwirrt! Ist die Contao Version 2.11.3 nicht höher als die 2.11.16 ? Wie kann ich da denn von 2.11.3 auf 2.11.16 updaten? Wo bekomme ich die Version und welchen Patch verwende ich dann. Sorry steh vermutlich ein wenig auf dem Schlauch.

    Antwort von Nicky Hoff

    Hallo Giorgio,

    da stehst du wirklich etwas auf dem Schlauch. Die 2.11.16 ist höher als die 2.11.3, denn die 16 kommt nach der 3. ;-)

    Die Version 2.11.16 ist die aktuellste, offizielle Contao 2.11.x-Version von contao.org und die bekommst du hier. Dazu auch der Newsbeitrag auf contao.org.

  26. Kommentar von Axel |

    Die gepatchte Datei Input.php im Ordner libraries verursacht einen eigenartigen Fehler.

    Habe eine TYPOlight-Installation 2.8.3 mit obigen Paket auf 2.8.4 gesetzt, aber sobald die gepatchte Input.php vorhanden ist, kommt nur noch eine weisse Seite. Keine Möglichkeit Install aufzurufen oder ins Backend zu kommen.

    Wie kann das sein? Was soll man tun?

    Antwort von Marc Reimann

    Hallo Axel,

    das kann jetzt verschiedene Gründe haben. Eventuell liegt das auch an einer Erweiterung die bei dir installiert ist. Du kannst einmal schauen, ob du im error.log von Contao was findest oder auch im error.log vom Server. Eventuell kann man dann schon mehr sagen. Zusätlich kannst du versuchen vor dem update die Erweiterungen auszuschalten (bin mir gerade nicht sicher ob das mit 2.8 schon ging...).
    Falls du mit dem Problem nicht weiter kommst, dann melde dich doch bitte im Forum. Da ist die besser Platform um zu helfen ;-)

  27. Kommentar von Sebbo |

    @Axel: ich hatte das gleiche Problem. Ich habe Fehler in der Datei system/libraries/Input.php gefunden:

    Die Funktionen resetCache() und stripSlashes($varValue) sind doppelt deklariert bzw. es wurden die alten Versionen nicht entfernt. Es müssen daher in dieser Datei die Funktionen resetCache() (Zeile 369) und stripSlashes($varValue) (Zeile 380) entfernt werden. Danach funktioniert ein Update auf die gefixte 2.8.4 ohne Probleme!

    Antwort von Marc Reimann

    Hier dann auch noch mal: Danke für die Infos!

    Die Fehler wurden direkt von uns behoben und es sollte jetzt alles mit den aktuell Patch-Files gehen.

  28. Kommentar von Erhard Scharf |

    Von mir auch vielen Dank! War auch schon am verzweifeln, weil ich von einer 3.1.1 auf die 3.2.7 hätte updaten müssen, welches in 10 Versuchen nie hingehauen hat.