Tiki Wiki (genauer Tiki Wiki CMS Groupware) ist ein Content Management System (CMS), das auf PHP, Adodb und Smarty basiert. Auf seiner Grundlage lässt sich eine Vielzahl von Webapplikationen umsetzen. Eine darin entdeckte Sicherheitslücke erlaubt es einem entfernten Angreifer, Cross-Site-Scripting-Attacken durchzuführen.
Die eingesetzte PHP-Template-Engine Smarty wird häufig für einfachere CMS verwendet und erlaubt das schnelle Entwickeln von Webapplikationen. Die Sicherheitslücke von Tiki Wiki befindet sich in der Datei “snarf_ajax.php”, die den via URL übergebenen Parameter “ajax” nicht ordentlich filtert.
Die fehlerhafte Zeile im Programmcode sieht so aus:
<a id="asnarf{$snarfParams.iSnarf}">{tr}{$snarfParams.ajax}{/tr}</a>
Dabei enthält die Variable “$snarfParams.ajax” den als “ajax” übergebenen Wert aus dem URL. Dieser wird hier ohne Kontrolle weiterverarbeitet. Dadurch hat ein entfernter Angreifer leichtes Spiel und kann Cross-Site-Scripting-Attacken durchführen. Ein einfacher Exploit hierfür könnte folgendermaßen aussehen:
http://Zielhost/snarf_ajax.php?url=1&ajax=%3Cscript%3Ealert%28document.cookie%29;%3C/script%3E
Für eine solche Attacke sind allerdings nur Tiki-Nutzer der Admin-Gruppe anfällig.
Dabei enthält Smarty einige Routinen, um solche Probleme zu vermeiden: Beispielsweise sorgt die Escape-Funktion dafür, dass Strings je nach Einsatzbereich gefiltert werden können. Die Funktion wird wie folgt verwendet:
$string|escape:'html'
Der an “escape” übergebene “html”-Parameter spezifiziert die Filterregeln genauer und lässt sich je nach Anwendung anpassen. Er kann folgende Werte annehmen: “html”, “htmlall”, “url”, “urlpathinfo”, “quotes”, “hex”, “hexentity”, “javascript”, “mail”. Der Patch für die in Tiki Wiki entdeckte Schwachstelle besteht demnach einfach darin, die Escape-Methode auf “$snarfParams.ajax” anzuwenden:
<a id="asnarf{$snarfParams.iSnarf}">{tr}{$snarfParams.ajax|escape:html}{/tr}</a>
Damit ist die Cross-Site-Scripting-Attacke nicht mehr möglich.
Betroffen sind die Versionen 6.x vor 6.4 und 7.x vor 7.1.

