Werbe-Popup: Wie kommt der Trojaner ins WordPress?

Wer seine Twitter-Shares zählen wollte, griff auf ein Script zurück – auf newsharecounts.s3-us-west-2.amazonaws.com/nsc.js. Aber was passiert, wenn ein Script in die falschen Hände fällt? Ein Werbe-Popup übernimmt die Seite still und leise.

WordPress-Plugins – wenn der Support dahinschwindet

Irgendwann ist das Script in die falschen Hände geraten. Das Script begann mit einem ausgesprochen verdächtigen

eval(function(p,a,c,k,e,r)

und ein paar Wochen später

/*! NewShareCounts js (twitter share counts) */
var _0x4501=["\x65\x78\x70\x69\x72\x65\x73"

und greift in die History des Browsers ein.

Die Folge ist ein aufpoppendes Gewinnspiel, das bei einem Klick auf den Zurück-Button der Seite eingreift, um ein Gewinnspiel einzuspielen, und sich nicht schließen lässt.

Pop-ip-Werbung

Das Script fanden wir in einer WordPress-Seite nach Hinweisen von aufmerksamen Benutzern. Das Plugin war längst gelöscht, aber es war wohl vor langer Zeit installiert worden, als das Script noch per Handarbeit in die header.php eingesetzt werden musste. Das Script blieb, weil es niemand mehr zuordnen konnte.

<script type="text/javascript" src="//newsharecounts.s3-us-west-2.amazonaws.com/nsc.js"></script>
<script type="text/javascript">window.newShareCountsAuto="smart";</script>

Mißtraue externen Scripten mit eval

Ein Blick in das Script auf http://newsharecounts.s3-us-west-2.amazonaws.com/nsc.js sagt alles. Javascript eval() ist eine gefährliche Funktion, die den übergebenen String als Javascript-Code ausführt und ist ein typisches Anzeichen für einen böswilligen Eingriff. Besonders hinterhältig ist der Rückgriff auf den Zurück-Button (die Browser-History) nur von bestimmten Seiten aus, denn so bekommen der Administrator und die Autoren der Webseite das lauernde Popup kaum zu Gesicht.

eval ist nicht von Haus aus böse, aber der übergebene Sting ist gut geeignet, die Anweisungen zu verschleiern.

eval('al' + 'er' + 't(\'' + 'hi there!' + '\')');

Script löschen und gut ist – das Werbe-Popup ist weg. Nicht gut ist das Vertrauen in Plugins und Scripte, die heute gute Dienste leisten, und morgen zu einem einträglichen Geschäft für bösartige Werbung werden.

Nachdem wir den Virus entdeckt hatten, hat es noch gut einen Monat überlebt. Zwischenzeitlich war das Script verschwunden, dann kam es mit neuen verschleierten Anweisungen zurück. Den Beitrag lasse ich als Muster einer Injection stehen, denn es ist nicht immer einfach, derartige Eindringlinge zu entdecken.

Das Risiko externer Scripte

Unzählige Webseiten greifen auf die weite Welt externer Javascripts zurück, allen voran Internet-Auftritte mit WordPress-Plugins. Externe Script erleichtern dem Besucher die Navigation, bewegen Slideshows und blenden Effekte ein.

Scripts von Dritten können aber auch Lauscher installieren, das Benutzerverhalten tracken und selber wiederum auf weitere externe Script zugreifen.

Übel wird es, wenn sich externe Skripte still und leise ändern, weil ein Angreifer Zugriff auf ein externes Script bekommt und damit alle Seiten verseucht, die auf das Script zugreifen. Natürlich will niemand auf die komfortablen Skripte der Open Source-Welt verzichten, aber eine regelmäßige Prüfung ist das Mindeste, das wir für die Sicherheit unserer Webseiten durchführen sollten.

Mehr zu Window History und pushState

Externe Quellen

  • Subresource Integrity eine Sicherheitsmaßnahme, mit deren Hilfe der Browser sicherstellt, dass die Ressource von einem CDN (Content Delivery Network) ohne unerwartete Manipulation geliefert wird.
  • CSS Tricks Was man wissen sollte und potentielle Gefahren von Third Party Scripts.
2024-02-12 SITEMAP BLOG