Software- und Anwendungssicherheit
Software- und Anwendungssicherheit befasst sich mit den Schwachstellen, die sich aus der Art und Weise ergeben, wie Programme geschrieben und bereitgestellt werden, sowie mit den Methoden, diese zu finden, zu verhindern und auszunutzen, wobei anerkannt wird, dass die meisten Sicherheitsverletzungen eher auf fehlerhafte Software als auf fehlerhafte Kryptographie zurückzuführen sind.
Definition
Software- und Anwendungssicherheit ist das Fachgebiet, das sich mit der Identifizierung, Prävention und Minderung von Sicherheitsschwächen in Software befasst und damit, wie Angreifer diese entdecken und ausnutzen.
Scope
Dieser Bereich umfasst die Sicherheit der Software selbst: Klassen von Schwachstellen (Speicherfehler, Injektionen, Logikfehler) und deren Ausnutzung, Praktiken für die Entwicklung sicherer Software (sicheres Design, Code-Review, Tests, Fuzzing), die Analyse bösartiger Software und die spezifischen Belange von Webanwendungen. Er behandelt sowohl die offensive als auch die defensive Perspektive. Ausgenommen sind kryptographische Algorithmen sowie die Netzwerk- und Zugriffssteuerungsinfrastruktur, die in verwandten Bereichen behandelt werden.
Sub-topics
Core questions
- Welche Klassen von Programmierfehlern führen zu ausnutzbaren Schwachstellen?
- Wie verwandeln Angreifer eine Schwachstelle in Codeausführung oder Datendiebstahl?
- Wie kann Software von Anfang an sicher entworfen, geschrieben und getestet werden?
- Wie wird bösartige Software analysiert und abgewehrt?
- Warum treten trotz jahrzehntelanger Kenntnis immer wieder dieselben Schwachstellenklassen auf?
Key concepts
- Schwachstellenklassen
- Speichersicherheit
- Pufferüberlauf
- Injektionsangriffe
- Ausnutzung und Gegenmaßnahmen
- Lebenszyklus der sicheren Entwicklung
- statische und dynamische Analyse
- Fuzzing
- Malware-Analyse
Key theories
- Speichersicherheit und Ausnutzung
- Sprachen ohne Speichersicherheit ermöglichen Fehler wie Pufferüberläufe, die es Angreifern erlauben, Kontrolldaten zu überschreiben und die Ausführung zu kapern; das Verständnis der Ausnutzung (und von Gegenmaßnahmen wie ASLR, DEP, Stack Canaries) ist zentral für die Softwaresicherheit.
- Sicherheit von Anfang an einbauen
- Sicherheit ist am effektivsten, wenn sie während des gesamten Entwicklungszyklus – durch Bedrohungsmodellierung, sichere Codierung, Code-Reviews und Tests – integriert wird, anstatt nachträglich hinzugefügt zu werden, wodurch Fehler frühzeitig behoben werden können, wo sie kostengünstiger zu beheben sind.
Clinical relevance
Software-Schwachstellen sind die Hauptursache für die meisten realen Sicherheitsvorfälle: Speicherfehler in C/C++ sind die Grundlage eines großen Teils kritischer Schwachstellen, Injektionsfehler kompromittieren Datenbanken, und Supply-Chain-Angriffe (SolarWinds, Log4Shell) verbreiten sich über Abhängigkeiten. Das Feld prägt direkt, wie Betriebssysteme, Browser und Anwendungen gehärtet werden und wie die Offenlegung von Schwachstellen, Patching und Bug-Bounty-Ökosysteme funktionieren.
Evidence & guidelines
Das Feld ist um gemeinsame Wissensbasen herum organisiert: Die OWASP Top Ten und der CWE-Katalog erfassen gängige Schwachstellen, das CVE/NVD-System verfolgt offengelegte Schwachstellen mit CVSS-Schweregraden, und das MITRE ATT&CK-Framework bildet Angreifertechniken ab. Frameworks für sichere Entwicklung (Microsoft SDL, NIST SSDF / SP 800-218) und speichersichere Sprachen (Rust) stellen aktuelle Best-Practice-Leitlinien dar.
History
Softwaresicherheit entstand, als vernetzte Systeme Programme für entfernte Angreifer zugänglich machten. Der Morris-Wurm von 1988 nutzte einen Pufferüberlauf aus; Aleph Ones 'Smashing the Stack' von 1996 popularisierte Ausnutzungstechniken und führte zu Gegenmaßnahmen (Stack Canaries, nicht ausführbarer Speicher, ASLR). Die 2000er Jahre formalisierten die sichere Entwicklung (Microsofts SDL nach dem Trustworthy Computing Memo von 2002), und wiederkehrende Krisen – Heartbleed, Log4Shell – halten das Feld zentral und treiben nun die Einführung speichersicherer Sprachen voran.
Key figures
- Gary McGraw
- Ross Anderson
- Elias Levy (Aleph One)
- Dan Geer
Related topics
Seminal works
- anderson2020
- mcgraw2006
- aleph1996
Frequently asked questions
- Warum treten immer wieder dieselben Schwachstellen (wie Pufferüberläufe) auf?
- Ein Großteil kritischer Software ist in speicherunsicheren Sprachen geschrieben, Termindruck und Komplexität begünstigen Fehler, und alter Code bleibt jahrzehntelang bestehen. Selbst bei Bewusstsein kann eine einzige übersehene Prüfung ausnutzbar sein, weshalb das Feld zunehmend speichersichere Sprachen und automatisierte Analyse bevorzugt.
- Ist Anwendungssicherheit von Kryptographie getrennt?
- Sie ergänzen sich. Kryptographie schützt Daten bei korrekter Anwendung, aber Anwendungen werden in der Regel durch Logikfehler, Injektionen oder Speicherfehler kompromittiert, die die Kryptographie vollständig umgehen. Eine starke Softwaresicherheit ist erforderlich, damit kryptographische Schutzmaßnahmen tatsächlich wirksam sind.