Skip to content

Der SDL am Beispiel eines Gästebuchs, Teil 8

Die Demonstration von Microsofts SDL am Beispiel eines PHP-Gästebuchs geht weiter. In der ersten Phase haben Sie sich über die nötigen Grundlagen wie mögliche Schwachstellen und Angriffe informiert, und in der zweiten die nötigen Anforderungen an die Webanwendung festgelegt.

Dann haben ich Ihnen im Rahmen der dritten Phase (Design/Entwurf) erklärt, wie Sie theoretisch ein Bedrohungsmodell erstellen können und wie das Bedrohungsmodell für das Beispiel entwickelt wird. Danach galt es, die dadurch identifizierten Bedrohungen zu minimieren.

Die Bedrohungsmodellierung ist ziemlich aufwendig und unübersichtlich, lässt sich aber zumindest für Webanwendungen vereinfachen. Und dafür gibt es sogar noch eine weitere Möglichkeit. Nachdem ich die kurz beschrieben hatte ging es um Phase 4: Die Implementierung. Und zu der gehört auch die

Sichere Default-Installation und -Konfiguration

Bei der sicheren Default-Installation geht es um Probleme wie die notwendigen Zugriffsrechte für Dateien und Verzeichnisse (Verwenden Sie so geringe Rechte wie möglich) und den Installationsumfang bei mehreren möglichen Konfigurationen (jedes nicht benötigte, aber installierte Skript vergrößert die Angriffsfläche). Auch z.B. das automatische Löschen des Installationsskripts nach erfolgreicher Installation fällt in diesen Bereich.

Bei der sicheren Konfiguration gilt es, den Benutzer eben diese zu erleichtern. Gehen Sie davon aus, dass es keinen Fehler gibt, den nicht doch irgendwann irgendein Benutzer macht.

Soll z.B. ein Bereich der Webanwendung durch die HTTP-Basic-Authentication geschützt werden, müssen Sie dafür sorgen, dass die auch wirklich konfiguriert wird, z.B. indem Ihr Installationsskript das übernimmt. Überlassen Sie diese Aufgabe dem Benutzer, werden mit Sicherheit einige darauf verzichten oder daran scheitern. Wenn dann z.B. über einen dadurch allgemein zugänglichen Administrationsbereich Skripte auf den Server geladen werden können, bekommt Ihre Anwendung die Schuld für die Kompromittierung des Servers. Dass eigentlich der die Anwendung installierende Benutzer die Schuld trägt, wird mit Sicherheit "übersehen" werden!

Das gleiche gilt für die Änderung der Default-Zugangsdaten: Die sollte von der Anwendung bei der Installation erzwungen werden. Wird der Administrator nur dazu aufgefordert, werden einige es nicht tun. Wenn die Anwendung dann durch bekannte Default-Zugangsdaten kompromittiert wurde ist natürlich die Anwendung und damit Sie als deren Entwickler der Schuldige und keinesfalls der Administrator der Anwendung.

Beim Beispiel-Skript des Gästebuchs müssen Sie bei der Default-Installation zum einen darauf achten, dass für den Administrator-Account ein sicheres Passwort vergeben wird. Und zum anderen darauf, dass der Datenbank-Benutzer nur die wirklich nötigen Rechte besitzt.

Phase 5: Überprüfen Sie alles!

Jetzt muss Ihre Webanwendung beweisen, dass sie sicher ist. Prüfen Sie für jeden Parameter und jedes Skript, ob wirklich alle ermittelten Angriffe abgefangen werden. Führen Sie die Tests sowohl manuell, d.h. mit bekannten Testmustern, durch, als auch durch ein oder mehrere Tool(s).

Testen Sie die Webanwendung sowohl in der Default-Konfiguration als auch in einer unsicheren Konfiguration, sofern die möglich ist. Damit prüfen sie quasi das Worst-Case-Szenario.

Und werfen Sie auch noch einmal einen Blick auf die Angriffsfläche: Sind evtl. während der Implementierung neue Angriffspunkte entstanden? Wenn ja: Sind sie auf das nötigste reduziert, und sind alle ausreichend geschützt?

Beim Beispiel-Gästebuch ist da nicht viel zu tun: Gehen Sie die STRIDE-Tabellen durch und prüfen Sie, dass die gefundenen Bedrohungen nun keine mehr sind. Da keine neuen Funktionen dazu gekommen sind kann es auch keine neuen Angriffspunkte geben.

Gefundene Schwachstellen müssen Sie natürlich beheben. Wenn Sie keine Schwachstellen mehr finden ist die Anwendung bereit zur Auslieferung und Sie gelangen in Phase 6. Und damit geht es in der nächsten Folge weiter.

Carsten Eilers

>
        </div>
                
        <footer class= Kategorien: Grundlagen

Trackbacks

Keine Trackbacks