XSS-Sicherheitslücke: 60% der WebSites betroffen
Sonntag, 21. September 2008, 23:00 Uhr | Autor: ich
Durch Zufall bin ich auf einer eigentlich vertrauenswürdigen WebSite auf ein XSS-Problem gestoßen, woraufhin ich mal einen kleinen Test gemacht habe.
Ich habe mir per Suchmaschine 200 WebSites rausgesucht, wobei ich einfach nur nach den Suchseiten der WebSites gesucht habe, was eher zu zufälligen Suchergebnissen führt. Ich habe also nicht nach speziellen Scripten von CMS, Foren, Blogs, etc. gesucht, bei denen man bereits weiß das sie anfällig für XSS-Angriffe sind.
Auf 60% der untersuchten WebSites habe ich eine XSS-Lücke gefunden. Darunter sind Elektronikkonzerne, TV-Sender, Lexika, Buchverlage, Preisvergleiche, Portale von Bund und Ländern, Krankenhäuser, Social Networks, Universitäten, WebHoster, Vereine, Versicherungen, Shops, politische Parteien, etc., etc., also die ganze Palette an WebSites die es gibt. Und wenn ich “Elektronikkonzerne” und “TV-Sender” schreibe dann meine ich wirklich sehr sehr bekannte Unternehmen. Diese 60% bedeuten aber nicht das die restlichen 40% sicher sind, sondern nur das ich dort keine XSS-Lücke gefunden habe.
82,5% der XSS-Lücken fand ich in der Suchfunktion der WebSite. Auf den WebSites die eine Suchfunktion einer Suchmaschine (meist Google) benutzen fand ich die Lücke auf anderen Seiten. Suchmaschinen die entsprechende Dienste für fremde WebSites anbieten wissen wie man Usereingaben korrekt filtert. Wenn die XSS-Lücke nicht in der Suchfunktion zu finden war dann fand ich sie in dem Formular für die Registrierung zur Nutzung der WebSite oder des Newsletters, im Kontaktformular oder im Formular zur Übermittlung eines Freischaltcodes, etc., etc. Jedes Formular, also jede Seite die eine Usereingabe annimmt und verarbeitet, ist für einen XSS-Angriff geeignet.
XSS? Auf Wikipedia wird dies gut erklärt.
Cross-Site Scripting (XSS) bezeichnet das Ausnutzen einer Computersicherheitslücke in Webanwendungen, indem Informationen aus einem Kontext, in dem sie nicht vertrauenswürdig sind, in einen anderen Kontext eingefügt werden, in dem sie als vertrauenswürdig eingestuft werden. Aus diesem vertrauenswürdigen Kontext kann dann ein Angriff gestartet werden.
Ziel ist es meist, an sensible Daten des Benutzers zu gelangen, um beispielsweise seine Benutzerkonten zu übernehmen (Identitätsdiebstahl).
…
Meist werden für diese Angriffsart aufgrund ihrer weiten Verbreitung Script-Sprachen – insbesondere JavaScript – genutzt.
(Quelle: Wikipedia)
Im Blog von Erich Kachel findet man auch einen sehr guten Artikel zum XSS-Problem.
JavaScript ermöglicht unter Anderem:
- das Ändern der gesamten Seitenstruktur,
- das Einbinden zusätzlichen JavaScript-Codes,
- das Erzeugen beliebiger HTML-Elemente,
- das Umleiten von Formularen und Links,
- das Auslesen von Authentifizierungs-Daten,
- das Senden und Empfangen von Daten und
- das Auslesen der Tastenanschläge.
(Quelle: erich-kachel.de)
Ich hoffe das aus dieser Liste klar wird wie problematisch eine XSS-Lücke sein kann!
Die 120 WebSites werde ich anschreiben, mal schauen ob und wie sie reagieren. Ich höre jetzt schon die Verantwortliche: “An den Haaren herbeigezogen!”, “Kein wirkliches Sicherheitsproblem!”, “Identitätsdiebstahl!? Unsinn!”. Wenn die Mails raus sind werde ich eine Weile abwarten, die WebSites noch einmal prüfen und dann über die Reaktionen oder auch das Fehlen dieser, schreiben. Die die dann weiterhin das XSS-Problem ignorieren können sicher sein das sie von mir genannt werden.
Ich bin, wie so oft, sehr erstaunt über die Ignoranz der Verantwortlichen. Das XSS-Problem ist nicht neu, es gibt viele viele Artikel zu dem Problem. Wie kann es sein das mindestens 60% der WebSites Sicherheitslücken aufweisen? Die Firmen geben Millionen für Reklame aus, machen PR ohne Ende, aber in die Sicherheit der eigenen WebSite wird nicht investiert. Am Ende trifft es den unerfahrenen User, deren Bankkonto geplündert und deren virtuelle Identität für kriminelle Handlungen missbraucht wird.







Montag, 22. September 2008, 0:16 Uhr
Hallo,
betrachte es doch mal aus einem anderen Blickwinkel. Das was Du als “Ignoranz der Verantwortlichen” bezeichnest, ist in den Augen dieser lediglich “zusätzlicher unbezahlter Aufwand”. Die Erkenntnis das hier eine gewisse grundsätzliche Verantwortlichkeit sich in barer Münze auszahlen könnte, bzw. vom Konsumenten eigentlich erwartet wird, ist doch eher die Ausnahme als die Regel.
Nichts desto trotz bin ich auf das Ergebnis gespannt
Gruß
Montag, 22. September 2008, 8:58 Uhr
Warum unbezahlt? Es gibt gewisse Standards, auch was WebCoding angeht. Wenn ich ein Angebot für die Erstellung einer WebSite abgebe dann ist darin auch der Sicherheitsaspekt mit abgedeckt.
SQL-Injections, XSS-Probleme oder Logins per ‘ OR ’1′=’1 wären mir einfach höchst peinlich, das wäre die schlimmste Negativwerbung die ich mir denken kann.
Die Ignoranz der Verantwortlichen hat, meiner Meinung nach, eher etwas mit Unwissenheit und Inkompetenz zutun.
Montag, 22. September 2008, 11:55 Uhr
Auch wenn ich dir auf der Basis meines Hintergrundes durchaus zustimme bitte ich dich zu bedenken, dass Du hier von deinen persönlichen Standards sprichst. Diese scheinen mit unseren/meinem Anspruch durchaus deckungsgleich sein, aber sie sind eben kein klar definierter Standard. Ich denke das ist das Problem. Woran soll sich wer, wie wodurch orientieren?
Vor gar nicht so langer Zeit habe ich allein dadurch eine äußerst hitzige Diskussion ausgelöst, indem ich mich erdreistete zu fragen wie viel Code denn nun ein “durchschnittlicher” Programmierer pro Tag so abliefern müsste. Ich denke das genau das den Kern des ganzen Problems darstellt. Woher soll z.B. ich als Kaufmann wissen wie viel Zeit jemand für qualitativ hochwertige Arbeit auf diesem Gebiet braucht? Auf der Basis von was soll ich beurteilen können, dass ein Programmierer (egal auf welchem Spezialgebiet) seine Arbeit wirklich ordentlich gemacht hat, bevor ein Schaden auftritt?
Immerhin gibt es auf diesem Gebiet (meinem Kenntnisstand nach) nicht einmal eine wie auch immer geartete Form der REFA Erfassung. Von qualitativen Differenzierungen einmal ganz abgesehen.
Es ist eben alles sehr komplex…
Montag, 22. September 2008, 16:05 Uhr
ich denke es wird zeit daß der gesetzgeber entsprechende gesetze erläßt. eine site hat bestimmten sicherheitsanforderungen zu genügen, fertig. ein unternehmen kann sich ja auch nicht mit kostengründen rausreden wenn es darum geht bei einem fahrstuhl die bauvorschriften einzuhalten, und kann sich auch nicht mit unwissenheit rausreden. die probleme sind bekannt und genügend dokumentiert. man sollte auch als unternehmer seinen webdesigner verklagen können wenn der eklatante sicherheitsmängel von vorneherein in eine site einbaut. klingt alles biestig, ich weiß, aber dann nennt mich halt ein biest. das internet ist nun mal noch jung, ist in mancher hinsicht immer noch wilder westen, das sollte nicht vergessen werden bei der ganzen diskussion.
Montag, 22. September 2008, 18:24 Uhr
@Michael:
Es mag sein das ich hier meinen persönlichen Standard ansetze, aber es kann doch nicht sein das Script Kiddies ohne wirklich zu verstehen was sie tun, eine WebSite auseinandernehmen können und dies nur weil der Entwickler sich nicht um die Sicherheit kümmert?!
Und zu REFA, ich glaube nicht das man Programmierleistung in Zeichen pro Stunde abrechnen kann. :O) Je nach Aufgabe kann der Aufwand enorm sein, ohne das wirklich, messbar, viel Code getippt wurde. Da es beim Programmieren nicht auf die Quantität sondern auf die Qualität ankommt, kann es durchaus vorkommen das jemand den ganzen Tag an relativ wenig Quellcode gearbeitet hat, aber der ist dann so genial, das andere Entwickler ein Vielfaches an Code abliefern müssen, um ähnliche Funktionen nachzubilden.
Montag, 22. September 2008, 18:52 Uhr
@marianne:
Den Gesetzgeber hätte ich jetzt eher nicht so gern mit im Boot, dann kommt da so etwas wie der Hackerparagraph bei raus. Diese Sesselpfurzer wissen noch nicht einmal was ein Browser ist: “Kinderreporter: Politiker im Internet” :O)
Montag, 22. September 2008, 21:06 Uhr
@ich:
“…und dies nur weil der Entwickler sich nicht um die Sicherheit kümmert?!”
Wir hatten letztens erst ein (ich nenne es mal Gespräch) mit einem solchen Entwickler. Die Einstellung die der vertrat war echt erschreckend. Wie gesagt, offene Tore, offene Tore
“Und zu REFA,…”
Natürlich! Ich wollte mit der Äußerung ja genau diese Diskussion losbrechen. Ich bin nämlich davon überzeugt das wir solche “Richtlinien” über kurz oder lang wirklich brauchen werden. Vielleicht so eine Art Raster, nach “Zeitaufwand” und “Komplexität”? Oder besser noch eine Achse in die Tiefe, für etwas wie “künstlerische Kreativität”? Allein mit Letzterem werden Programmierer ja auch nicht gerade selten komplett allein gelassen. Frei nach dem Motto:
“Machen Sie mal, dass das nett aussieht, gut funktioniert und nicht so teuer wird.”
Ich denke da muss noch viel Basisarbeit geleistet werden. Auf Verdi und Co, sollte man sich besser nicht verlassen. Wie gesagt ich bin gespannt was die Betroffenen in diesem Fall unternehmen (bzw. ob überhaupt etwas merkliches passiert)
Dienstag, 23. September 2008, 8:03 Uhr
Allgemein gültige Arbeitszeit-Standards für Programmierleistungen festzulegen dürfte (fast) unmöglich sein.
Nur ein Beispiel. Kontaktformular mit Adresse des WebSite-Besitzers, alles möglich, aber nichts muss:
Wenn ich ein Kontaktformular für einen Kunden machen soll, dann versuche ich im Vorfeld schon zu klären was gewünscht wird… :O) Tja, was soll ich sagen, da kommt dann oft das von dir erwähnte “Machen Sie mal, dass das nett aussieht, gut funktioniert und nicht so teuer wird.”
Der Auftraggeber will sich i.d.R. nicht mit solchen Details auseinandersetzen und da es unzählige Wege zum funktionierenden Formular gibt kann die Ausführung zwischen 30 Minuten und mehreren Stunden benötigen.
Auftraggeber wissen nicht was sie wollen, sie wissen nur: “…nett aussieht, gut funktioniert und nicht so teuer wird.”
Dienstag, 23. September 2008, 15:34 Uhr
Hey. Es hat ja keiner gesagt das einfach wird, gelle? Aber so wie Du das ja oben schon gezeigt hast, sollte man auf jeden Fall versuchen bestimmte Tätigkeiten/wiederkehrende Aufgaben so präzise wie irgend möglich zu beschreiben.
Meine Idee dazu war solche Beschreibungen in Form eines öffentlich zugänglichen Wiki’s zu machen. Wobei natürlich darauf zu achten ist, dass nicht “Hinz und Kunz” hier Veränderungen vornehmen können.
Dies könnte dann als Orientierungsmöglichkeit für Auftraggeber und Auftragnehmer dienen. Es würde klar ersichtlich welcher Aufwand tatsächlich hinter den teils simpel klingenden Dingen wie “Kontaktformular Einrichten” steht. Was übrigens eines der markantesten Defizite darstellt, die mir bisher aufgefallen sind.
Ob und in welchem Ausmaß sich die Industrie dann danach richtet, hängt meines Erachtens nach primär damit zusammen wie Fraktionsneutral diese Inhalte er- und dargestellt werden (also weder von Seiten Bitcom oder BDI).
Meine drei Tage Lebenserfahrung sagen mir das ein Markt dann gut und stabil wächst, wenn solcherlei Orientierungsmöglichkeiten wenigstens vorhanden sind (niemand spricht von Perfektion..). Findet sich nichts dergleichen sind die Marktschwankungen kaum mehr vorhersagbar und ergo werden dringend notwendige Investitionen ausbleiben. Was dann in Folge wiederum die Preise kaputt macht. Und mit kaputten Preisen kann man weder ordentliche Arbeitsplätze schaffen, noch eine ordentliche Ausbildungsstruktur finanzieren…
Donnerstag, 25. September 2008, 10:18 Uhr
nochmal zu meiner forderung nach verbindlichen regeln: diese konkrete auflistung mit möglichkeiten ein kontaktformular zu programmieren – da ist für mich als nicht-techniker ganz klar was man wie handhaben kann: alles was sicherheitsrelevant ist, müßte pflicht sein. so wie es auch wie gesagt bei baumaßnahmen ist, der gesetzgeber schreibt bestimmte dinge vor die für die sicherheit unerläßlich sind.
alle weiteren möglichen leistungen müssen in einem angebot verständlich dargestellt werden und der kunde muß sich entscheiden was davon er haben will, auch hier der vergleich mit dem handwerker: wenn ich mir ein neues bad einbauen lasse dann muß ich ja auch die einzelnen punkte auswählen. der satz “machen sie mal, soll nett aussehen” geht ja mal gar nicht! würde ich mir als programmierer einfach nicht bieten lassen! wenn die leute einfach zu faul sind sich das erklären zu lassen, würde ich mit dem handwerker-vergleich argumentieren, oder auch meinetwegen mit dem kauf eines neuen autos – man stelle sich vor jemand geht zum autohändler und sagt: “es soll fahren.”
ich finde nach wie vor daß gesetze unerläßlich sind, natürlich müssen sie, wie alle gesetze die solche dinge betreffen, mit technischer beratung stattfinden.
Donnerstag, 25. September 2008, 14:57 Uhr
@marianne:
Wie “ich” sicherlich längst festgestellt hat, vertrete ich persönlich auf diesem Gebiet eine recht deutliche Position. Ich hab das hier mal definiert: http://www.ciez.de/ciez-default/autor_mk_1.html
Ich lege jedoch Wert darauf, dass ich mich damit auf all die Personen bezog, die hier ihr elendes verantwortungsloses Unwesen treiben. Z.B. die Leute die o.g. Sicherheitslücken einfach nicht wahrnehmen, bzw. selbst wenn, sich kaum mehr die Mühe machen sie zu beheben oder wenigstens klar und deutlich auf deren Existenz hinzuweisen.
Die Problematik auf die “ich” in Bezug auf den § 202c StGB hinwies, zeigt auch nur einmal mehr auf, wie wenig der Gesetzgeber die gegebene Technik verstanden hat. Denn hierin untersagt er Entwicklern und Firmen die Anwendung von Programmen und Geräten die dringend notwendig sind um Systeme sicher einigermaßen zu machen. Zwar wird im Gesetzestext von “unbefugt” gesprochen um zu differenzieren und klarzustellen. Doch gleichzeitig wird auch die Herstellung und Beschaffung von etwas “generell” untersagt, was die o.g. Entwickler dringend benötigen um ihre Arbeit, in dem von dir genannten Sinn, überhaupt erst ordentlich erledigen zu können. Dies schafft das Gegenteil von dem was es bewirken sollte.
Um bei dieser Art der Vergleiche zu bleiben stellen wir uns einen spezialisierten Schlosser vor, der als Selbstständiger einen Schlüsseldienst betreibt. Du rufst ihn an und bittest ihn deine Wohnungstür zu öffnen, weil Du deinen Schlüssel verloren hast (oder weil dir die Handtasche gestohlen wurde). Leider kann er dir laut besagte Auswirkungen des § 202c nicht helfen. Denn er darf weder das hier notwendige Spezialwerkzeug besitzen, es sich beschaffen und natürlich schon gar nicht ohne vertraglich zugesichertem “Sicherheitsnetz” anwenden. Nun ja. Er könnte die Tür natürlich eintreten. Aber dazu brauchst Du eine andere Sorte Spezialisten
Und derweil müssten wir sogar die Herstellung von Bohrmaschinen verbieten, denn mit diesen kann man ja auch Zylinder ausbohren. Böse, böse und noch mal böse!
Die Regeln auf diesem Gebiet müssen von Leuten definiert werden die A) etwas davon verstehen, B) sowohl von Politik als auch von den Wirtschaftsverbänden unabhängig sind und C) sich der Verantwortung und der Signalwirkung bewusst sind, die damit einhergeht…
Dienstag, 30. September 2008, 12:30 Uhr
Hallo Michael S.,
ich bin sehr gespannt, wie diese Aktion weiter geht. Zusätzlich zu den von Dir genannten Seitenbetreiber machen mir Sorgen: Tutorials, Foren und auch Bücher die die Aspekte der Sicherheit vollkommen ausblenden, nur um die Codebeispiele schlank und “sexy” zu halten. Wenn Programmierwissen auf diese Weise verbreitet wird, braucht man sich über die Erzeugnisse nicht wundern…