Mit solchen Dingen muss man sich herumschlagen. Wer wie ich ein Blog über Spam führt, glaubt ja schon schnell erstmal gar nichts, aber die folgende Mail ist insofern »echt«, als dass sie wirklich von einem Server von Yandex kommt, auch gehen die angegebenen Links wirklich zu Yandex:
Betreff: Yandex Search found malware on your website spam.tamagothi.de
Hi,
Some of the pages on your website may pose a threat to your visitor’s computer security. The number of potentially harmful pages is 1. [sic! Sehr informativ, nicht?!] You can view the details of our malware scan at http://yandex.com/infected?url=spam.tamagothi.de&l10n=en. To learn about how to find malicious code and delete it from your pages, please go to the help section http://help.yandex.com/webmaster/?id=1115235#1115243 of our free website management service Yandex.Webmaster http://webmaster.yandex.com/.
Yandex is one of the world’s leading search engines and a popular web portal (http://company.yandex.com/general_info/yandex_today.xml). We continually check all websites in our search index using our own antivirus suite which integrates the signature and the behavioral approaches to malware detection. Read more about our antivirus technology at http://company.yandex.com/technologies/antivirus_technology.xml.
This is an automated message to alert you about a problem detected on your website. This service free [sic!] and does not require registration. [Man nennt solche alarmierenden, automatisch versendeten Nachrichten andernorts auch »Spam«, was angesichts der breit dargebrachten Reklame ein sehr passendes Wort dafür ist]
To receive additional information about your website, including the list of infected pages, or to request a check-up after the malicious code has been deleted, please register on our free website management service Yandex.Webmaster (http://webmaster.yandex.com).
Best regards,
Yandex Safe Search Team
[Alle Links sind von mir auf andere Ziele gesetzt worden. Wer verstehen will, warum ich diese Leute beim besten Willen nicht auch noch direkt verlinken mag, muss nur weiterlesen.]
Da ich gerade eben erst die Wucht der neuen Brut von Kommentarspamskripten erleben durfte, führt ein solcher Hinweis bei mir nicht gerade zu einem gleichgültigen Schulterzucken. Gerade das Spamblog hat bereits – neben dem »gewöhnlichen« DDoS-Vandalismus – einige durchaus gelungene Angriffe (meist auf ausbeutbare WordPress-Bugs) erlebt, die mir teils erhebliche Aufräumarbeiten bescherten. Deshalb habe ich mir auch diesen Hinweis zum Grund genommen, mir die Sache ganz genau anzuschauen.
Die »Details« des Malware-Scans von Yandex sind mir in dieser Absicht nicht gerade eine große Hilfe gewesen:
Genau wie in der Mail gibt es nicht den geringsten Aufschluss darüber, welche Seite im Spamblog mit Malware verseucht sein soll, stattdessen einen Hinweis, dass die gesamte Domain für Besucher gefährlich sei. Nicht, dass ich diese Einstufung für eine schlechte Idee halte, ganz im Gegenteil. Aber für mich als denjenigen, der auf der webmaster
-Adresse einen solchen Hinweis erhält, fehlt in dieser »Information« irgendwie die Information.
Mein nächster Weg führte mich erstmal zu Googles Webmaster-Tools. Auch Google führt regelmäßig einen Scan auf Malware durch, bei dem ich schon einmal lernen musste, dass auch das Zitat eines HTML-Quelltextes in einer Textdatei gefährlich ist, weil einige Browser aus dem Hause Microsoft sich nicht um den vom Server gelieferten MIME-Type kümmern, sondern (in Verletzung von Webstandards) automatisch eine HTML-Darstellung machen und den schädlichen Code dabei ausführen. Gut, Dateien löschen ging schnell, und schon waren auch die letzten Nutzer älterer Versionen des Internet Exploiter geschützt. Google hat dabei für mich den großen Vorteil, dass die URL mit dem gefährlichen Code auch genannt wird, so dass ich eine gute Chance habe, ein gefundenes Sicherheitsrisiko so schnell wie möglich zu beseitigen. Dafür werde ich auf der anderen Seite nur dann mit Mail belästigt, wenn ich das explizit will. Zwei Dinge, von denen Yandex vielleicht etwas lernen sollte…
Aber die Webmaster-Tools von Google haben auf »Unser täglich Spam« keine Malware gefunden. Vermutlich verwenden sie nicht »our own antivirus suite which integrates the signature and the behavioral approaches to malware detection« mit Sophos-Reklame in etlichen Yandex-Seiten, sondern ein Verfahren, das zuverlässig ist. Zumal der Ansatz bei Yandex… ähm… interessant ist:
The Yandex antivirus technology, on the other hand, is based on an alternative, “behavioral” approach. The idea behind it is that the program detects malware by performing the actions similar to those of a visitor to a web page. If a download or a program execution begins on a page automatically without user initiation, this page is very likely to be infected. This method allows detecting malware anywhere on the page including external code, such as the code of a banner ad. The main advantage of the behavioral approach is its ability to detect viruses that haven’t yet been added to any antivirus database.
Nur hilfreich zum Eingrenzen der Suche ist das alles nicht. Oh, es gibt ja auf der Yandex-Warnseite noch einen kleinen Link für »Weitere Informationen«, mal klicken:
Hui, schon wieder Sophos, für die dieser Code schon ein alter Bekannter ist. Um was für einen Trojaner es sich handelt, sagt mir Sophos in seiner uninformativen Dreckssite für Schlangenölkäufer genau so wenig, wie Yandex mir sagt, unter welcher URI sein Bot den Trojaner gefunden haben will. Gut, dass Microsoft da wesentlich informativer ist und dass SecureList zeigt, dass da wirklich eine sehr allgemeine Warnung zu einem schrillenden, roten Alarm geführt hat. So langsam glaube ich ja, dass das kein Hinweis auf Malware in meinem Blog, sondern eine tolle neue Reklameform für das Antivirus-Schlangenöl¹ von Sophos ist, die allerdings für mich nicht so ganz gelungen herüberkommt. In welchem der über 2.300 Blogpostings auf »Unser täglich Spam« die Malware stecken soll, wäre für mich in einer derartigen Situation eine viel wichtigere Information, damit ich überhaupt eine Gelegenheit bekomme, die mögliche Gefahr schnell zu sichten und gegebenenfalls zu entfernen. Aber darauf scheint es bei dieser Mail nicht anzukommen…
Es gibt da schon einige IFRAME
s in »Unser täglich Spam«, die möglicherweise für den tollen Yandex-Algorithmus interessant sind, da sie externen Code enthalten und ausführen (eventuell sogar mit Download größerer Datenmengen). Dies sind einige YouTube-Videos, einige Dailymotion-Videos und die Mailinator-Ansicht des Gammelfleisch-Honigtöpfchens auf der Seite »Gib mir Spam« mit einer hoffentlich ausreichend klar formulierten Warnung, was es mit den dort sichtbar werdenden Spammails auf sich hat.
YouTube und Dailymotion vertraue ich, und in der Tat, die Mailinator-Ansicht sollte vielleicht besser nicht von Suchmaschinen indiziert werden, da sie ohne den allgemeinen Kontext von »Unser täglich Spam« möglicherweise ein bisschen gefährlich ist. Das ist zum Glück ein Problem, das sich sehr einfach lösen lässt – denn die meist schlampig hingehackten Harvester der Spammer werden sich ganz sicher nicht an Regeln in einer robots.txt
halten, aber die Bots jeder seriösen Suchmaschine halten sich selbstverständlich daran.
Dies war die einzige Seite mit externen Code in einem IFRAME
, dem ich nicht restlos vertrauen kann. Nach einem kurzen Überfliegen der darin verbauten JavaScript-Basteleien bin ich allerdings ein kleines bisschen beruhigter – das ist Standard-Code, der Inhalte in einem zunächst unsichtbaren weiteren IFRAME
lädt, um diesen dann sichtbar zu machen.
Aber das alles ist noch lange kein Grund, sich zurückzulehnen, denn dafür ist so eine Warnung doch deutlich zu ernst. Das, worauf ich am wenigsten Lust habe, ist es, zum Helfershelfer für die organisierte Kriminalität im Internet zu werden.
Und deshalb hielt ich noch ein bisschen mehr Analyse für erforderlich.
Natürlich habe ich mir zuerst den HTML-Quelltext verschiedener Blogseiten angeschaut, ohne etwas Verdächtiges zu bemerken. Angesichts einer angeblich »infizierten« Seite in einer so großen Website ist das allerdings wie die Suche nach der Nadel im Heuhaufen.
Die zweite Sache, die ich untersucht habe, ist das Upload-Verzeichnis von WordPress. Es gab in der Vergangenheit immer wieder einmal Sicherheitsprobleme, die einen Upload ermöglichten, und ein solcher Upload kann leicht von außen verlinkt werden, um anderen Leuten Malware unterzujubeln. Ein grep -R -i iframe
brachte allerdings keine einzige Datei zutage, die ein IFRAME
enthielt. Und weil ich gerade dabei war, habe ich das gleiche vorsichtshalber im Theme-Verzeichnis wiederholt – mit dem gleichen Ergebnis. Schließlich habe ich mich mit einem find . -mtime -8 | grep -v supercache
davon überzeugt, dass es in den letzten acht Tagen nicht zu einer auffälligen Modifikation von Dateien der WordPress-Installation kam. Sehr beruhigend, dass die WordPress-Installation vermutlich unbeschädigt ist und dass kein bislang wenig bekanntes Sicherheitsloch ausgebeutet wurde.
Aber es gibt natürlich noch mehr Angriffspunkte.
Bei einem wirklich grimmig vorgetragenen Angriff könnte sich ein Angreifer einen administrativen Zugang zum Serverrechner beschaffen und direkt den Webserver oder den PHP-Interpreter angreifen. Zum Beispiel könnte er dafür sorgen, dass Fehlerseiten (wie der 404er, File not found) durch eigene Seiten ersetzt werden. Also war ein kurzer Blick in die Konfiguration des Webservers nötig, um diese Quelle auszuschließen. Ein weiterer Angriffspunkt ist die Konfiguration des PHP-Interpreters. Hier könnten etwa die Einstellungen auto_preprend_file
und auto_append_file
manipuliert werden, um an jede ausgelieferte PHP-Seite Inhalte anzuhängen. Auch das war zum Glück nicht der Fall, denn sonst hätte ich jetzt viel damit zu tun, einen erfolgreichen Angriff zu analysieren und die ausgebeutete Lücke zu schließen.
Da es sich mit hoher Wahrscheinlichkeit nicht um eine hochgeladene Datei, nicht um eine beschädigte WordPress-Installation und nicht um eine Manipulation der Konfiguration des Webservers handelt, muss der fragliche Code also in einem der Postings zu finden sein – und diese liegen in einer MySQL-Datenbank.
Also ist zu guter Letzt eine kleine SQL-Query fällig, um einmal einen Blick auf die Beiträge zu werfen, die das Wort IFRAME
enthalten. Erstmal ein Überblick, wie viele es wohl sein werden:
mysql> SELECT COUNT(*) FROM wp_posts WHERE post_content LIKE ’%iframe%’;
Zu meinem Glück waren es nur 34. (Wer das nicht weiß: Ein Stringvergleich mit LIKE
in der MySQL ist case-insensitiv. Alles andere wäre für einen Mustervergleich auch eher unpraktisch, und wo schon SQL niemals unpraktisch sein wollte, setzen die Standardabweichungen des MySQL-RDBMS noch einen drauf²…)
Und auf gehts in die Handarbeit! Das sind genau die Dinge… 🙁
Nach der Durchsicht von 34 Postings (natürlich nicht im WordPress-Backend, sondern nach Absetzen einer Query in einem guten Editor) bin ich guter Dinge, dass es sich bei der Yandex-Meldung um einen Fehlalarm handelt.
Insgesamt hat mich dieser Mist nicht nur eine Menge Nerven gekostet, sondern auch zweieinhalb Stunden meiner Lebenszeit (das Schreiben dieser Zusammenfassung nicht mitgerechnet), die ich lieber mit angenehmeren oder doch wenigstens konstruktiveren Tätigkeiten verbracht hätte. Was ich nach dieser Erfahrung von Dingen halte, die mir mit der Firmierung Yandex oder Sophos über meinen Weg laufen, kann sich hoffentlich jeder selbst vorstellen.
Haben sie selbst eine derartige Mail erhalten?
Meiner etwas gereizten Schilderung können sie entnehmen, dass Malware-Warnungen für Websites von Seiten Yandex’ zumindest manchmal etwas leichtfertig per unverlangter Mail versendet werden. Sie sind desweiteren für den Menschen, der sie empfängt, vollkommen nutzlos, da sie ihn nicht darin unterstützen, die Quelle des Problemes aufzufinden und das Problem zu beseitigen, ganz so, als sei das nicht die Hauptsache. Dies geht einher mit einem alarmierenden Ton und der Aufforderung, Dienste von Yandex zu benutzen und sich zu diesem Zweck unter Preisgabe persönlicher Daten zu registrieren.
Die gesamte Form dieser Mail ist unseriös und hart an der Schwelle zur klaren Spam.
Ich kann nicht beurteilen, ob solche Warnungen auch für ernsthafte Bedrohungen in gecrackten Websites versendet werden, oder ob es sich um eine reine Spam- und Werbemasche handelt. Ich weiß nur, dass ich persönlich niemals wieder einen Hinweis aus dieser Quelle so ernst nehmen werde, dass ich mir die Dinge sehr genau anschaue. Die Vorstellung, dass auch Menschen solche nichtsnutzigen Hinweise erhalten, die sich nicht selbst zu helfen wissen, widert mich an. Der Firma Sophos lege ich, wenn sie noch einen Rest guten Rufes behalten will, dringend nahe, ihre Firmierung aus derartigen Machenschaften herauszuhalten.
Wenn sie eine solche Warnung von Yandex bekommen haben, bewahren sie erstmal Ruhe und prüfen sie, ob ihre Website auch von anderen Dienstleistern als potentiell gefährlich eingestuft wird. Und wenn nicht, machen sie mit Mails von Yandex genau das gleiche, was ich ab jetzt auch damit mache: Ab in den virtuellen Mülleimer, wo schon die ganze andere Spam liegt. Da ist sie in der richtigen Gesellschaft.
¹Ja, Antivirus-Software ist Schlangenöl. Der Versuch, ein werksmäßig unsicheres Biest wie Microsoft Windows durch Installation zusätzlicher Software abzusichern, wenn diese Software nur Schädlinge findet, die schon ein paar Tage bekannt sind, führt sogar zu einer gefährlichen gefühlten Sicherheit, die geeignet ist, unbedarfte Menschen zur Unvorsicht zu reizen. Es kann für Menschen, die mit Microsoft Windows arbeiten müssen oder wollen, eine Ergänzung sein, es ist aber kein Ersatz für die Benutzung des Gehirnes. Bedrohungen aus dem Internet lassen sich wesentlich effektiver bekämpfen, indem man erstens niemals in eine Spam klickt und zweitens nicht jeder Website die Ausführung von JavaScript und Plugin-Code gestattet und dafür geeignete Hilfsmittel als Browserplugins installiert.
²Hier stand ursprünglich – und das war mein Fehler – das der LIKE-Operator standardmäßig caseinsensitiv ist. Mein Kommentator Thomas hat mich auf diesen Fehler hingewiesen, den ich dann korrigiert habe.
Pingback: Yandex Search found malware on your website spam.tamagothi.de « Unser täglich Spam
Danke!! Hat einiges an Arbeit erspart und ich kann meinen Kunden zu dieser Yandexmail nun einen schönen Link schicken und muss mir nicht die Ohren blutig telefonieren!!
Wenn du mal Bock hast nen Buch zu schreiben, meld dich denn neben dem IT Gerödel hab ich auch einen kleinen Verlag der KEIN DKZV ist und die Autoren – wenn denn die Bücher verkauft werden können – sogar bezahlt!
Nur der Ordnung halber. SQL wollte tatsächlich nie unpraktisch sein, sehr wohl aber exakt. Daher gilt bei ANSI-SQL String-Vergleichen case-sensivity. Es ist eher MySQL, das hier auf den Standard pfeift, bzw. laut Wikipedia:
»Another criticism is that SQL implementations are incompatible between vendors. In particular date and time syntax, string concatenation, NULLs, and comparison case sensitivity vary from vendor to vendor. A particular exception is PostgreSQL, which strives for compliance«
Cheers!
Tom
Oops, ich hab gerade mal kurz den Standard nachgeschlagen, und ja, es stimmt. Auch der LIKE ist casesensitiv.
Zu viel Umgang mit MySQL versaut einen. 😀
Viel hilfreicher ist, wenn das beschriebene Yandex-Mail mit diesem Satz daherkommt (sonst aber it identischem Inhalt):
The number of potentially harmful pages is 0.
Da spart man sich dann wenigstens die langwierige Suche 🙂
Hi,
ich habe die Mail heute auch bekommen aber es war tatsächlich ein »böses« iFrame auf einer von mir betreuten Seite zu finden (und Google hatte das in seinen Webmaster-Tools auch noch nicht detektiert).
Aber wirklich hilfreich ist die Mail von yandex trotzdem nicht.
Ciao!
Stefan