In vielen Fällen, wo Angreifer versuchen, Schadcode oder einen Conditional Hack in einer Webseite unterzubringen, wird einfach nur die zentrale index.php oder index.html Datei verändert, unabhängig davon, welches CMS oder sonstige Software zum Einsatz kommt. Die Angreifer kommen dabei gar nicht zwingend durch eine Sicherheitslücke in der verwendeten Software ins System sondern oft auch durch einen FTP Account, dessen Zugangsdaten über einen Trojaner abgegriffen wurde.
Um die mögliche Manipulation der zentralen index.php Datei bei TYPO3 zu entdecken ist die Extension CheckMySite sehr hilfreich.
Die Extension überprüft die index.php bei jedem Seitenaufruf auf potenziellen Schadcode indem ca. 60 Regeln abgearbeitet werden. Auf die Prüfung einer zuvor hinterlegten Signatur wurde bewußt verzichtet, damit nicht bei jedem TYPO3 Update neue Signaturen erzeugt werden müssen. Das Regelset bildet alle momentan bekannten Angriffszenarien ab und kann bei Bedarf später erweitert werden.
Wird potenzielle Schadcode entdeckt, wird eine Mail an eine vorher definierte Adresse geschickt. Die Nachricht wird in regelmäßigen Abständen erneut verschickt, damit sie nicht untergeht. Der Zeitraum kann frei definiert werden.
Außerdem wird der Frontend Output von TYPO3 unterbunden und stattdessen ein frei wählbarer Text, wie zum Beispiel „Webseite wegen Wartungsarbeiten nicht erreichbar“ angezeigt oder auf eine andere URL (z.B. eine statische Wartungsseite) umgeleitet. Dadurch wird sichergestellt, dass sich der Schadcode nicht weiter verbeiten oder von Google indiziert werden kann.
Nachdem der Schadcode entfernt wurde, läuft die Webseite wieder wie gewohnt.
Laut Extension Autor verzögert sich der Seitenaufbau durch die Überprüfung um etwa 20 ms. Für Seiten mit normalem Traffic dürfte das keine Rolle spielen, bei größeren Webseiten oder Seiten mit Lastspitzen sollte die Serverlast aber im Auge behalten werden.
Die aktuell im TER verfügbare Version 2.0.3 von CheckMySite setzt PHP 5.3 voraus. Durch die Änderung einer Zeile Code läuft sie aber auch problemlos in PHP 5.2.
Dazu muss in der Datei typo3conf/ext/checkmysite/lib/class.checkfile.php das Code Schnipsel
realpath(__DIR__).'/check.db'; |
durch
realpath(t3lib_extMgm::extPath('checkmysite')).'/check.db'; |
ersetzt werden.
Andernfalls wird das TYPO3 Protokoll mit Fehlermeldungen dieser Art überschwemmt:
PHP Warning: touch(): Unable to create file /check.db because Permission denied in /pfad/zu/typo3conf/ext/checkmysite/lib/class.checkfile.php line 228
Außerdem wird dann bei jedem Seitenaufruf eine Mail verschickt und nicht nur ein mal pro eingestelltem Intervall. Bei regem Traffic kann das eine Mailbox schnell sprengen.
Ein Update der Extension, die auch mit PHP 5.2 kompatibel ist, wurde bereits in Aussicht gestellt.
Installation
Die Installation ist super einfach: Extension über den Extension Manager aus dem TER downloaden und installieren. Danach Empfänger und Absender Adresse eingeben. Auch mehrere Empfänger sind möglich. Außerdem kann der Text, der bei der Entdeckung von Schadcode angezeigt wird, angepasst werden oder eine Weiterleitungs Adresse definiert werden. Zuletzt wird noch der Intervall der Benachrichtigungsmail festgelegt. Standard ist eine halbe Stunde. Nach dem Speichern ist die Installation abgeschlossen und die Webseite wird überwacht.
Fazit
Durch die Extension CheckMySite kann eine Webseite sehr leicht sicherer gemacht werden. Man darf sich aber nicht der Illusion hingeben, dadurch unverwundbar zu sein. Ein weiteres beliebtes Angriffsziel für Manipulationen ist zum Beispiel die .htaccess Datei, die nicht überwacht wird. Updates des TYPO3 Cores und aller Extensions sollten also immer Priorität haben.