www.wikidata.de-de.nina.az
Die Sicherheit von Webanwendungen ist ein unabdingbarer Aspekt der Entwicklung von Webanwendungen Mit Hilfe des Ebenenmodells erfolgt eine Aufteilung der einzelnen Teilsegmente an die jeweiligen Verantwortlichen 1 Inhaltsverzeichnis 1 Ebenenmodell 2 Angriffsmethoden 2 1 SQL Injection 2 2 Cross Site Scripting 2 3 Session Hijacking 2 4 Cross Site Request Forgery 2 5 Directory Traversal 2 6 E Mail Injection 2 7 Man in the Middle Angriff 2 8 Man in the Browser 2 9 Denial of Service 2 9 1 Mustererkennung 2 10 Phishing Identitatsdiebstahl 2 10 1 Identitatsprinzip 3 Generelle schutzende Massnahmen 3 1 Data Validation 3 1 1 Whitelisting statt Blacklisting 3 1 2 Behandlung von manipulierten Eingaben 3 1 2 1 Prepared Statements 3 1 2 2 Stored Procedure 3 1 3 Diverse weitere Massnahmen und Hinweise 3 1 3 1 Serverseitig validieren 3 1 3 2 Namen von Formular Variablen validieren 3 1 3 3 Lange bzw Grosse der Eingabedaten begrenzen 3 1 3 4 Abwagung von POST und GET Requests 3 1 3 5 Escape Funktionen 3 2 Minimalitatsprinzip 3 3 URL Weiterleitungen kontrollieren und einschranken 3 3 1 Linkeinschrankung 3 3 2 Weiterleitungshinweis 3 3 3 Referrer Test 3 3 4 Lokale Weiterleitungen einschranken 4 Session Management 4 1 Anforderung an eine SessionID 4 2 Bindung von zusatzlichen Parametern an die Session 4 3 Session Riding 4 3 1 Dialogtracking 4 4 Privilege Escalation 4 5 Hashes 4 6 URL Rewriting 4 7 Logout erzwingen 5 Benutzer 5 1 Umgang mit Benutzerkennungen 5 2 Sichere Passworter 5 3 Einsatz eines SSL TLS HTTPS Protokolls 6 Hilfsprogramme fur die Sicherheit von Web Anwendungen 6 1 Web Shields 6 2 Web Scanner 7 Strafrechtliche Aspekte 8 Siehe auch 9 Literatur 10 EinzelnachweiseEbenenmodell Bearbeiten Hauptartikel Ebenenmodell Informatik Ein Ebenenmodell dient dazu die Zustandigkeiten fur die einzelnen Teilaufgaben bei der Sicherheitskonzeption und Realisierung von Webanwendungen zu ordnen Ausgangspunkt ist eine Unterteilung in funf Ebenen Der Semantik Logik Implementierung Technik des Systems sowie der Ebene Netzwerk und Host Angriffsmethoden BearbeitenEs gibt unzahlige Moglichkeiten Schwachstellen in einer Webanwendung zu finden und diese auszunutzen Im Folgenden findet sich eine Beschreibung allgemein bekannter und oft benutzter Angriffsmoglichkeiten im Zusammenhang mit Webanwendungen SQL Injection Bearbeiten Hauptartikel SQL Injection Bei einer SQL Injection sendet der Angreifer Verbindungsanfragen an den Webserver wobei die Anfrage Parameter mit SQL Steuerzeichen versehen sind Fangt die Webanwendung diese Steuerzeichen nicht ab sondern sendet sie als Teil einer SQL Abfrage an die Datenbank kann der Angreifer fur ihn auf herkommlichem Weg nicht zugangliche Daten entweder auslesen oder verandern Cross Site Scripting Bearbeiten Hauptartikel Cross Site Scripting Hinter der Bezeichnung Cross Site Scripting XSS verbergen sich zwei manchmal wird noch ein dritter Typ unterschieden grundsatzlich verschiedene Angriffe Beim clientseitigen XSS schleust der Angreifer HTML Steuerzeichen und Code einer clientseitigen Skriptsprache wie z B JavaScript in eine Webseite ein die in dem Webbrowser des Opfers ausgefuhrt wird Dieser Angriff nutzt dabei Sicherheitslucken bei der lokalen Ausfuhrung der Skripte aus oder leitet eine Cross Site Request Forgery ein Unter serverseitigem XSS versteht man das Einschleusen von manipulierten Informationen in eine auf dem Webserver ausgefuhrte Scriptsprache so dass diese beispielsweise bei einem dynamisch generierten include eine vom Programmierer nicht vorgesehene Datei ggf sogar von einem anderen Server ausfuhrt Session Hijacking Bearbeiten Hauptartikel Session Hijacking Da HTTP ein verbindungsloses Protokoll ist muss die Webanwendung selbst die Identifikation eines Benutzers feststellen Dies geschieht anhand einer Session ID die als Basic Digest Authentication Cookie URL Rewriting oder HTTP Form Parameter GET oder POST jedem Request mitgegeben wird Beim Session Hijacking versucht der Angreifer Kenntnis von der Session ID des Benutzers zu erlangen um dann die Identitat des Opfers vorzutauschen und mit dessen Rechten auf die Webanwendung zuzugreifen Cross Site Request Forgery Bearbeiten Hauptartikel Cross Site Request Forgery Cross Site Request Forgery setzen eine bestehende Session zwischen dem Benutzer und der Webanwendung voraus Dabei versucht der Angreifer uber verschiedene Techniken ggf XSS den Benutzer oder uber ein clientseitiges Script auch direkt den Browser zum Aufruf einer manipulierten URL zu bewegen Anders als beim Session Hijacking erlangt der Angreifer selbst aber keine Kenntnis von der Session ID da der Angriff ausschliesslich im Browser des Benutzers stattfindet Directory Traversal Bearbeiten Hauptartikel Directory Traversal Bei einem Directory Traversal Angriff nutzt der Angreifer die fehlende Prufung der Webanwendung auf manipulierte Pfadangaben aus Erwartet die Webanwendung beispielsweise einen Parameter wie item datei1 html kann dieser ggf mit item Config sys missbraucht werden E Mail Injection Bearbeiten Hauptartikel E Mail Injection Bei einer E Mail Injection fugt der Angreifer in ein Kontaktformular manipulierte Daten ein so dass anstelle der Nachricht an den vom Betreiber der Webanwendung beabsichtigten Empfanger nun beliebige E Mails an beliebige Empfanger gesendet werden Diese Moglichkeit wird meist fur den Versand von Spam missbraucht Man in the Middle Angriff Bearbeiten Hauptartikel Man in the Middle Angriff Bei einem Man in the Middle Angriff MitM zielt der Angreifer darauf ab dass der Benutzer anstatt mit dem Webserver vielmehr direkt mit dem Rechner des Angreifers eine Verbindung aufbaut ohne dies zu bemerken Der In the middle Rechner startet bei jeder Anfrage des Benutzers seinerseits eine Anfrage an den echten Webserver und gibt dessen Antwort an den Benutzer weiter Der Nutzwert besteht fur den Angreifer darin Anfragen an oder Ruckgaben der Webanwendung beliebig manipulieren zu konnen Gegen diese Art von Angriff bietet nur die Verschlusselung der Datenubertragung beispielsweise mittels SSL Schutz Dieser Schutz wird aber unwirksam wenn sich der Angreifer ein SSL Zertifikat der betroffenen Webseite verschaffen kann zu dem ein Root Zertifikat im Browser des Opfers installiert ist Man in the Browser Bearbeiten Hauptartikel Man in the Browser Man in the Browser ist eine Sonderform des Man in the middle Angriffs bei der die Darstellung von Webseiten direkt im Browser verandert wird Das Programm kann eigenstandig Transaktionen durchfuhren die vom Nutzer im Normalfall nicht bemerkt werden da der Nutzer sich auf den echten Seiten der Anbieter bewegt korrekt angemeldet ist und die unerwunschten Transaktionen fur den Nutzer wie normale Vorgange angezeigt werden Denial of Service Bearbeiten Hauptartikel Denial of Service Bei einem Denial of Service DoS Angriff versucht der Angreifer dem Webserver durch eine Vielzahl von Verbindungsanfragen den jeweiligen Server lahm zu legen Wird der Angriff gleichzeitig von mehreren ggf mehrere tausend Computern gleichzeitig durchgefuhrt spricht man auch von einem Distributed Denial of Service Angriff DDoS Ein DoS ist nicht auf Webanwendungen beschrankt sondern kann sich gegen jede Art von Server richten Mustererkennung Bearbeiten Grundlegendes Problem jeder Massnahme zur Verhinderung von DoS Angriffen ist die Unterscheidung eines solchen Angriffs von legitimen Zugriffen sowie die gezielte Blockierung des Angreifers ohne legitime Benutzer in Mitleidenschaft zu ziehen Ein automatisierter DoS Angriff kann wirksam dadurch verhindert werden dass der Benutzer nach Erreichen einer festgelegten Toleranzschwelle von erlaubten Wiederholungen aufgefordert wird eine Eingabe zu tatigen die ein Programm nicht liefern kann Wird die Eingabe korrekt gegeben kann davon ausgegangen werden dass kein automatisierter Angriff stattfindet Folgende Verfahren kommen in Frage Captcha Beim Einsatz von Captchas und der Auswahl einer Captcha Bibliothek ist zu beachten dass die Sicherheit dieses Verfahrens mit der maschinellen Nichtlosbarkeit der Aufgabe steht und fallt Fortschritte in der Mustererkennung oder die Entdeckung von Algorithmen konnen diese Art von Schutz mit einem Schlag wertlos machen Ratselfrage Dem Benutzer wird eine Frage gestellt die eine Maschine nicht interpretieren und damit nicht beantworten kann Phishing Identitatsdiebstahl Bearbeiten Hauptartikel Phishing Beim Phishing handelt es sich nicht um eine Sicherheitslucke einer Webanwendung es gehort vielmehr in den Bereich des Social Hacking Hierbei fordert der Angreifer seine potentiellen Opfer meist massenweise per E Mail auf Zugangsdaten wie z B PIN und TAN zum Online Banking auf einer Webseite einzugeben Diese sieht in der Regel ausserlich so aus wie die des Betreibers der Webanwendung unterliegt aber der Kontrolle des Angreifers Nimmt das Opfer diese Falschung nicht wahr und gibt seine Zugangsdaten preis kann der Angreifer diese zu seinen Gunsten verwenden Identitatsprinzip Bearbeiten Hauptartikel Identitatsprinzip Webanwendungen Das Identitatsprinzip ist eine Art Webanwendungen und Websites so zu gestalten und darzustellen dass Benutzer bei einem Phishing Angriff die gefalschte Seite wahrnehmen und sensible Daten nicht angeben Dazu muss aus dem Umgang mit der Website aber auch aus der gesamten Kommunikation mit dem Internetauftritt erkennbar sein dass der Internetdiensteanbieter bestimmte Muster durchgangig einhalt Generelle schutzende Massnahmen BearbeitenData Validation Bearbeiten Die Validierung vor allem von Eingangsdaten input aber auch Ausgabedaten output ist der wichtigste Bestandteil einer sicheren Webanwendung Der Datenfluss ist nicht nur vom Benutzer zur Anwendung und umgekehrt sondern auch zu den verschiedenen Subsystemen und von dort aus in die Ausgabe zu untersuchen Im Idealfall werden alle Input bzw Output Daten von einem zentralen Data Validation Modul d h einem Programmteil zur Prufung der Zulassigkeit von Daten gepruft In PHP lasst sich so etwas mit Funktionen losen Neben den offensichtlichen Eingabedaten in Formular Variablen engl form variable wegen form Formular gibt es eine Reihe weiterer Quellen Alternativ lasst sich Filterung einsetzen Dies ist immer dann angebracht wenn keine Nebenwirkungen zu befurchten sind oder wenn die Art der Datenverwendung gefahrliche Zeichen oder Zeichenketten auf grund ihrer Natur erlauben muss Beispiel Ein Forum in dem uber JavaScript diskutiert wird kann nicht die Eingabe von lt script gt verbieten muss dieses aber als HTML Tag validieren Bei der Filterung ist mit grosser Umsicht vorzugehen denn man lauft permanent Gefahr eine Variante zu ubersehen Whitelisting statt Blacklisting Bearbeiten Sofern der Input klar definierbar ist ist es meist sinnvoller nur bestimmte Eingaben zuzulassen als bestimmte andere Angaben nicht zuzulassen Beim Blacklisting werden die Muster definiert die aus der Eingabe herausgefiltert werden alles andere wird durchgelassen Beim Whitelisting ist es umgekehrt Werte die nicht ausdrucklich erlaubt sind sind verboten Black listing ist dann problematisch wenn als nicht kritisch erkannte Zeichen im Verlaufe der weiteren Verarbeitung zu einem ungewollten Systemverhalten oder auch Fehlern fuhren Werden allerdings problematische Muster vergessen oder nicht erkannt oder kommen neue pro blematische Muster hinzu so werden sie beim Whitelist Ansatz hingegen automa tisch blockiert Beim Blacklist Ansatz werden sie solange durchgelassen bis die Re geln angepasst werden Blacklist oder Whitelist Verfahren konnen nicht nur mit festen Schlus selwortern benutzt werden Auch ein Einsatz mit regularen Ausdrucken kann sinnvoll sein Behandlung von manipulierten Eingaben Bearbeiten Bei der Behandlung von ungultigen Eingaben sollte zwischen nachfolgenden zwei Fallen unterschieden werden Fehleingaben des Benutzers und bewusste Manipulation Im ersten Fall ist in benutzerfreundlicher Weise zu reagieren unter Wahrung des Minimali tatsprinzips Der Benutzer ist auf den Fehler hinzuweisen Im zweiten Fall sollte die Reaktion in geeigneter Weise den Manipulationsversuch abwehren Dann ist zu entscheiden ob eine Filterung erfolgt oder ob die Weiterverar beitung abgelehnt wird Eine erfolgreiche Filterung konnte eine Weiterverarbeitung implizieren Ein sicheres Kriterium fur den Abbruch der Verarbeitung mit einer Fehlermeldung ist immer dann gegeben wenn die Eingabedaten mit bestimmungsgemasser Browserbedienung nicht eintreten konnen wie z B zusatzliche oder fehlende Formular Variablen Das Session Cookie enthalt Zeichen die von der Anwendung nicht vergeben werden oder es entspricht nicht dem definierten Format In HIDDEN SELECT oder CHECKBOX Variablen transportierte Werte wurden verandert oder entsprechen nicht dem Muster welches die Anwendung gesetzt hat Die Quelle der Variablen z B GET POST Cookie stimmt nicht mit der Vorga be der Anwendung uberein Zu den moglichen Reaktionen auf derartige Fehler konnen je nach Situation zahlen Die weitere Verarbeitung ist zu stoppen Es ist zu erwagen statt einer Fehlermel dung eine Reaktion in dieser Weise vorzunehmen Dem Benutzer dem in die sem Fall ein Angriff unterstellt wird wird der korrekte Umgang mit der Einga be vorgetauscht um seinen Angriffsversuch zu unterlaufen und weiteres Suchen nach Schwachstellen zu erschweren So wurde die Antwort auf das manipulierte Absenden eines Kontaktformulars beispielsweise genauso wie im korrekten Fall lauten Vielen Dank fur Ihre Anfrage die wir umgehend bearbeiten werden Es ist zur Hauptseite oder der neutralen Seite die auch bei Zu griffen auf nicht vorhandene Seiten angezeigt wird zuruckzukehren Es ist eine explizite Warnung auszugeben dass ein Angriffsversuch festgestellt worden ist und dass alle Zugriffsversuche protokolliert werden bzw anderweitige Massnahmen ergriffen werden Ob dies allerdings uberhaupt sinnvoll ist muss bei der jeweiligen Anwendung einzeln entschieden werden Zusatzlich bei bestehender Session Der Benutzer ist abzumelden und die Sessi on als ungultig zu erklaren invalidate Nicht korrekt sind diese haufig anzutreffenden Reaktionen ungefilterte Ausgabe der Fehlermeldung insbesondere eine SQL Fehlermeldung liefert u U fur einen Angriff verwertbare Informationen Server Error 500 daraus lasst sich schliessen dass die Anwendung nicht alle Fal le korrekt abfangt Die Anwendung ist momentan wegen Wartungsarbeiten nicht verfugbar gibt dem Angreifer u U einen Anreiz die Anwendung weiter zu untersuchen da er vermutet dass er die Anwendung tatsachlich kurzzeitig lahmgelegt hat Ganzlich abzuraten ist in solchen Fallen von Versuchen fehlerhafte Eingaben zu kor rigieren Derartige Versuche weisen das unnotige Risiko auf doch nicht fehlerfrei zu sein und einen Angriff dadurch uberhaupt erst zu ermoglichen Prepared Statements Bearbeiten Durch Verwendung von Prepared Statements anstatt dynamisch zusammengebauter SQL Anweisungen kann dem Problem der SQL Injection aus dem Weg gegangen wer den Software Entwickler mussen sich im Rahmen des Designs einer Funktion oder hat bzw was die Menge aller moglichen Abfragestrukturen ist die in Abhangigkeit von den Eingabedaten zur Ausfuhrung gelangen konnen Diese Abfragen sind in Form von Pre pared Statements auszuformulieren Dabei konnen mit den Mitteln der Prepared State ments also in der Regel entsprechenden WENN Abfragen und dem Zusammensetzen von Abfragen alle Bedingungen die durch unterschiedliche Eingabedaten zu prufen sind berucksichtigt werden Es ist meist unnotig in die Formulierung der SQL Anweisung zusatzlich eine Dynamik hineinzubringen die nur mit dem Mittel der Dynamic Statements erreichbar ware Stored Procedure Bearbeiten Stored Procedures haben im Hinblick auf ihre Sicherheit gegenuber SQL Injection ahnliche Eigenschaften wie Prepared Statements Auch hier ist zu beachten dass bei Ubergabe von ungepruften unvalidierten Parametern an eine Stored Procedure moglicher proble matischer Eingabedaten nicht automatisch abgefangen wird 2 Diverse weitere Massnahmen und Hinweise Bearbeiten Serverseitig validieren Bearbeiten Alle Eingabedaten sind von der Anwendung auf dem Server auf Zulassigkeit zu uberprufen zu validieren Prufungen auf dem Client Browser z B mittels JavaScript konnen allenfalls zusatzlich aus Grunden der Benutzerfreundlichkeit erfolgen aber niemals um Annahmen uber die Beschaffenheit der Eingabedaten sicherzustellen Prufungen im Browser konnten vom Benutzer ab geschaltet und beliebig manipuliert werden Namen von Formular Variablen validieren Bearbeiten Genauso wie der Wert einer Formular Variablen kann auch ihr Name beliebig manipu liert werden Daher sind auch die Namen von Formular Variablen der Filterung zu unter ziehen Da alle Formular Variablen in der Anwendung bekannt sind ist hier eine einfache Uberprufung der Zeichenketten effektiv Lange bzw Grosse der Eingabedaten begrenzen Bearbeiten Alle Eingabedaten sind auf ihre Grosse zu uberprufen bevor sie verwendet insbeson dere kopiert werden Die genaue Realisierung dieser Prufung ist von der jeweiligen Programmiersprache abhangig Beispiel in PHP if strlen parameter gt 42 return Achtung die PHP Funktionen geben in der Zeichenketten enthaltene Null Bytes direkt als sol che weiter Null Bytes mussen zuvor entfernt werden Abwagung von POST und GET Requests Bearbeiten Die Ausnutzung einer XSS Lucke zum Zwecke des URL Spoofings ist dann am einfachsten durchfuhrbar wenn der manipulierende Code einfach an den Aufruf an gehangt werden kann Ein Session Riding Angriff lasst sich dann in einem IMG Tag verstecken und unbemerkt ausfuhren Ahnliches gilt fur andere Angriffsformen Moglich ist dies immer dann wenn die Anforderung request von der Anwendung als GET Request behandelt wird Verwendet die Anwendung an dieser Stelle jedoch die POST Metho de ist ein Einbau in die URL nicht mehr moglich Es empfiehlt sich daher HTML Forms per POST Methode zu ubertragen so dass im Falle einer vorhandenen XSS Lucke wenigstens eine kleine zusatzliche Hurde gesetzt wird Allerdings abstrahieren viele heutige Frameworks und Komfortfunktionen die Request Methode d h sie liefern die ubergebenen Parameter egal ob diese per GET oder POST geschickt worden sind Selbst dann wenn in der Form ein POST als Request Methode angegeben ist kann ein Angreifer die Daten an die URL hangen und per GET ubertragen da die Anwendung nicht unterscheidet Der Ausschluss von GET ist daher von der Anwendung zu erzwingen oder zumindest vorzuziehen 3 Escape Funktionen Bearbeiten Als Anhaltspunkte sind hier Escape Funktionen verschiedener Programmiersprachen Ausschnitt aufgefuhrt ASP Request Form Request QueryString Request Cookies RangeValidator RegularExpressionValidator Server HTMLEncode Server URLEncode Java class java sql PreparedStatement java net URLEncoder encode Perl CGI autoEscape CGI escapeHTML PHP addslashes quote meta mysql real escape string pg escape string strip tags htmlentities utf8 decode Minimalitatsprinzip Bearbeiten Hauptartikel Minimalitatsprinzip Webanwendungen Beim Minimalitatsprinzip werden so wenige Informationen angegeben wie notig so dass sie fur einen potenziellen Angreifer oder Hacker nur schwer oder gar nicht zuganglich sind um die Verwundbarkeit von Sicherheitslucken einzuschranken Daruber hinausgehende Informationen konnten unnotige Ansatzpunkte fur eine Kompromittierung der Webanwendung liefern URL Weiterleitungen kontrollieren und einschranken Bearbeiten Weiterleitungen sind generell durch geeignete Massnahmen vor Missbrauch zu schutzen Linkeinschrankung Bearbeiten Sind die Links auf die weitergeleitet wird konkret bekannt so ist die Weiterleitung auch nur fur diese zu erlauben Alle anderen Parameter sind abzulehnen Das ist am besten dadurch zu erreichen dass nicht die Ziel Seite selbst als Parameter ubergeben wird sondern ein Index in einer Datenbank die serverseitig gehalten wird und in der alle in Frage kommenden URLs enthalten sind Weiterleitungshinweis Bearbeiten Statt die Umlenkung direkt und fur den Benutzer transparent durchzufuhren ist sie indirekt uber eine Seite zu fuhren die dem Benutzer angezeigt wird Damit kann dieser den Link vor dem aktiven Klick prufen und selbst entscheiden ob er diesem vertraut Beispiel Sie werden auf die folgende externe Webseite weitergeleitet http www example tld angriff foo Aus Sicherheitsgrunden fuhren wir die Weiterleitung nicht automatisch durch Bitte kontrollieren Sie den Link und setzen Sie die Weiterleitung gegebenenfalls durch einen Klick fort Referrer Test Bearbeiten Der Referrer kann als zusatzliches Merkmal beachtet werden Diesem Ansatz liegt die Annahme zugrunde dass eine Anforderung request nur dann legitim ist wenn sie durch einen Klick auf einer zur Anwendung gehorenden Seite ausgelost worden ist Immer dann ist auch der Referrer Header mit der URL dieser Seite belegt Die Anwendung muss also prufen ob der ubergebene Referrer in der Liste der in Frage kommenden URLs vorhanden ist und kann im Positiv Fall davon ausgehen dass es sich um die legitime Verwendung handelt Dabei ist es wichtig die gesamte URL zu vergleichen und nicht nur den Host Anteil denn der so erreichte Schutz kann durch eine XSS Schwachstelle auf derselben Seite ggf auch ausserhalb der Anwendung selbst wieder zunichtegemacht werden Zwar lasst sich der Referrer per JavaScript nicht direkt manipulieren uber den Umweg des Cross Site Scripting ist es dann aber doch moglich Ausserdem ist der Referrer nicht immer verfugbar da ihn manche Contentfilter auf der Client Seite herausfiltern Lokale Weiterleitungen einschranken Bearbeiten Erfolgt die Weiterleitung auf eine Seite derselben Website so ist vor der Ausfuhrung zu prufen dass als Parameter keine URL ubergeben worden ist die auf eine externe Seite fuhrt Am einfachsten werden lokale Weiterleitungen ausschliesslich mit relativen Pfaden durchgefuhrt und der Host Teil d h der Rechnername bzw die Domain statisch hinzugefugt Statt also die Weiterleitung so zu programmieren dass ein vollqualifizierter Link ubergeben werden muss sollte der Parameter lediglich den internen Zielpfad enthalten wobei die Domain statisch hinzugefugt wird Session Management BearbeitenDas Session Management ist eine der problematischsten Stellen fur die Sicherheit von Webanwendungen Fur den Schutz der SessionID sollten daher entsprechend wirksame Massnahmen zur Anwendung kommen 4 Anforderung an eine SessionID Bearbeiten Wird die Erzeugung der SessionID nicht einer ausgereiften API uberlassen sondern selbst implementiert sind bestimmte Anforderungen zu beachten Fur diese Falle sollten folgende Anforderungen berucksichtigt werden Keine Verknupfung mit extern bekannten oder erratbaren Daten Dazu gehoren IP Adresse des Clients Uhrzeit Prozess ID Attribute des Benutzers wie Geburtsdatum oder externe Schlussel wie die E Mail Adresse Hohe Zufalligkeit Randomness Das Erzeugungsmuster darf nicht aus einer Menge von Proben ableitbar sein Die SessionID muss eine ausreichende Lange haben um gegenuber Brute Force Angriffen dem Durchprobieren aller Moglichkeiten zu bestehen Sie sollte ausschliesslich uber sichere Kanale ubertragen werden wenn der Schutzbedarf der Anwendung dies erfordert Die SessionID einer Anwendung deren Schutzbedarf SSL erfordert darf niemals versehentlich uber eine unverschlusselte Verbindung mit ubertragen werden Die Session selbst muss das kurzestmogliche Ablaufdatum haben das fur den jeweiligen Anwendungszweck gerade noch angemessen ist Bindung von zusatzlichen Parametern an die Session Bearbeiten Eine Session kann durch Einbeziehung von zusatzlichen Parametern z B der IP Adresse des Clients als kennzeichnendes Merkmal zusatzlich geschutzt werden sofern die daraus resultierenden Probleme in Kauf genommen werden konnen Als Beispiel hinterlegt die Anwendung bei der Instanziierung der Session die IP Adresse des Clients und uberpruft bei jedem Zugriff ob diese mit der hinterlegten IP Adresse weiterhin ubereinstimmt Ist das nicht der Fall wird die Session invalidiert Nachteilig an diesem Losungsansatz sind deutliche Beschrankungen in Bezug auf mogliche Einsatzumgebungen Die Bindung der IP Adresse an die Session funktioniert nicht oder nur eingeschrankt fur all jene Benutzer die sich hinter einem Proxy befinden Das trifft z B auf grossere Organisationen oder auch auf Kunden eines Internet Access Providers zu der eine Proxy Architektur einsetzt In einer solchen Umgebung kann es vorkommen dass im Verlaufe einer Applikations Session der ausgehende Proxy oder Router bzw die IP dessen wechselt und damit bei der Webanwendung eine andere IP Adresse registriert wird Als weitere Hindernisse sind software und netzwerktechnische Gegebenheiten zu nennen die dazu fuhren konnen dass bei der Webanwendung die IP Adresse des zugreifenden Benutzers gar nicht ankommt sondern nur diejenige eines vorgeschalteten Reverse Proxy oder einer anderen Komponente im eigenen Netz Eingesetzt werden kann der vorgeschlagene Losungsansatz jedoch in jenen Anwendungssituationen in denen die oben genannten Nachteile nicht eintreten oder toleriert werden konnen So z B sind die beschriebenen Hindernisse in der Regel in Intranet Bereichen nicht vorhanden so dass hier die Bindung der Session an die IP Adresse bei Anwendungen mit erhohtem Schutzbedarf als eine zusatzliche Sicherheitsmassnahme erfolgen kann Session Riding Bearbeiten Session Riding ist durch Einfuhrung eines SessionCodes oder durch eine andere Schutzmassnahme zu verhindern Die im Folgenden angefuhrten Massnahmen sind geeignet um Session Riding zu verhindern Dialogtracking Bearbeiten Die sicherste Form des Session Managements erreicht man durch ein Dialogtracking Dabei ist der SessionCode nicht statisch sondern wird bei jedem Zugriff neu vergeben Wir bezeichnen jenen SessionCode als Token Die Anwendung baut in jeden Dialogschritt d h jeden Link in einer Seite das diesen Dialogschritt eindeutig kennzeichnende Token ein Erhalt sie einen Request pruft sie ob das Token fur diesen Aufruf gultig ist und streicht es aus der Liste der gultigen Token Ein erneuter Aufruf dieses Links Replay durch den Angreifer ist damit nicht mehr moglich Auch ist es nicht moglich eine Aktion ohne Token aufzurufen Die Kenntnis der SessionID und eines auf dem Ubertragungsweg ausgespahten Tokens ist damit nicht mehr ausreichend um in die Session einzudringen Man muss gleichzeitig auch das Token von mindestens einem unverbrauchten d h noch nicht aufgerufenen Link besitzen Privilege Escalation Bearbeiten Privilege Escalation bezeichnet die unautorisierte Erhohung der Privilegien die einem angemeldeten Benutzer zugeordnet sind der einer bestimmten Rechtegruppe Benutzergruppe angehort Beispielhaft habe eine Anwendung zur Bestellabwicklung fur jede neue Bestellung eine eindeutige ID vergeben Diese IDs werden in der Reihenfolge der Bestellaufgabe und uber alle Benutzer hinweg sequentiell erzeugt Ein Benutzer kann sich die eigenen Bestellungen uber eine Web Schnittstelle anzeigen lassen Ausgegeben wird eine Liste von Bestellungen die durch eine Folge nun nicht mehr zusammenhangender IDs identifiziert werden Nur auf diese Bestellungen soll der Benutzer zugreifen durfen Beim anschliessenden weiteren Zugriff auf eine konkrete Bestellung wird die ID als Parameter mit ubergeben Privilege Escalation kann nun dann vorliegen wenn die Anwendung beim Zugriff auf einen Datensatz nicht mehr pruft ob der Benutzer rechtmassiger Eigentumer dieses Datensatzes ist sondern einfach die als Parameter ubermittelte ID zum Zugriff auf die Datenbank heranzieht Zur Verhinderung von Privilege Escalation muss beim Bearbeiten oder Einsehen eine Bestellung kontrolliert werden ob die uber die ID identifizierte Bestellung entweder dem anfragenden Benutzer gehort oder ob der Benutzer eventuell der Administrator ist In einer modernen Anwendung mit einer Model View Controller MVC Struktur ist dies relativ einfach zu bewerkstelligen indem die Kontrollfunktion im Modell der Business Logik verankert wird Die Praxis zeigt jedoch dass diese Kontrolle haufig ganz oder teilweise in der Controller Schicht vorgenommen wird Nachteile sind duplizierter Code und dass ein Entwickler vergessen konnte die Kontrolle uberhaupt einzubauen Ein Grund dafur ist dass an Sicherheit meist zu einem sehr spaten Zeitpunkt gedacht wird und Anderungen am Business Modell dann zu aufwandig sind Ein anderer Grund sind funktionale Erweiterungen wie z B die nachtragliche Einfuhrung des oben genannten Administrators die eine grundsatzliche Uberarbeitung des Sicherheitskonzepts notwendig machen wurde Hashes Bearbeiten Wenn die Anwendung Werte an den Browser sendet die dieser nicht verandern darf was bei einer SessionID der Fall ist die aber mit einem Form Request wieder zur Anwendung zuruckkommen dann muss die Anwendung die erhaltenen Werte mit einer Data Validation auf gultige Werte prufen Sollen die eigentlichen Werte zusatzlich vor Ausspahen geschutzt werden so empfiehlt sich die Verwendung von signierten Hashes anstatt der Klartext Werte URL Rewriting Bearbeiten Erfordert die Anwendung URL Rewriting so sollte ein Benutzer auf die Gefahren des Ausspahens hingewiesen und dazu aufgefordert werden sich beim Verlassen des PCs aus der Webanwendung auszuloggen oder den Rechner zu sperren Durch Verwendung sehr langer SessionIDs die ein Abschreiben erschweren oder die Verwendung langer URLs mit der SessionID am Ende so dass sie aus dem sichtbaren Bereich am Bildschirm herausgeschoben ist kann zudem etwas gegen das Uber die Schulter schauen z B in offentlichen Orten getan werden Insbesondere ist ein Benutzer darauf hinzuweisen niemals eine gespeicherte Seite oder einen kopierten Ausschnitt aus einer solchen Seite zu versenden Es ist ausserdem sicherzustellen dass beim URL Rewriting nicht versehentlich auch externe Links mit der SessionID versehen werden Der Referrer der beim Einsatz des URL Rewritings auch die SessionID enthalt darf zudem nicht zu fremden Hosts gelangen Dies ist dadurch sicherzustellen dass Links auf externe Seiten niemals direkt gesetzt werden sondern immer uber einen Redirect Weiterleitung gefuhrt werden Logout erzwingen Bearbeiten Jede Anwendung die eine Login Funktion hat sollte auch eine Logout Funktion besitzen Das Logout hat das korrekte Invalidieren der Session sicherzustellen Bei zahlreichen Webanwendungen ist zu beobachten dass eine Logout Funktion zwar vorhanden ist und der Benutzer nach Ausfuhrung auch die Bestatigung erhalt nun abgemeldet zu sein dass die Session aber nicht invalidiert wird Zu erkennen ist das meist daran dass die Betatigung des Zuruck Buttons des Browsers bis zu einer Seite innerhalb der Anwendung ein Weiterarbeiten darin nach wie vor ermoglicht Mit einer gestohlenen SessionID konnte in einem solchen Fall weitergearbeitet werden zum Beispiel in einem Internet Cafe Der Benutzer ist darin zu animieren das Logout auch wirklich auszufuhren Dies kann wie folgt durchgefuhrt werden einfache und klare Darstellung des Logout Buttons Hinweis nach dem Login Hinweis nur dann nach dem Login falls dies beim letzten Mal nicht geschehen ist Schliesst der Benutzer das Browser Fenster in der Annahme sich dadurch auch automatisch auszuloggen was aber nicht der Fall ist so sollte die Anwendung den Benutzer beim nachsten Login daruber informieren dass ein automatisches Ausloggen erfolgte und in Zukunft ein explizites Ausloggen stattfinden sollte Benutzer BearbeitenUmgang mit Benutzerkennungen Bearbeiten Um die Sicherheit erheblich zu steigern sollte die Benutzerkennung als nicht offentliche Information behandelt werden Insbesondere sind E Mail Adressen sowie Schemata wie vorname nachname zu vermeiden Es wird empfohlen stattdessen nicht ableitbare Zeichenketten zu verwenden oder eine Kombination aus externen Merkmalen mit einer nicht erratbaren Komponente zu gestalten Zudem ist darauf zu achten dass die Anwendung keine Hinweise uber das Vorhandensein von Benutzerkennungen gibt Haufig anzutreffen ist diese Art der Implementierung einer Passwort vergessen Funktion Der Benutzer wird aufgefordert seine eindeutige Identifikationsnummer UserID einzugeben Ist diese korrekt d h existiert die Nummer in der Datenbank so lautet die Antwort Das Passwort wurde an die hinterlegte E Mail Adresse verschickt Wurde jedoch eine nicht existierende Identifikationsnummer eingegeben so lautet die Antwort Dieser Benutzer existiert nicht bitte korrigieren Sie Ihre Eingabe Auf diese Weise lassen sich Benutzerkennungen durch Aufzahlen Enumeration ermitteln Richtig ware folgende Antwort die keine Information uber das Vorhandensein einer UserID gibt Das Passwort wurde an die hinterlegte E Mail Adresse verschickt falls die eingegebene UserID korrekt gewesen ist Sollten Sie nicht in Kurze eine E Mail von uns erhalten so ist dies darauf zuruckzufuhren dass Sie eine fehlerhafte UserID eingegeben haben Sichere Passworter Bearbeiten Hauptartikel Passwort Die Benutzung von sicheren Passwortern ist dadurch zu erreichen dass das System nicht jedes vom Anwender gewunschte Passwort akzeptiert und Regeln vorgibt sowie die Einhaltung dieser pruft Bisher existieren fur das Web keine allgemein anerkannten Verfahren und auch keine Standardbibliotheken zur Passwortprufung Auch wird haufig in der jeweiligen Anwendungssituation die Berucksichtigung anwendungsspezifischer Randbedingungen erforderlich sein Generell sollten Passworter aus einfachen Worterbuchwortern personlichen Angaben Name Geburtstag etc sowie einfachen Zahlenkombinationen vermieden werden Es empfiehlt sich eine Kombination aus auch absichtlich falsch geschriebenen Wortern Sonderzeichen Gross und Kleinschreibung sowie Zahlen Dabei ist auch die Lange des Passworts von entscheidender Bedeutung Einsatz eines SSL TLS HTTPS Protokolls Bearbeiten Hauptartikel Transport Layer Security und Hypertext Transfer Protocol Secure Daten bei denen Ausspahen verhindert werden muss z B Passworter Bankdaten etc sind durch Einsatz des SSL Protokolls zu schutzen Das SSL Protokoll verschlusselt die zwischen Browser und Server ausgetauschten Daten und sorgt dafur dass vertrauliche Informationen vor dem Ausspahen auf dem Ubertragungsweg geschutzt sind Diesen Schutz fuhren heutige Browser so weit dass auch bei einem Wechsel von einer per SSL geschutzten Seite HTTPS zu einer ungeschutzten Seite HTTP etwa dann wenn der User auf der SSL geschutzten Seite auf einen HTTP Link klickt sensitive Protokollinformationen nicht weitergegeben werden Das SSL Server Zertifikat stellt ausserdem sicher dass der Hostname authentisch ist D h es garantiert dass der im Zertifikat angezeigte Hostname unverfalscht ist Schliessen wir den Fall aus dass der DNS manipuliert worden ist so garantiert das Zertifikat auch die Echtheit des Hosts sofern die Seite keine Frames benutzt Hilfsprogramme fur die Sicherheit von Web Anwendungen BearbeitenEs gibt u a folgende Web Application Security Tools Web Shields Bearbeiten Hauptartikel Web Application Firewall WebShields auch Web Application Firewall filtern den Datenstrom zwischen Browser und Webanwendung und konnen mit Firewalls verglichen werden Tritt ein als unzulassig eingestuftes Eingabemuster auf wird der Transfer unterbrochen oder auf eine andere vorher festgelegte Weise reagiert Ein WebShield arbeitet als Proxy im Datenstrom kennt somit das Protokoll der Anwendung Grundsatzlich filtern WebShields die vom Browser an den Webserver ubertragenen Daten Einige WebShield Produkte konnen zusatzlich die vom Webserver an den Browser versandten Daten uberwachen Hierbei kann das WebShield lernen wie die Daten beschaffen sind Dadurch wird ein spaterer Vergleich zwischen aktuellen und gelernten Daten ermoglicht So konnen Filter in eingeschranktem Masse verhindern dass der Browser schadhaften Code erhalt WebShields sind nicht fahig alle Angriffsformen auf Webanwendungen zu erkennen Generell gilt Sicherheitsprobleme sollten in der Webanwendung selbst gelost werden WebShields sollten nur als zusatzliche Schutzmassnahme in Betracht gezogen werden Web Scanner Bearbeiten Web Scanner auch Web Application Scanner sind Programme fur Penetrationstests Sie untersuchen eine Anwendung auf bekannte Schwachstellen und unterstutzen dabei den Webentwickler oder Penetrations Tester beim Auffinden von Sicherheitslucken Allerdings kann dies auch von einem Angreifer verwendet werden Dabei wird auf einem Client Computer der Web Scanner installiert um dann die auf einem anderen entfernten Server liegende Webanwendung zu analysieren Allgemein gilt Web Scanner sind sinnvolle Hilfsmittel um erfahrenen Benutzern bei der Analyse der Sicherheitseigenschaften einer Webanwendung zu unterstutzen Sie sind jedoch weder in der Lage fehlendes Wissen zu kompensieren noch konnen sie Experten ersetzen Die einer Webanwendung innewohnende Komplexitat und die Tatsache dass manche Schwachstellen von einem Hilfsprogramm tool grundsatzlich nicht erkennbar sind haben zur Folge dass weiterhin geubte Personen fur den Grossteil der Analyse benotigt werden Eine Interpretation eines Web Scan Reports ist ohne Erfahrung im Testen von Webanwendungen nur schwer moglich Im Zuge einer Analyse konnen folgende vier Phasen durchlaufen werden Crawl Scan Der Web Scanner bewegt sich ahnlich wie eine Suchmaschine durch die gesamte Webanwendung Dabei werden samtliche Links besucht und gegebenenfalls Formfelder mit Testwerten ausgefullt Der Scanner erhalt so ein umfassendes Wissen uber den Aufbau der Webanwendung die Funktionsweise von Dialogschritten und den Inhalt von Formularseiten Die Webanwendung wird ausserdem auf haufig vorhandene Installations Konfigurations oder Testverzeichnisse sowie bekannte problematische oder informative Dateien durchsucht Unterstutzt werden kann die Scan Phase durch Einbeziehen grosser offentlicher Suchmaschinen Vorausgesetzt wird hierfur dass die zu analysierende Website bereits durch diese Suchmaschinen indexiert worden ist Die Ergebnisse dieses Schrittes wurden dann auf den Suchmaschinen gespeichert Index oder Cache Im Rahmen einer Scan Phase konnen diese Suchmaschinen nun gezielt nach Informationen uber die Website abgefragt werden Fur die Zusammenstellung von Suchmustern sowie Automatisierung der Abfragen kann die Nutzung spezieller Hilfsprogramme zweckmassig sein Analyse In einem nachsten Schritt wird die Webanwendung einer eingehenden Sicherheitsanalyse unterzogen Die gewonnenen Erkenntnisse konnen in einer Datenbank hinterlegt werden Typ und Version des Webservers verwendete Technologien und Tools CGI Servlets JSP JavaScript PHP usw Verwendung von Cookies oder anderer Mechanismen zum Session Tracking Analyse der Formular Parameter einer Seite insbesondere auch die Verwendung von versteckten Parametern hidden parameter sowie der Extraktion von Kommentaren Audit Penetrationstest Unter Einbeziehung des in der vorangegangenen Phase gewonnenen Wissens werden systematisch fehlerhafte oder unzulassige Eingabemuster erzeugt und an die Webanwendung versandt Einige der existierenden Scanner unterteilen diese Phase in eine schadlose und eine potentiell schadhafte Prufung Reporting Die Ergebnisse der Scan und Audit Phase werden in Berichten report zusammengefasst Der Umfang reicht dabei von kurzen Zusammenfassungen mit Nennung nur der grossten Schwachstellen bis hin zu detaillierten Beschreibungen in denen auch erste Hinweise fur die Behebung des jeweiligen Problems gegeben werden konnen Strafrechtliche Aspekte Bearbeiten nbsp Dieser Artikel oder Absatz stellt die Situation in Deutschland dar Bitte hilf uns dabei die Situation in anderen Staaten zu schildern Jegliches rechtswidrige Verandern Loschen Unterdrucken oder Unbrauchbar Machen fremder Daten erfullt den Tatbestand nach 303a StGB Datenveranderung In besonders schweren Fallen ist dies auch nach 303b I Nr 1 StGB Computersabotage strafbar und wird mit Haftstrafe von bis zu funf Jahren oder Geldstrafe bestraft Die Durchfuhrung von DDOS Attacken stellt seit 2007 ebenfalls eine Computersabotage dar gleiches gilt fur jegliche Handlungen die zur Beschadigung eines Informationssystems das fur einen anderen von wesentlicher Bedeutung ist fuhren Das Ausspahen von Daten 202a StGB also die Erlangung des Zugangs zu fremden Daten die hiergegen besonders geschutzt sind wird mit Haftstrafe bis zu drei Jahren oder mit Geldstrafe bestraft Das Abfangen fremder Daten in Netzen oder aus elektromagnetischen Abstrahlungen ist seit 2007 ebenfalls strafbar anders als bei 202a StGB kommt es hier nicht auf eine besondere Zugangssicherung an Das sich Verschaffen Erstellen Verbreiten Offentlich zuganglich machen etc von sog Hackertools steht ebenfalls seit 2007 unter Strafe wenn damit eine Straftat vorbereitet wird 202c StGB Daten sind nach 202a Abs 2 in Verbindung mit Abs 1 aber nur vor dem Ausspahen geschutzt wenn sie besonders gesichert sind um ein Ausufern des Tatbestandes zu vermeiden Das heisst erst wenn der Nutzer seine Daten technisch schutzt geniesst er auch den strafrechtlichen Schutz Die fruhere Debatte ob das Hacken ohne Abruf von Daten strafbar sei ist hinfallig seit der Wortlaut der Norm 2007 derart geandert wurde dass Strafbarkeit bereits mit Erlangung des Zugangs zu Daten einsetzt Weiter ist umstritten ob die Verschlusselung zur besonderen Sicherung zahlt Sie ist zwar sehr effektiv aber es wird argumentiert die Daten seien ja nicht gesichert sondern lagen nur in unverstandlicher bzw schlicht anderer Form vor Als Computerbetrug wird nach 263a StGB mit Geldstrafe oder Freiheitsstrafe bis zu funf Jahren bestraft wenn Datenverarbeitungsvorgange zur Erlangung von Vermogensvorteilen manipuliert werden Schon die Erstellung Verschaffung Anbietung Verwahrung oder Uberlassung dafur geeigneter Computerprogramme ist strafbar Siehe auch BearbeitenSocial Engineering Sicherheit Literatur BearbeitenJoel Scambray Vincent Liu Caleb Sima Hacking Exposed Web Applications Web Application Security Secrets and Solutions 3 Auflage Verlag Mcgraw Hill Professional 2010 ISBN 978 0 07 174064 7 Mario Heiderich Christian Matthies Johannes Dahse fukami Sichere Webanwendungen Das Praxisbuch 1 Auflage Verlag Galileo Computing 2008 ISBN 978 3 8362 1194 9 Einzelnachweise Bearbeiten https www owasp org index php Category OWASP Guide Project Archivierte Kopie Memento des Originals vom 16 April 2012 im Internet Archive nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot www derkeiler com http www w3 org 2001 tag doc whenToUseGet html http www technicalinfo net papers WebBasedSessionManagement html Abgerufen von https de wikipedia org w index php title Sicherheit von Webanwendungen amp oldid 233051165