Von
/31.01.19

Medien berichten immer wieder über Hackerangriffe auf wichtige Anwendungen. Besonders im Netz sind solche Angriffe häufig, da Webseiten öffentlich im Internet verfügbar und dadurch besonders exponiert sind. Doch was sind die häufigsten Arten von Angriffen auf Webseiten und wie kann man sich dagegen schützen?

Injection

Eine der häufigsten Attacken gemäss dem OWASP Report für 2017 ist die «Injection» oder spezifisch die «SQL Injection». Bei dieser Attacke versucht der Angreifer, schädlichen Code in eine Applikation einzuschleusen, um anschliessend Daten unerlaubt zu lesen, zu modifizieren oder sogar zu löschen. Dies wird ermöglicht durch SQL, einer sogenannten «Structured Query Language», mit welcher man Instruktionen an eine Datenbank schickt: Wenn eine Applikation erlaubt, dass User Daten eingeben können – beispielsweise über ein Textfeld – und diese Eingaben im Hintergrund direkt in eine SQL Abfrage integriert werden, können Angreifer eine Anfrage an die Datenbank stellen, ohne dazu berechtigt zu sein.

Verhindert werden kann dies, indem die Eingaben der User zuerst validiert werden. So wird sichergestellt, dass die Eingabe dem Format entspricht, welches die Applikation erwartet. Zudem kann man sogenannte «Prepared Queries» verwenden. Dies sind spezielle SQL Abfragen, bei denen die Eingabe der User nicht direkt im Query vorkommen, sondern separat an die Datenbank gesendet werden. So kann die Datenbank klar unterscheiden, was zum Query gehört und was als externer Parameter dazu kommt.

Dadurch, dass wir bei der Renuo standardmässig mit Ruby on Rails entwickeln, sind wir gegen die meisten Fälle von SQL Injection abgesichert. Allerdings ist das Risiko durch Rails nicht komplett vermieden, weshalb wir das das Security Analysis Tool Brakeman verwenden, welches uns vor eventuellen weiteren Risiken schützt. 

Broken Authentication

«Broken Authentication» ist eine weitere verbreitete Sicherheitslücke. Sie umschreibt eine generell unsichere Authentifizierung (Mechanismus für User Logins). Mögliche Szenarien dafür sind beispielsweise:

  • Eine Applikation lässt Standardpasswörter wie «1234» oder «passwort» zu. Angreifer verfügen über lange Listen mit den meist genutzten Passwörtern, die einfach zu knacken sind.

  • Eine Applikation lässt sogenanntes «Brute Forcing» zu. Bei dieser Attacke werden systematisch Passwörter ausprobiert, bis das korrekte gefunden wird.

  • Eine Applikation speichert Passwörter unverschlüsselt oder nur mit einer schwachen Verschlüsselung auf dem Server. Hat ein Hacker einmal Zugriff zur Benutzerliste erlangt (beispielsweise durch SQL Injection), kann er sich in jedes User-Profil einloggen. Viele Leute verwenden zudem in jeder Applikation das selbe Passwort, weshalb ein Angreifer dann vermutlich auch auf weitere Anwendungen zugreifen kann.

  • Eine Applikation löscht die Sitzung nach dem Ausloggen nicht. Die Sitzung ist ein Schlüssel, welcher im Browser des Users als Cookie hinterlegt wird, sodass der User in einer bestimmten Anwendung eingeloggt bleibt. Wenn dieser Schlüssel nach dem Ausloggen allerdings nicht zurückgesetzt wird, kann sich der Angreifer im Namen des Users einloggen, selbst wenn sich dieser bereits ausgeloggt hat.

Es ist daher ratsam, eine Passwort-Validierung beim Login einzubauen, womit sicher gestellt wird, dass das Passwort sicherheitsrelevante Anforderungen erfüllt wie eine Mindestlänge oder genügend Zahlen und Sonderzeichen. Die Renuo verwendet zudem starke Verschlüsselungsalogrithmen zusammen mit dem sogenannten Salting, was die höchstmögliche Sicherheit garantiert.

Eine weitere verbreitete Sicherheitslücke ist das Versenden von sensitiven Daten über nicht geschützte Kanäle. Dies kann beispielsweise ein Login über ein unsicheres HTTP Protokoll sein. Über HTTP werden sämtliche

Daten unverschlüsselt übertragen, weshalb es für Angreifer leicht ist, Logindaten oder ähnliches abzufangen, in dem sie sich zwischen den Server und den Browser stellen.

Ein weiteres Angriffsszenario besteht, wenn der Server den Browser nicht zwingt, die Verschlüsselung einzuhalten – wenn man ein Login also über HTTP statt über HTTPS machen kann. Dies ermöglicht eine sogenannte «Downgrade-Attacke», bei der der Angreifer das Opfer über einen anscheinend harmlosen Link auf die unverschlüsselte Seite weiterleitet und somit alle Daten mitverfolgen kann. Dies kann verhindert werden, indem man HTTPS erzwingt mit Protokollen wie der HTTP Strict Transport Policy (HSTS). 

Cross Site Scripting

Die letzte hier beschriebene Angriffsvariante wird «Cross Site Scripting (kurz XSS)» genannt. Sie zielt darauf ab, Benutzerdaten abzufangen, indem Skripts – kleine Programme die im Browser laufen – auf dem Computer des Opfers laufen gelassen werden. Dies wird erreicht, in dem das Skript in einer Eingabe auf der Webseite eingeschleust, welche bei anderen Nutzern wiederum dargestellt wird. Ein Beispiel dafür wäre eine Kommentarsektion, mit welcher User Texte verfassen können, die dann andere User ebenfalls lesen können. Ist die Applikation nicht geschützt, kann Code in die Eingabe geschmuggelt werden, welcher beim Darstellen des Kommentars ausgeführt wird. Wir bei der Renuo eliminieren dieses Risiko, in dem wir Frameworks verwenden, die standardmässig Eingaben «escapen», sie also in ein Format konvertieren, welches der Browser nicht ausführen kann. 

Libraries von Dritten

Ein weiteres Sicherheitsrisiko gibt es, welches man jedoch nicht direkt beeinflussen kann: die Verwendung von Code, welcher von Dritten geschrieben wurde, sogenannte «Frameworks». Um moderne Applikationen möglichst zeiteffizient und kostengünstig zu entwickeln, ist das Verwenden von Frameworks unumgänglich. Allerdings können diese Frameworks genauso Sicherheitslücken beinhalten, wie eigens geschriebener Code. Um das Risiko klein zu halten, ist es umso wichtiger, regelmässig Sicherheitsupdates durchzuführen, um gegen die aktuellen Gefahren abgesichert zu sein. Wir betreiben aus diesem Grund regelmässige Monitoring aller laufenden Applikationen, damit Unregelmässigkeiten und Fehler schnell auffallen und behoben werden können.

Damit haben wir die wichtigsten Attacken im Onlinebereich beschrieben – oder kennen Sie noch mehr? Schreiben Sie uns, wir freuen uns über jeden Input.