Webanwendungen sind meist löchrig wie ein Schweizer Käse. Relativ simple Attacken wie Cross Site Scripting oder SQL-Injection bringen so manchen Shop oder manches Portal in Bedrängnis. Kein Wunder also, dass sich bei rund 80 Prozent der getesteten Internetseiten binnen 30 Minuten mindestens ein Schlupfloch finden lässt. Und die wachsende Anzahl an Cracking Tools mit automatisierten Angriffsmöglichkeiten bietet sogar für unerfahrene Script-Kiddies die Möglichkeit, kleine Schwächen in Webanwendungen auszunutzen.
Trotzdem bauen die meisten Firmen zuerst eine Anwendung und fragen oft erst hinterher nach der Sicherheit. Entwickler sollten beim Programmieren zwar auf korrekte Ein- und Ausgabeprüfung achten sowie die Zugriffsberechtigungen spezifizieren oder einschränken, doch lassen sich hochgesteckte Vorgaben in der Praxis selten durchgängig realisieren. Regelmäßige Prüfung der Programmiertechnik sowie Designchecks sind bisher nur selten Usus.
Auch mangelt es an bedarfsgerechten, herstellerunabhängigen und umfassenden Security-Schulungen zum Thema Webapplikationen, die zudem Theorie und Praxis sinnvoll verzahnen. Nur wenige Anbieter wenden sich bisher mit gezielten Angeboten an die Entwickler. Das Terrain gilt als ausgesprochen sensibel. Oft führen kurzfristig beauftragte Teams aufgrund kritischer Vorgänge quasi posthum ad hoc-Penetrationstests auf Webapplikationen im Beisein des Kunden durch, die das eine oder andere "Aha-Erlebnis" für die Verantwortlichen nach sich ziehen.
Im Dschungel der Weiterbildungen zur Web Application Security ist zudem der Grat zwischen zu hochspezialisiertem Expertentum und unnützem Halbwissen schmal. Deshalb raten Experten das Thema von der grundsätzlichen Seite anzugehen: Wichtig ist, dass die Entwickler die Basistechnologien richtig begreifen, wie etwa die Funktionsweise relationaler Oracle-Datenbanken.
Daneben gilt es gezieltes Wissen aufzubauen, etwa über sichere Java- oder PHP-Anwendungen. Ein festgelegtes und strukturiertes Vorgehen erspart unnötige Arbeit. Und durch sorgfältige Planung, Auswertung der Erfahrungen sowie wieder verwendbare Komponenten kann das Unternehmen sogar Geld einsparen. Fakt ist aber auch, dass Firewall, Virenschutz und Intrusion Detection allein nicht ausreichen.
Denn der Eindringling schlüpft in die Rolle des Programmierers und nutzt nicht erwartete Eingaben zur Manipulation von Daten oder zum Einschleusen von gefährlichem Code. Etwa wird in das Eingabefeld einer Maske ein Java-Skript eingegeben, welches dann oft tatsächlich ausgeführt wird und so eine Hintertür in die Applikation öffnet. Diese Anwendungen stellen häufig aber nicht nur die jeweilige Webpräsenz des Unternehmens dar, sondern sind untrennbar mit Backend- und Datenbanksystemen verbunden.
Zehn Tipps für den Schutz von Webapplikationen
- Keinen Eingabedaten vertrauen: Alle Webeingaben müssen serverseitig überprüft werden, etwa Typ, Länge und Format. Gefährliche Daten werden zurückgewiesen, ignoriert, gelöscht oder ersetzt.
- Fehlermeldungen möglichst wenig aussagekräftig: Fehlermeldungen moderner Entwicklungsbibliotheken sind hilfreich in der Projektphase aber auch für Angreifer eine beliebte Infoquelle.
- Den Fehlerfall einplanen: Komplexe Software enthält immer Fehler. Gute Fehlerbehandlung belässt die Anwendung in einem definierten Zustand und gestattet keine unvorhergesehenen Aktionen.
- Sicherheitsrelevante Aktionen protokollieren, etwa Login, Zugriff auf sensible Daten, fehlgeschlagene Zugriffsversuche.
- Zentralen Zugang zur Applikation schaffen, etwa über eine zentrale Authentifizierungsklasse, alle anderen Eingänge schließen.
- Sicherheitsrelevante Daten schützen und nicht auf Client-Seite speichern; wo unumgänglich, verschlüsselt und signiert.
- Sichere Authentifizierung: Starke Passwörter fordern, Authentifizierung nur über SSL-Verbindungen, keine Übertragung und Speicherung von Passworten.
- Minimale Privilegien: Alle nicht benötigten Admin-Konten entfernen, auf Ressourcen nur mit ausreichenden, aber nicht höheren Privilegien zugreifen, Vorsicht bei der Benutzerauthentifizierung.
- Mehrere Verteidigungslinien einsetzen, nicht auf einen Schutzmechanismus verlassen.
- Kryptoverfahren zur Verschlüsselung von Daten und Verbindungen nutzen: Keine eigenen Verschlüsselungsalgorithmen schreiben, immer die größtmögliche Schlüsselstärke nutzen, keine Schlüssel oder sonstigen Geheimnisse im Programmcode speichern.




1/2012
8/2011
7/2011


Christian Henner-Fehr schreibt als freier Autor für den MONITOR und arbeitet als Trainer und Berater in den Bereichen Projektmanagement und Kommunikation. Sein Interesse gilt dem Web 2.0 und den Einsatzmöglichkeiten von Social Media in Organisationen und Unternehmen. 