Vor kurzem wurde mir in einem Beratungsgespräch die Frage gestellt, ob man nach einem Penetrationstest eine Garantie bekommt, dass eine geprüfte Anwendung absolut sicher ist. Die Frage ist natürlich aus der Sicht eines Kunden verständlich. Wer je nach Aufwand vielleicht mehrere Tausend Euro für eine Sicherheitsanalyse ausgibt, erwartet zumindest unterschwellig, dass alle möglichen Schwachstellen identifiziert wurden und eine geprüfte Anwendung 100% sicher ist. Die unbequeme Wahrheit ist leider, dass das nicht der Fall sein kann.
Grundsätzlich gilt, dass nahezu alle durchgeführten Penetrationstests ein Kompromiss aus Testaufwand und Aussagekraft sind. Bei professionellen Pentest-Dienstleistern beinhaltet ein Test mindestens,
- die Prüfung nach einer standardisierten Vorgehensweise, die sich an den Best Practices orientiert
- die Verwendung eines Tool-Sets, um automatisiert auf typische Schwachstellen prüfen zu können
- zusätzlich umfangreiche manuelle Prüfungen
- den Einsatz von zertifizierten Penetrationstestern (eher OSCP & OSCE weniger CISSP / CEH & Co)
- die Durchführung einer Qualitätssicherung
- die Abgabe eines detaillierten Berichts
Sind die genannten Kriterien bei einem Test erfüllt, werden mit ziemlicher Sicherheit:
- alle einfach zu entdeckenden Schwachstellen (low hanging fruits) gefunden
- mindestens allen Angreifern auf dem Niveau Script Kiddy keine Chance mehr gelassen
- mindestens alle unspezifischen automatisierten Angriffe die Grundlage entzogen
- den Aufwand für einen Angreifer auf mindestens den Aufwand erhöht, den der Penetrationstester investiert hat
- eine absolut aussagekräftige Richtung gezeigt, ob ein Zielsystem bzw. eine Zielanwendung grundsätzlich auf professionellem Security-Niveau aufgesetzt bzw. entwickelt wurde
Das ehrliche Zugeständnis, dass unter Umständen ein Angreifer mit einem deutlich höheren Aufwand dennoch eine Schwachstelle finden könnte, ist leider nicht verkaufsfördernd.
Ein höheres Prüfungsniveau, wie z.B. die Entwicklung oder gar den Aufkauf von Zero Day Exploits ist in den allermeisten Fällen leider nicht realistisch. Die Durchführung eines APTs (advanced persistent threat) auf NSA & Co Niveau ist sehr, sehr aufwendig und würde die Kosten eines Penetrationstests in extreme Höhe treiben. Für einen Kunden wäre das ein enorm schlechtes Preis-/Leistungsverhältnis und die finanziellen Ressourcen ließen sich mit Sicherheit sinnvoller in die eigene Sicherheit investieren.
Aber nehmen wir einmal ein, als Pentest-Dienstleister würde man eine 100%-Sicherheitsgarantie geben: Was würde passieren, wenn ein System dennoch kompromittiert werden würde? Wie soll nachgewiesen werden, dass der Penetrationstester etwas übersehen hat? Wie soll nachgewiesen werden, dass der Kunde das System seitdem nicht verändert hat? Wie soll nachgewiesen werden, dass der Kunde eventuell nicht ein Sicherheitsupdate übersehen hat? Wie wird mit dem Problem von Sicherheitslücken in eingesetzten Frameworks oder Bibliotheken umgegangen? Ein einziger Penetrationstest mit einer 100%-Sicherheitsgarantie und man hat als Dienstleister für alle Ewigkeiten unkalkulierbare Rechtsrisiken. Selbst wenn man das Risiko grob abschätzt und im Durchschnitt auf alle Kunden umlegt, würde es die Kosten eines Penetrationstests unverhältnismäßig in die Höhe treiben. Kein Kunde würde das bezahlen wollen. Eine 100%-Sicherheitsgarantie ist leider unrealistisch.
Nichtsdestotrotz werden in den meisten Penetrationstests Sicherheitslücken oder -schwachstellen identifiziert, die das Sicherheitsniveau transparenter machen und Potential zur Verbesserung aufzeigen. In der Praxis sind Pentestberichte mit exakt 0 Findings sehr selten und deuten auf ein extrem hohes Sicherheitsniveau hin. Letztendlich ist für den Kunden wichtig, die genannten Grenzen, aber auch die aufgezeigten Vorteile eines Penetrationsteste zu kennen um die für ihn richtige Entscheidung treffen zu können: Pentest ja oder nein?