Schlank und agil

Teil 2: CMS-Serie: Geeklog 1.5.2. vorgestellt

  1. CMS-Serie: Geeklog 1.5.2. vorgestellt
  2. Teil 2: CMS-Serie: Geeklog 1.5.2. vorgestellt

Außerdem können Sicherheitslücken, die eine XSS-Attacke erlauben, alle Sicherheitsmaßnahmen gegen CSRF ad absurdum führen. Nach den mehrfachen Sicherheitslücken der Version 1.3.x von Geeklog wurde der Code in dieser Hinsicht umfassend überarbeitet.

Am 30. März 2009 wurde von Fernando Munoz im Administrationsfront-end von Geeklog bis einschließlich Version 1.5.2 eine XSS-Sicherheitslücke gemeldet. Diese Sicherheitslücke ist kurz danach mit der Version 1.5.2sr1 geschlossen worden.

Tokens in Geeklog

In der Praxis ist es üblich, den Token-Namen zusammen mit dem Wert des Tokens in die Formular-Vorlage zum Beispiel wie folgt einzubinden:

$template->set_var('gltoken_name',
CSRF_TOKEN);
$template->set_var('gltoken', SEC_
createToken());

Zur Übertragung dieser Daten wird ein verstecktes Eingabefeld etwa folgendermaßen implementiert:

<input type="hidden" name="{gltoken_
name}" value="{gltoken}"{xhtml}>

Bei CSRF_TOKEN handelt es sich um eine Konstante, wobei hingegen der Aufruf von SEC_createToken() ein neues Token erzeugen und zurückliefern wird.

Üblicherweise benutzt man nur ein Token pro Formular, das heißt, man darf sinnvollerweise SEC_createToken() nur einmal aufrufen. Die Funktion besitzt einen optionalen Parameter (ttl, time to live), der die Lebensdauer des Tokens festlegt.

Standardmäßig ist ttl auf 1200 Sekunden, also 20 Minuten, gesetzt. Beim Verarbeiten der HTTP-Abfrage führt man lediglich einen Aufruf von SEC_checkToken() durch, um zu prüfen, ob der mit der Anfrage verschickte Token noch gültig ist. Wird die HTTP-Abfrage abgebrochen, so liefert die Funktion entsprechend den Wert false zurück.

Content-Management-Systeme

© Archiv

Verwaltung von Plugins in Geeklog 1.5.2sr1.

Aus Sicherheitsgründen mag es angebracht sein, das Vorkommen von ungültigen Tokens samt der dazu passenden IP und des jeweils genutzten Benutzernamens mitzuloggen, um Missbrauch sensitiver Daten zu verhindern.

Beim Entwurf der Programmlogik zur Verarbeitung von Formularen in Geeklog sollten einige Sicherheitsaspekte unbedingt berücksichtigt werden. Es empfiehlt sich, keine überflüssigen Tokens zu erzeugen. Ein Token per Formular ist in der Regel völlig ausreichend. Der Aufruf von SEC_checkToken() wird ein Token ungültig machen.

Wird also ein neues Formular angezeigt, nachdem das Token geprüft wurde, wird man nicht umhinkommen, ein neues Token zu erzeugen. Prüft der genutzte Algorithmus die Formulardaten zum Beispiel auf fehlende Eingaben hin, sollte man berücksichtigen, dass der Aufruf der Zurück-Schaltfläche dem Formular samt des dazu passenden Tokens neues Leben einhaucht, obwohl man das Token in der Programmlogik bereits geistig zu den Akten gelegt hatte und seine Gültigkeit durch den Aufruf des neuen Formulars bereits abgelaufen ist.

Alle Vorgänge, die Daten erzeugen, verändern oder löschen, sollten mithilfe von Tokens geschützt werden. In der Regel kann man ruhig auf den Einsatz von Tokens verzichten, wenn man lediglich Daten auflistet, wie zum Beispiel, wenn Sie eine Liste von Waren im Warenkorb anzeigen.

Gibt es in der Liste jedoch aktive Elemente wie etwa ein Optionskästchen oder ein Radiobutton, mit deren Hilfe man eine Option aktivieren und wieder deaktivieren kann, dann sollte man für diese Operationen unbedingt Tokens einsetzen.

Sicherheitsprobleme behoben

Eine Zeit lang wurden Administratoren von Geeklog-Systemen durch zahlreiche ernst zu nehmende Sicherheitslücken geplagt, die unter anderem eine SQL-Injection möglich machten.

Durch die fehlende Überprüfung von $userid- und $sessid-Variablen in Geeklog 1.3.x konnten Angreifer SQL-Befehle an das System übergeben; etwaige SQL-Fehlermeldungen wurden durch das System in die Datei error.log umgeleitet. Darüber hinaus ließen sich beliebige Dateien auf dem Server lesen und teils sogar ausführen, da unter anderem in der Datei lib-common.php über Sprachparameter ein benutzerdefiniertes Verzeichnis angegeben werden konnte.

Ein Angreifer, der diese beiden Schwachstellen auszuloten wusste, konnte die Kontrolle über das System übernehmen. Verursachte der Angreifer eine Fehlermeldung, die in einer Logdatei aufgezeichnet wurde, konnte dann die zweite Sicherheitslücke genutzt werden, um den PHP-Code aus dieser Protokolldatei auszuführen.

Falls der PHP-Interpreter in einem Dokument einen gültigen öffnenden PHP-Tag vorfindet, versucht er nämlich, den eingeschlossenen Code auszuführen. Dabei spielen der Dateityp und die Dateierweiterung überhaupt keine Rolle. Wird der PHP-Interpreter angewiesen, eine JPEG-Datei zu verarbeiten, die den Code: mitten drin beinhaltet, führt er diese aus.

Geeklog 1.3.x stellte vorübergehend einen Tiefpunkt dar. Seither wurde die Sicherheit des Systems mit jeder neuen Version stetig verbessert. Seit der Version 1.4.0 wurde auch die Voraussetzung eliminiert, register_globals auf den Wert on zu setzen.Diese Einstellung hätte das Potenzial, eine Pandorabüchse von Sicherheitsproblemen in PHP ans Tageslicht zu holen.

Geeklog hat derzeit zwei Entwicklungszweige: 1.x und 2.x. Zu Geeklog 2 kann man bisher nicht allzu viel Verbindliches sagen, außer dass das Projekt in Aptitude CMS umbenannt wurde und als ein experimentelles CMS-System entwickelt wird. Geeklog 1.x gilt als der stabile Zweig für den produktiven Einsatz.

Google Summer of Code

Vielen Anwendern wurde Geeklog erst durch die Teilnahme am Google Summer of Code 2007 und 2008 bekannt. Als Nebenprodukt der Teilnahme kann die Software nun ein aktualisiertes Installationsskript, eine Web-basierte Konfiguration und erstmals auch die Unterstützung für das Atom-Publishing-Protokoll vorweisen. Mit Version 1.6 soll auch die Plugin-Installation deutlich vereinfacht, die eingebaute Suchmaschine verbessert werden.

Kommentare werden editierbar und lassen sich dann auch moderieren. Eine sicherheitsbedingte Umstellung auf PHP 5.x wird nicht ausgeschlossen, insbesondere da PHP 4 offiziell mit der Version 4.4.9 im August letzten Jahres eingestellt wurde. Bisher setzt Geeklog 1.5.2x PHP in der Version 4.1.0 voraus. Auch im Jahr 2009 wird sich die Geeklog-Entwicklergemeinde als Mentor-Organisation am Google Summer of Code beteiligen.

Mehr zum Thema

Youtube Sperre umgehen GEMA
Videos freischalten

So umgehen Sie die GEMA-Sperre bei Youtube. Was Sie dazu brauchen, und wie es am einfachsten geht.
Neue Fritzboxen unterstützen den AC-Standard.
WLAN-Geschwindigkeit verdoppeln

Mehr WLAN-Geschwindigkeit: Mit dem WLAN-Standard 802.11ac und den richtigen Geräten und Einstellungen verdoppeln Sie den Datendurchsatz.
Netflix auf dem TV
Programm in der Übersicht

Welche Filme und Serien gibt es bei Netflix eigentlich zu sehen? Was ist neu im Streaming-Angebot? Diese Antworten helfen weiter.
Netflix
Streaming

Preise, kompatible Geräte, Datenrate, Serien- und Filmangebot von Netflix: Wir beantworten die wichtigsten Fragen rund um den Streaming-Dienst.
E.T. – Der Außerirdische
Vorschau auf Film- und Serien-Highlights

Amazon Prime Instant Video lockt im Dezember 2016 mit Film-Highlights wie "E.T.", "Fast & Furious 7" und der Serie "Ku’damm 56​".