Kompetenzen von Ingenieuren für Anwendungssicherheit
Lernziele
Nachdem Sie diese Lektion abgeschlossen haben, sind Sie in der Lage, die folgenden Aufgaben auszuführen:
- Erklären der Bedeutung von Anwendungssicherheit für Unternehmen
- Auflisten der wichtigsten Kompetenzen von Experten für Anwendungssicherheit
- Beschreiben gängiger Anwendungssicherheitsszenarien
Die Bedeutung von Anwendungssicherheit für Unternehmen
Unzulängliche Anwendungssicherheit kann enorme negative Folgen für ein Unternehmen haben. Täglich erfolgen Cyberangriffe auf eine Vielzahl von Unternehmen, bei denen die Angreifer hoffen, sich durch den Diebstahl von Geld, Unternehmensdaten und geistigem Eigentum bereichern zu können. Die Angreifer nutzen die erbeuteten Daten für unbefugte Einkäufe und den Diebstahl der Verbraucheridentität.
In den Nachrichten wird immer wieder berichtet, dass Angreifer Anwendungen erfolgreich kompromittiert haben, um in den Besitz von Daten zu gelangen, die in den Computersystemen von Einzelhändlern, Kreditauskunfteien, Fluggesellschaften, Unterhaltungsunternehmen, Regierungsbehörden, Schulen und vielen anderen Organisationen gespeichert sind. In einem Fall gelang es einem fremden Land, in die Systeme einer Hotelkette einzudringen. In einem anderen Fall wurde durch einen SQL-Injektionsangriff (mehr dazu später) Spyware auf den Computern eines Unternehmens installiert, die Kreditkartendaten von Kunden offenlegte. In mehreren Fällen stahlen Eindringlinge Kreditkartendaten, indem sie schwache Datenverschlüsselungssysteme ausnutzten. Insgesamt wurden durch diese Angriffe die persönlichen Daten Hunderter Millionen Kunden offengelegt.
Diese Sicherheitsverletzungen hatten direkte wirtschaftliche Folgen durch Betrug und Diebstahl, sie können aber auch zu indirekten wirtschaftlichen Auswirkungen wie z. B. der Rufschädigung führen. Dies kann zusätzliche finanzielle Folgen für das Unternehmen nach sich ziehen, da Kunden abwandern, das Vertrauen der Aktionäre schwindet und das Markenimage beschädigt wird. Sicherheitsverletzungen können zudem juristische und aufsichtsrechtliche Folgen haben, die zu Geldstrafen und Sanktionen führen.
Anwendungssicherheitsingenieure spielen eine wichtige Rolle, wenn es darum geht sicherzustellen, dass Kundendaten in Unternehmensanwendungen angemessen geschützt sind. Da die Rolle des Anwendungssicherheitsingenieurs so entscheidend ist, muss er über ein breites Spektrum an Fertigkeiten und Kompetenzen verfügen. Sehen wir uns nun genauer an, welche Fertigkeiten ein Anwendungssicherheitsingenieur benötigt.
Kompetenzen von Ingenieuren für Anwendungssicherheit
Stellen Sie sich vor, Sie fliegen in den Urlaub auf eine weit entfernte tropische Insel. Bevor Sie an Bord Ihres Flugzeugs gehen, müssen Sie mehrere Sicherheitskontrollen am Flughafen passieren. Das Sicherheitspersonal prüft Ihren Ausweis und Ihre Bordkarte, Sie gehen durch einen Metalldetektor, Ihr Gepäck wird geröntgt, Sie gehen an Spürhunden der Flughafensicherheit vorbei, und Sicherheitspersonal überwacht an Bildschirmen alles auf ungewöhnliche Aktivitäten. Diese verschiedenen Sicherheitsebenen am Flughafen sorgen dafür, dass Sie sicher an Ihr Ziel gelangen. Ähnlich wie das Sicherheitspersonal am Flughafen muss ein Anwendungssicherheitsingenieur die Einstiegspunkte von Angreifern kennen und in jeder Phase der Anwendungsentwicklung und -bereitstellung die nötigen Schutzmaßnahmen gegen Schwachstellen ergreifen.
In Berichten der Sicherheitsverbände (ISC)² und ISSA (Information Systems Security Association International) wird der seit Jahren wachsende Fachkräftemangel im Bereich Cybersicherheit diskutiert. Aufgrund der Zunahme von Sicherheitsvorfällen melden Unternehmen einen akuten Bedarf an Fachleuten für Anwendungssicherheit, um Anwendungen und Daten zu schützen. Aufgrund der hohen Nachfrage und angesichts der aufwändigeren Ausbildung von Anwendungssicherheitsingenieuren verdienen diese Experten oftmals mehr als Anwendungsentwickler.
Anwendungssicherheitsingenieure setzen in den verschiedenen Phasen des Softwareentwicklungszyklus einer Anwendung unterschiedliche Verfahren ein, um Schwachstellen bei der Sicherheit aufzudecken. Dazu müssen Anwendungssicherheitsingenieure über viele technische Fertigkeiten verfügen, wie etwa:
- Entwickeln von Bedrohungsmodellen: Überlegen, wie Angreifer ein System kompromittieren könnten und welche Schutzmaßnahmen dies notwendig macht
- Sicherer Softwareentwicklungszyklus: Entwicklern helfen, sicheren Code zur Minimierung von Schwachstellen zu schreiben, indem man Standards, Techniken und bewährte Vorgehensweise implementiert
- Prüfen der Code-Sicherheit: Identifizieren von Sicherheitslücken im Quellcode vor der Bereitstellung einer Anwendung in der Produktion
- Schwachstellentests und -analysen: Entdecken von Schwachstellen nach der Bereitstellung der Anwendung und Beratung von Entwicklungsteams bei der Behebung
Da Anwendungssicherheitsingenieure mit verschiedenen Personen (Anwendungsentwicklern, Testern, Designern und anderen) zusammenarbeiten, sollten sie gut mit anderen arbeiten und kommunizieren können. Außerdem sollten sie gut schreiben können, da sie Dokumente verfassen, in denen sie ihre technischen Ergebnisse darlegen. Manchmal müssen sie ihre Kommunikationsfähigkeit einsetzen, um das Management davon zu überzeugen, dass eine bestimmte Sicherheitsfunktion installiert werden sollte, bevor eine Anwendung bereitgestellt wird. Häufig ist ihre Fähigkeit zu kritischem Denken gefragt, wenn es darum geht, die verschiedenen Möglichkeiten zu ermitteln, die ein Eindringling bei einem Angriff auf eine Anwendung einsetzen könnte. Danach müssen sie kreative Lösungen finden, um potenzielle Angriffe abzuwehren. Ist ein Eindringversuch erfolgreich, untersuchen sie den Vorfall, um den Ursprung der Kompromittierung zu ermitteln und den Schutz der Anwendung vor künftigen Angriffen zu stärken.
Zusätzlich zu den oben aufgeführten Fertigkeiten können die folgenden Zertifizierungen das Knowhow eines Anwendungssicherheitsingenieurs erweitern.
- GIAC Web Application Defender (GWEB)
- Certified Secure Software Lifecycle Professional (CSSLP)
- Secure Software Practitioner (SSP)
- Certified Application Security Engineer (CASE)
- Advanced Web Attacks and Exploitation (Kurs WEB-300)
Wenn Sie eine berufliche Laufbahn als Anwendungssicherheitsexperte in Erwägung ziehen, ist ein Hochschulabschluss in Informatik ein guter Einstieg. Anwendungssicherheitsingenieure beginnen oft als Anwendungsentwickler und wechseln dann in den Bereich Cybersicherheit. Außerdem bieten mehrere Hochschulen Abschlüsse in Cybersicherheit an. Es ist definitiv ein interessantes Betätigungsfeld mit vielen Möglichkeiten.
Da Sie nun wissen, welche Fertigkeiten Anwendungssicherheitsingenieure benötigen, sehen wir uns nun gängige Sicherheitsszenarien an, die diesen Experten begegnen, und befassen uns damit, wie man Anwendungen in diesen Situationen schützen kann.
Gängige Anwendungssicherheitsszenarien
Cyberkriminelle versuchen, Daten zu stehlen, zu ändern oder zu zerstören, und suchen dafür den einfachsten Zugang, der den geringsten Aufwand erfordert und den größten Nutzen bringt. Je komplexer eine Anwendung ist, desto höher ist die Wahrscheinlichkeit, dass sie Sicherheitslücken enthält. Cyberkriminelle zielen auf Anwendungen, und zwar vor allem Webanwendungen, ab, da sie eine große und relativ leicht auszunutzende Angriffsfläche (die Benutzeroberfläche) bieten, über die ein Eindringling eventuell auf sensible, auf einem Computer gespeicherte Informationen zugreifen kann. Außerdem benötigen Angreifer keine speziellen Tools für den Angriff auf Webanwendungen. Sie benötigen lediglich einen Computer und eine Internetverbindung.
Während Angreifer versuchen herauszufinden, wie sie eine Anwendung infiltrieren können, legen Anwendungssicherheitsingenieure den Fokus darauf, Schwachstellen im Anwendungscode zu minimieren und sicherzustellen, dass Anwendungskomponenten sicher konfiguriert wurden, um unbefugten Zugriff auf Kundenkonten und -daten zu verhindern. Eine wertvolle Ressource, die Sie bei der Überprüfung der Sicherheitsrisiken von Anwendungen zu Rate ziehen können, ist das Open Web Application Security Project (OWASP). OWASP ist eine internationale Organisation, die frei verfügbare Informationen zur Verbesserung von Softwaresicherheit bereitstellt.
Und was sind nun die häufigsten Risiken, mit denen Anwendungssicherheitsingenieure zu tun haben? Ein gutes Beispiel dafür sind Injektionsangriffe, die auftreten, wenn Anwendungseingaben nicht ordnungsgemäß geprüft und bereinigt werden. Bei einem Injektionsangriff fügt ein Eindringling Code anstelle der erwarteten Eingabedaten in die Eingabebehandlungslogik der Anwendung ein (das ist der Code, der die Kommunikation zwischen einer Endbenutzerschnittstelle und einer Datenbank verwaltet).
Wenn die Anwendung nicht richtig geschrieben wurde, führt sie den vom Angreifer eingeschleusten Code aus. So könnte beispielsweise SQL-Code (Structured Query Language) in ein E-Mail-Adressfeld auf einer Webseite eingegeben werden. SQL ist eine Programmiersprache für die Datenverwaltung. Wenn das Eingabefeld nicht überprüft wird, könnte ein Angreifer mit Hilfe des SQL-Codes Informationen (wie etwa Gesundheitsdaten) aus der Datenbank der Anwendung extrahieren.
Um die Benutzereingabe zu bereinigen, sollte eine Anwendung sicherstellen, dass Benutzereingaben als Daten und nicht als Befehle behandelt werden und nur Zeichen aus der Zulassungsliste enthält (eine Zulassungsliste ist eine Liste von Zeichen, denen der Zugriff auf ein System gewährt wird). Bei Verwendung einer Zulassungsliste wird allen Entitäten der Zugriff verweigert, außer denen, die in der Zulassungsliste enthalten sind, und denen, die die maximale Datenfeldlänge nicht überschreiten.
Weitere Aufgaben von Anwendungssicherheitsingenieuren sind das Überprüfen, Testen und Verifizieren des Codes während des Entwicklungsprozesses, um sicherzustellen, dass Benutzereingaben ordnungsgemäß bereinigt werden, um den oben beschriebenen Injektionsangriffen vorzubeugen. Dies ist vor allem im Kontext der agilen Softwareentwicklung wichtig, bei der man versucht, Anwendungsfunktionen schneller als mit anderen Entwicklungsmethoden bereitzustellen. Die agile Methode bringt jedoch zusätzliche Komplexität, da sie eine kontinuierliche Aktualisierung der Anwendungen erfordert, um mit den Erwartungen der Endbenutzer Schritt zu halten. Entwickler sollen schnell neue Funktionen bereitstellen und etwaige Fehler beheben. Anwendungen müssen gegen Exploits geschützt werden, und es ist die Aufgabe des Anwendungssicherheitsingenieurs, das Entwicklungsteam dabei zu beraten, wie sich dies am effizientesten bewerkstelligen lässt.
Eine schwache oder nicht vorhandene Verschlüsselung ist ein weiterer weit verbreiteter Sicherheitsmangel von Anwendungen, der es Angreifern ermöglichen kann, an sensible Daten zu gelangen. Anwendungen sind anfällig, wenn sie Protokolle wie HTTP verwenden, die Daten als Klartext übertragen. Anwendungen sollten stattdessen sichere Protokolle wie HTTPS nutzen, die Datenübertragungen verschlüsseln, damit die Daten ohne den richtigen Entschlüsselungsschlüssel nicht gelesen werden können. Alte, schwache Verschlüsselungsalgorithmen und intern entwickelte Verschlüsselungsfunktionen sollten vermieden werden. Anwendungssicherheitsingenieure sollten stattdessen sichere, auf Standards basierende Verschlüsselungsalgorithmen nutzen.
Anwendungssicherheitsingenieure helfen Entwicklern, einen sicheren Softwareentwicklungsprozess einzuhalten. Sie nutzen sichere Verfahren für die Anwendungsentwicklung und -architektur, die auf bekannten Sicherheitspraktiken basieren, wie etwa die Einrichtung einer starken Authentifizierung und Autorisierung sowie eine sichere Sitzungsverwaltung, um unbefugten Zugriff zu verhindern.
Anwendungssicherheitsingenieure stellen Anwendungen bereit, die verhindern, dass sich Benutzer mit Standardanmeldedaten anmelden, da dies ein gängiger Angriffsvektor ist. Sie bereinigen Benutzereingaben, um Injektionsangriffe zu verhindern. Da einige Datenschutzverletzungen aufgrund einer schwachen Verschlüsselung Erfolg hatten, verwenden Anwendungssicherheitsingenieure starke Algorithmen mit einer angemessenen Verwaltung der Verschlüsselungsschlüssel, um Datenübertragungen und gespeicherte Daten (ruhende Daten) zu verschlüsseln. Sollten Angreifer das System infiltrieren, können sie dann keine nützlichen Informationen extrahieren, da sie nicht wissen, wie die Daten zu entschlüsseln sind.
Anwendungssicherheitsingenieure stellen sicher, dass Fehler richtig behandelt werden, damit keine sensiblen Informationen an Benutzer weitergegeben werden. Außerdem führen sie statische und dynamische Sicherheitstests während und nach der Anwendungsentwicklung durch und überwachen die Anwendung nach der Bereitstellung auf ungewöhnliche Aktivitäten.
Zusammenfassung
In dieser Einheit haben wir uns damit befasst, wie sich eine Verletzung der Anwendungssicherheit auf ein Unternehmen auswirken kann, welche Fertigkeiten Anwendungssicherheitsingenieure benötigen und wie gängige Anwendungssicherheitsszenarien aussehen. Als Nächstes sehen wir uns den ersten Schritt an, den jeder gute Anwendungssicherheitsingenieur durchführt, nämlich das Identifizieren der Anwendungen in seiner Umgebung und der damit verbundenen Risiken.