Potentiell alle 11 Millionen Nutzerseiten unseres Homepage-Baukastens fehlerhaft als Malware markier

BLochmann
bearbeitet Dezember 2016 in Malware


Hallo sehr geehrte Bitdefender-Kollegen,


wir haben derzeit ein massives Problem bei unserem Projekt homepage-baukasten.de.


Wir hosten hier mehr als 11 Millionen Nutzerseiten weltweit und haben heute die ersten Beschwerden von Kunden erhalten, die beim Aufruf Ihrer Webseiten (gehostet unter *.de.tl und bei Premium-Nutzern auf ihrer eigenen TLD) sowie auf homepage-baukasten.de direkt folgende Meldung erhalten haben:


"Bitdefender hat diese Seite gesperrt.


Die Seite die sie aufzurufen versuchen, enthält:


JS:Trojan.Cryxos.109"


Das war ein klarer false positive (kann passieren, klar). Schuld war dieser Code, der unseren in UTC ausgegebenen Unix Timestamp (Integer) via Javascript in die Zeitzone des Clients "übersetzt", da unsere Webseiten weltweit aus verschiedensten Zeitzonen aufgerufen werden:


<****** type="text/javascript">
var dateTimeOffset = new Date().getTimezoneOffset();

(function () {
var onload = function () {
var elements = [];

if (document.getElementsByClassName) {
elements
= document.getElementsByClassName("localtime");
} else {
var re = new RegExp('(^| )localtime( |$)');
var els = document.getElementsByTagName("*");
for (var i=0,j=els.length; i<j; i++) {
if (re.test(els[i].className))
elements
.push(els[i]);
}
}

for (var i = 0; i < elements.length; i++) {
var timeLocal = new Date(parseInt(elements[i].getAttribute("data-timestamp")));
var hour = timeLocal.getHours();
var ap = "am";
if (hour > 11) {
ap
= "pm";
}
else if (hour > 12) {
hour
= hour - 12;
}

var string = elements[i].getAttribute("data-template");
string
= string.replace("[Y]", timeLocal.getFullYear());
string
= string.replace("[m]", ('0' + (timeLocal.getMonth() + 1)).slice(-2));
string
= string.replace("[d]", ('0' + timeLocal.getDate()).slice(-2));
string
= string.replace("[H]", ('0' + timeLocal.getHours()).slice(-2));
string
= string.replace("[g]", ('0' + hour).slice(-2));
string
= string.replace("[i]", ('0' + timeLocal.getMinutes()).slice(-2));
string
= string.replace("[s]", ('0' + timeLocal.getSeconds()).slice(-2));
string
= string.replace("[a]", ap);
elements
[i].childNodes[0].nodeValue = string;
}
};

if (window.addEventListener)
window
.addEventListener("DOMContentLoaded", onload);
else if (window.attachEvent)
window
.attachEvent("onload", onload);
})();
</******>


 


Wir haben gerade eben "elements" mit "elementsArray" ersetzt, Mehrzahl ist ja eh doof.


Anschließend verschwand der Fehler auf homepage-baukasten.de instant.


Auf beinahe allen Benutzerseiten kommt kein Fehler mehr, _außer_ auf den Benutzerseiten, auf denen zuvor der oben genannte Fehler "Bitdefender hat diese Seite gesperrt. Die Seite die sie aufzurufen versuchen, enthält: JS:Trojan.Cryxos.109" angezeigt wurde.


Dort findet man nun eine neue Warnung vor, die wie folgt lautet:


"Bitdefender hat diese Seite gesperrt.


Diese Seite wurde vom Bitdefender-Malware-Filter blockiert."


Wir haben hier festgestellt, dass diese Meldung unabhängig vom ausgelieferten Content erscheint, selbst bei einer leeren HTML-Seite kommt dieser Fehler (im Gegensatz zur vorherigen Warnung vor dem angeblichen "JS:Trojan.Cryxos.109".


Nun haben wir selbstverständlich recherchiert und die Webseite http://www.bitdefender.com/submit/ gefunden, bei der man false positives submitten kann.


Wir haben alle Webseiten submitted, dessen Inhaber ein Ticket an unseren Support geschickt haben.


Bei einem stichprobenartigen Eingabe von zufällig ausgewählten Webseiten unserer Nutzer haben rund 5% der Seiten den oben genannten Fehler von Bitdefender geworfen.


Das ist ein Problem, denn wir haben nur schwer die Möglichkeit alle 11 Millionen Benutzerseiten auf einem PC mit Bitdefender aufzurufen und anschließend jede einzelne (das werden wohl tausende [Sub-]Domains sein) als false positive zu melden.


Selbst wenn ihr *.de.tl (hier findet man unsere nicht-Premium-Nutzer) freischalten würdet sowie alle 7 weiteren Subdomains, die wir anbieten, wären nicht alle Webseiten freigeschalten.


Die Premium-Nutzer unseres Dienstes erhalten eine eigene TLD, auch hier sind ein paar Prozent der Webseiten derzeit von euch blockiert.


Es würde mich freuen, wenn ihr hier eine Problemlösung für diesen false positive parat hättet.


Vielen Dank im Voraus!

Benjamin Lochmann


Geschäftsführer webme GmbH