Sicherheitslücken basieren auf Fehlern. Fehler lassen sich nicht verhindern. Ergo lassen sich Sicherheitslücken nicht verhindern. Man kann sie aber eindämmen. Dazu gibt es hauptsächlich drei Mittel:
- Verunmöglichen von bestimmten Fehlern durch entsprechendes Design der Programmiersprache.
- automatisierte Kontrollen
- manuelle Kontrollen
Lösung 1 hat den Nachteil, das sie die Flexibilität der Programmiersprache einschränkt. Wenn man bedenkt, das C und C-ariges C++ nach wie vor die beliebtesten Sprachen sind, kann man davon ausgehen, dass diese Lösung sich auf absehbare Zeit nicht durchsetzen wird.
Lösung 2 hat den Nachteil, das für die Kontrollen Rechenzeit verbraten wird. Das Programm wird also langsamer. Trotzdem gewinnt diese Lösung an Boden. Das PHP-Hardening geht in diese Richtung.
Lösung 3 hat den Nachteil, dass sie nicht funktioniert. Genauso, wie sich Fehler nicht verhindern lassen, lässt sich nicht verhindern, dass Fehler unentdeckt bleiben. Mit intensiven, manuellen Kontrollen (aka Auditing) kann man zwar tatsächlich die Fehlerzahl deutlich reduzieren, aber an die Sicherheit der anderen Lösungen kommt man nicht annähernd heran.
--
Linux ist eine Turboprop. HURD ist ein Düsenjetprototyp, der seinen Heimatflughafen nie verlassen hat.
|