Informatik

Anwendungssicherheit: Risiken erkennen und verhindern

Anwendungssicherheit: Risiken erkennen und verhindern
Anwendungssicherheit: Risiken erkennen und verhindern
Für Quiz, Lückentext, Lernkarten und Fortschritt ist JavaScript nötig. Alle Inhalte und Lösungen bleiben direkt lesbar.

Anwendungssicherheit, kurz AppSec, schützt Software während ihres gesamten Lebenszyklus: vom Entwurf über Entwicklung und Tests bis zu Betrieb und Wartung. Dazu werden Risiken verhindert, Schwachstellen erkannt und Vorfälle behoben.

Auf dieser Seite lernst du, typische Schwachstellen zu analysieren, passende Kontrollen auszuwählen und Testverfahren sinnvoll zuzuordnen.

Deine Lernziele

Hake ab, was du schon kannst — und komm am Ende hierher zurück!

Was muss eine sichere Anwendung schützen?

Stell dir eine Schulplattform vor: Lernende melden sich an, laden Dateien hoch und sehen ihre eigenen Ergebnisse. Eine sichere Anwendung muss dafür sorgen, dass nur berechtigte Personen auf die jeweiligen Daten und Funktionen zugreifen können.

Definition

Anwendungssicherheit

Anwendungssicherheit ist der fortlaufende Prozess, Sicherheitsrisiken in Software zu erkennen, zu verhindern und zu beheben. Sie umfasst sicheres Design, sichere Entwicklung, Tests, Überwachung und Wartung.

Drei grundlegende Schutzziele helfen bei der Planung:

  • Vertraulichkeit: Daten sind nur für berechtigte Personen sichtbar.
  • Integrität: Daten und Funktionen werden nicht unbefugt verändert.
  • Verfügbarkeit: Die Anwendung und benötigte Daten bleiben nutzbar.

Dabei genügt es nicht, nur die Anmeldung zu schützen. Auch Eingaben, Rollen, Programmbibliotheken, Konfigurationen, Schnittstellen und der laufende Betrieb können Angriffsflächen bilden.

Beispiel

Ein Schüler darf seine eigene Bewertung lesen, aber nicht die Bewertungen anderer Personen verändern.

  • Die Anmeldung prüft seine Identität.
  • Die Zugriffskontrolle prüft bei jeder Anfrage seine Berechtigung.
  • Die Protokollierung hält ungewöhnliche Zugriffsversuche fest.

Erst das Zusammenspiel dieser Maßnahmen schützt die Funktion angemessen.

Merke

Eine erfolgreiche Anmeldung beantwortet die Frage „Wer bist du?“. Die Autorisierung beantwortet bei jeder Aktion die andere Frage: „Was darfst du tun?“

Teste dich
Frage 1 von 2LeichtWelche Aussage beschreibt Anwendungssicherheit am besten?
Lösung: Sie verbindet Schutzmaßnahmen über Entwurf, Entwicklung, Tests, Betrieb und Wartung. — AppSec betrachtet die Anwendung, ihren Code, ihre Komponenten, Konfigurationen und ihr Laufzeitverhalten über den gesamten Lebenszyklus.
Frage 2 von 2MittelEin angemeldeter Schüler kann durch Ändern einer Nummer in der Anfrage fremde Bewertungen sehen. Welche Kontrolle versagt hauptsächlich?
Lösung: Die Autorisierung beziehungsweise Zugriffskontrolle — Die Anwendung muss für jede angeforderte Ressource prüfen, ob die angemeldete Person genau darauf zugreifen darf.
Wie begleitet Sicherheit den Softwarelebenszyklus?

Sicherheit beginnt vor der ersten Codezeile. Wird sie erst am Ende geprüft, können grundlegende Architekturfehler bereits in vielen Funktionen stecken.

Ein sicherer Entwicklungslebenszyklus lässt sich so ordnen:

  1. Anforderungen festlegen: Welche Daten und Funktionen brauchen welchen Schutz?
  2. Bedrohungen modellieren: Welche Angriffswege sind denkbar, und welche Folgen hätten sie?
  3. Sicher entwerfen: Authentifizierung, Autorisierung, Verschlüsselung und Protokollierung in der Architektur einplanen.
  4. Sicher entwickeln: Eingaben korrekt behandeln, sichere Bibliotheken verwenden, Geheimnisse nicht im Code speichern und Code prüfen.
  5. Testen: Code, laufende Anwendung, Abhängigkeiten und Konfigurationen mit passenden Verfahren untersuchen.
  6. Sicher bereitstellen: sichere Einstellungen verwenden und unnötige Funktionen oder Debug-Schnittstellen entfernen.
  7. Überwachen und warten: Auffälligkeiten erkennen, Schwachstellen priorisieren, Updates einspielen und auf Vorfälle reagieren.

Shift Left bedeutet, Sicherheitsarbeit in frühe Phasen zu verlagern. Das ersetzt spätere Tests und Überwachung nicht. Es ergänzt sie, damit Fehler möglichst früh entdeckt werden.

Beispiel

Ein Team entwickelt eine Dateiablage.

  • In der Anforderungsphase legt es fest, wer Dateien lesen, ändern und löschen darf.
  • Beim Entwurf plant es Rollen und Prüfungen für jeden Zugriff.
  • Während der Entwicklung behandelt es Dateinamen und andere Eingaben als nicht vertrauenswürdig.
  • Vor der Bereitstellung testet es unzulässige Zugriffspfade.
  • Im Betrieb überwacht es ungewöhnliche Abrufmuster und spielt Sicherheitsupdates ein.

So wird dieselbe Schutzidee in mehreren Phasen umgesetzt und überprüft.

Teste dich
Frage 1 von 2LeichtWas bedeutet „Shift Left“ im sicheren Entwicklungsprozess?
Lösung: Sicherheitsfragen werden bereits in frühen Entwicklungsphasen bearbeitet. — Frühe Sicherheitsarbeit soll Design- und Implementierungsfehler rechtzeitig verhindern oder erkennen. Laufzeitschutz und Wartung bleiben trotzdem nötig.
Frage 2 von 2SchwerEin Team prüft Quellcode früh, überwacht die fertige Anwendung aber nicht. Was fehlt im Lebenszyklus?
Lösung: Die Erkennung und Reaktion im laufenden Betrieb — AppSec endet nicht mit der Bereitstellung. Protokollierung, Warnungen, Patchen und Vorfallreaktion gehören ebenfalls dazu.
Wie werden Schwachstellen zu kontrollierbaren Risiken?

Eine hilfreiche Analyse verbindet vier Fragen:

  1. Was ist die Schwachstelle?
  2. Wie könnte sie ausgenutzt werden?
  3. Welche Folge wäre möglich?
  4. Welche Kontrolle verhindert, erkennt oder behebt das Problem?

Beispiel: SQL-Injection

Bei einer SQL-Injection wird eine Eingabe so verarbeitet, dass sie die beabsichtigte Datenbankabfrage verändert. Das kann geschehen, wenn ein Programm Eingabetext direkt mit SQL-Befehlen zusammensetzt.

Unsicheres Prinzip:

Abfrage = "... WHERE name = '" + eingabe + "'"

Die Eingabe wird dabei wie ein Teil des Befehls behandelt. Eine manipulierte Eingabe kann deshalb die Bedeutung der Abfrage verändern.

Sicheres Prinzip:

Abfrage = "... WHERE name = ?" und Parameter = eingabe

Bei einer parametrisierten Abfrage bleiben SQL-Befehl und Eingabewert getrennt. Die Datenbankschnittstelle behandelt den Wert als Daten und nicht als nachträglich eingefügten SQL-Code.

Merke

Eingaben sind Daten, keine Befehle. Prüfe Eingaben zusätzlich auf zulässige Form und Länge, aber ersetze parametrisierte Abfragen nicht durch bloßes Filtern einzelner Zeichen.

Weitere typische Beziehungen sind:

SchwachstelleMögliches RisikoPassende Maßnahmen
Fehlerhafte Zugriffskontrollefremde Daten lesen, ändern oder löschenRollen prüfen, minimale Rechte vergeben, jeden Zugriff serverseitig autorisieren
Verwundbare Abhängigkeitbekannte Lücke wird ausgenutztKomponenten erfassen, mit SCA prüfen, aktualisieren oder ersetzen
Fehlkonfigurationunnötige Funktion oder Ressource ist erreichbarsichere Voreinstellungen, Härtung, wiederholte Konfigurationsprüfung
Unzureichende Verschlüsselungsensible Daten werden offengelegtDaten bei Übertragung und Speicherung angemessen verschlüsseln
Fehlende ProtokollierungAngriffe bleiben unbemerktsicherheitsrelevante Ereignisse erfassen, auswerten und bei Auffälligkeiten warnen
Teste dich
Frage 1 von 3LeichtWarum verhindert eine parametrisierte Abfrage SQL-Injection?
Lösung: Sie trennt die Struktur des SQL-Befehls vom übergebenen Datenwert. — Der Parameter wird als Wert an die Datenbankschnittstelle übergeben und nicht als Teil des SQL-Befehls zusammengesetzt.
Frage 2 von 3MittelEine Anwendung besitzt die Rollen „Lernende“ und „Lehrkraft“. Lernende können über eine versteckte URL trotzdem Noten ändern. Welche Verbesserung trifft die Ursache?
Lösung: Die Berechtigung bei jeder Änderungsanfrage serverseitig prüfen — Zugriffsschutz muss auf dem Server durchgesetzt werden. Die sichtbare Oberfläche allein ist keine Sicherheitsgrenze.
Frage 3 von 3SchwerEin Team findet eine bekannte Schwachstelle in einer verwendeten Bibliothek. Welche Reaktion passt am besten?
Lösung: Betroffenheit prüfen, Risiko priorisieren und die Komponente kontrolliert aktualisieren oder ersetzen — SCA und ein gepflegter Komponentenbestand helfen beim Erkennen; Patch- und Update-Management dient der Korrektur.
Welche Kontrollen und Tests ergänzen sich?

AppSec verwendet mehrere Schutzebenen, weil keine einzelne Maßnahme alle Fehler verhindert und erkennt.

Definition

Präventive Kontrolle

Eine präventive Kontrolle soll verhindern, dass eine Schwachstelle entsteht oder erfolgreich ausgenutzt wird. Beispiele sind parametrisierte Abfragen, minimale Berechtigungen und sichere Voreinstellungen.

Definition

Detektive Kontrolle

Eine detektive Kontrolle erkennt Schwachstellen, ungewöhnliches Verhalten oder Angriffsversuche. Dazu gehören Sicherheitstests, Protokollauswertung und Laufzeitüberwachung.

Definition

Korrektive Kontrolle

Eine korrektive Kontrolle behebt ein erkanntes Problem oder begrenzt dessen Folgen. Beispiele sind Updates, Patches, eine sichere Wiederherstellung oder das Zurücksetzen auf eine sichere Version.

Auch Testverfahren betrachten unterschiedliche Teile einer Anwendung:

VerfahrenWas wird betrachtet?Typischer Zeitpunkt oder Zweck
SASTQuellcode oder Binärcode ohne Ausführungfrühe Suche nach Fehlern im Code
DASTlaufende Anwendung von außenVerhalten unter simulierten Angriffen prüfen
IASTlaufende Anwendung mit interner BeobachtungLaufzeitbefunde mit Codekontext verbinden
SCABibliotheken und Drittanbieterkomponentenbekannte Schwachstellen in Abhängigkeiten finden
RASPVorgänge innerhalb der laufenden Anwendungbestimmte Angriffe zur Laufzeit erkennen und gegebenenfalls blockieren
Beispiel

Ein Team möchte eine Webanwendung umfassender prüfen.

  • SAST untersucht den Code früh auf unsichere Muster.
  • SCA prüft die verwendeten Bibliotheken.
  • DAST sendet Testanfragen an die laufende Anwendung.
  • Nach der Bereitstellung überwachen Protokollierung und Laufzeitschutz verdächtiges Verhalten.

Die Verfahren ersetzen einander nicht, weil sie unterschiedliche Beobachtungsebenen haben.

Teste dich
Frage 1 von 3LeichtWelches Verfahren untersucht vor allem Drittanbieterbibliotheken?
Lösung: SCA — Software Composition Analysis erfasst Komponenten und gleicht sie mit bekannten Schwachstellen ab.
Frage 2 von 3MittelEin Test greift eine laufende Webanwendung ohne Zugriff auf ihren Quellcode von außen an. Welches Verfahren passt?
Lösung: DAST — DAST ist ein dynamisches Black-Box-Verfahren für laufende Anwendungen.
Frage 3 von 3SchwerEin SAST-Werkzeug meldet keinen Fehler. Darf das Team daraus schließen, dass die Anwendung sicher ist?
Lösung: Nein, denn Architektur, Laufzeitverhalten, Konfigurationen und Abhängigkeiten brauchen weitere Prüfungen. — Sicherheit entsteht aus mehreren Kontrollen und wiederholten Prüfungen über den gesamten Lebenszyklus.
Wie planst du Sicherheit für eine konkrete Anwendung?

Betrachte eine Anwendung, in der Lernende eigene Lösungen hochladen und Lehrkräfte Rückmeldungen vergeben. Gehe nicht sofort zu einem Werkzeug über, sondern beginne mit Daten, Rollen und möglichen Angriffswegen.

Schritt 1: Schutzbedarf bestimmen

Schützenswert sind unter anderem Konten, hochgeladene Lösungen und Rückmeldungen. Lernende sollen nur ihre eigenen Einreichungen sehen und verändern. Lehrkräfte benötigen weitergehende, aber ebenfalls begrenzte Rechte.

Schritt 2: Bedrohungen und Kontrollen verbinden

Möglicher FehlerPassende KontrollePrüfung
Eingabe verändert eine Datenbankabfrageparametrisierte Abfragenmanipulierte Eingaben in einer Testumgebung ausprobieren
Lernende öffnen fremde Einreichungenserverseitige Autorisierung für jede Ressourcedirekte Aufrufe mit verschiedenen Rollen testen
Veraltete Bibliothek enthält eine bekannte LückeAbhängigkeiten erfassen und aktualisierenSCA und kontrollierter Update-Prozess
Ungewöhnlich viele Zugriffsversuche bleiben unbemerktProtokollierung, Überwachung und Warnungenprüfen, ob Testereignisse erkannt werden

Schritt 3: Ergebnisse bewerten

Ein bestandener Test beweist nicht, dass die gesamte Anwendung sicher ist. Er zeigt nur, dass eine bestimmte Kontrolle unter den geprüften Bedingungen funktioniert hat. Nach Änderungen müssen relevante Prüfungen wiederholt werden.

Gut zu wissen

Fehlermeldungen sollten beim Testen ebenfalls geprüft werden. Sie müssen Nutzenden sinnvoll helfen, dürfen aber keine unnötigen internen Details oder Informationen über fremde Konten und Ressourcen offenlegen.

Teste dich
Frage 1 von 2MittelEin Testkonto mit der Rolle „Lernende“ sendet direkt eine Änderungsanfrage für eine fremde Einreichung. Welches Ergebnis zeigt eine funktionierende Zugriffskontrolle?
Lösung: Die Anwendung verweigert die Änderung unabhängig von der sichtbaren Benutzeroberfläche. — Der Server muss Rolle, Ressource und angeforderte Aktion bei jeder Anfrage prüfen.
Frage 2 von 2SchwerNach einem Bibliotheksupdate funktionieren alle sichtbaren Seiten. Welche zusätzliche Prüfung ist aus Sicherheitssicht sinnvoll?
Lösung: Relevante Sicherheits- und Zugriffstests erneut ausführen und die Abhängigkeit nochmals prüfen — Änderungen können Kontrollen beeinflussen. Wiederholte Tests prüfen, ob Schutzmaßnahmen weiterhin wie vorgesehen funktionieren.
Karteikasten
Karteikasten

Überlege zuerst selbst und drehe die Karte anschließend zum Prüfen um.

Alles auf einen Blick
Mindmap
  • Anwendungssicherheit
    • Schutzziele: Vertraulichkeit, Integrität, Verfügbarkeit
    • Lebenszyklus: Anforderungen, Entwurf, Entwicklung, Test, Betrieb, Wartung
    • Prävention: sichere Architektur, Eingabebehandlung, minimale Rechte
    • Erkennung: SAST, DAST, IAST, SCA, Protokollierung
    • Korrektur: Beheben, Patchen, Wiederherstellen
    • Kontrolle: Maßnahmen wiederholt und unter realistischen Bedingungen prüfen

AppSec folgt damit einer wiederkehrenden Kette: Risiken verstehen, passende Kontrollen einbauen, ihre Funktion prüfen, den Betrieb beobachten und erkannte Probleme beheben.

Abschluss-Check
Teste dich
Frage 1 von 4LeichtWelche Aussage trennt Authentifizierung und Autorisierung richtig?
Lösung: Authentifizierung prüft die Identität; Autorisierung prüft die erlaubten Aktionen. — Eine Anwendung muss nicht nur wissen, wer anfragt, sondern für jede Aktion auch die passende Berechtigung prüfen.
Frage 2 von 4MittelWelche Maßnahmenkombination schützt am direktesten vor einer SQL-Injection und prüft die laufende Anwendung zusätzlich von außen?
Lösung: Parametrisierte Abfragen und DAST — Parametrisierung trennt Daten vom SQL-Befehl. DAST kann anschließend das Verhalten der laufenden Anwendung mit Testeingaben untersuchen.
Frage 3 von 4SchwerEin Team verwendet SAST, findet aber nach der Bereitstellung eine gefährliche Fehlkonfiguration. Welche Schlussfolgerung ist richtig?
Lösung: AppSec braucht mehrere Kontrollen und Prüfungen über den gesamten Lebenszyklus. — Codeanalyse, Konfigurationsprüfung, dynamische Tests, Überwachung und Wartung ergänzen sich.
Frage 4 von 4SchwerEine neue Funktion erlaubt Lehrkräften das Löschen von Einreichungen. Wie prüfst du das Prinzip minimaler Rechte am besten?
Lösung: Du testest für jede Rolle, ob nur die benötigten Aktionen an den erlaubten Ressourcen möglich sind. — Eine belastbare Prüfung umfasst erlaubte und bewusst verbotene Zugriffspfade und wird serverseitig durchgesetzt.

Wenn du bei einer Anwendung Schutzbedarf, Angriffsweg, Kontrolle und Prüfung miteinander verbinden kannst, analysierst du Anwendungssicherheit nicht als Werkzeugliste, sondern als durchgängigen Sicherheitsprozess.

Passend dazu