Eingabevalidierung: Immunität gegen Webangriffe
Von Parasoft
29. September 2011
3 min lesen
Von Arthur Hicken - Evangelist / Lösungsarchitekt bei Parasoft
Stellen Sie sich für eine Sekunde vor, Sie stehen vor einer tödlichen Pandemie. Sie haben zwei Möglichkeiten:
- Option A: Versuchen Sie, jedes Symptom zu identifizieren und zu behandeln, als das sich die Krankheit manifestieren könnte.
- Option B: Nehmen Sie ein neues Gesundheitsprogramm an, das garantiert, dass Sie gegen jede Infektion vollständig immun sind.
Die Wahl scheint hier offensichtlich. Viele Unternehmen verwenden jedoch das Web-Sicherheitsäquivalent von „Option A“, um ihre Websites angesichts der jüngsten Hackerangriffe (auf Websites wie Sega, Sony, PBS, US-Senat, CIA und FBI) zu sichern und andere Regierungsorganisationen).
Ein Ausschlag von Injektionen
Die meisten dieser Angriffe wurden als eine Art von Injektionsangriff eingestuft: SQL-Injektion, Lizamoon-Masseninjektionen und andere Mesh-Injektionen, von denen berichtet wird, dass sie bereits über 30,000 Stellen infiltriert haben. Angesichts der Tatsache, dass diese Angriffe bereits schwerwiegende finanzielle Auswirkungen und eine deutliche Verlegenheit für die betroffenen Unternehmen verursacht haben, ist es nicht verwunderlich, dass viele Anbieter von Sicherheitstools versuchen, Scanner als niedrig hängende Frucht zu vermarkten… und dass so viele Unternehmen nach dieser verlockenden Option greifen.
Leider habe ich festgestellt, dass dieser Ansatz ebenso prekär wie üblich ist. Es gibt eine nahezu unbegrenzte Anzahl von Pfaden durch eine einfache Website. Um sicherzugehen, dass alle diese Pfade unempfindlich gegen Angriffe sind, benötigen Sie ein Tool, um jeden möglichen Pfad zu identifizieren und anschließend ausführlich zu testen, ob jeder Pfad frei von allen Schwachstellen ist, die zum Starten eines Angriffs ausgenutzt werden könnten (einschließlich möglicherweise nicht vorhandener Angriffsvarianten) noch erkannt). Das ist einfach nicht machbar. Selbst eine 100% ige Abdeckung des Quellcodes mit einem Tool, das nach den neuesten und größten Sicherheitslücken sucht, ist keine Garantie dafür, dass die Website Ihres Unternehmens nicht das nächste Opfer des aktuellen Regimes der „Hactivists“ ist.
Bauen Sie Sicherheit in Ihre Anwendung ein
Anstatt die Daumen zu drücken und mit diesem reaktiven Ansatz zum Beseitigen von Schwachstellen das Beste zu hoffen, versuchen Sie einen proaktiven Ansatz, der nachweislich alle aktuellen und zukünftigen Arten von Injection-Angriffen verhindert: Verwenden Sie die Eingabevalidierung, um die Sicherheit einzubauen. Die Eingabevalidierung umfasst die Gewährleistung, dass Alle Ihre Eingabemethoden sind in eine Validierungsmethode eingeschlossen, so dass manipulierte Benutzereingaben die Anwendungsschicht oder Datenbankschicht nicht erreichen können, die ausgenutzt werden können, um auf Informationen zuzugreifen, Inhalte und Kontrollflüsse zu ändern oder Ihre Partner und Kunden als Teil einer Masse zu infizieren Ineinandergreifendes Schema. Wenn jede Eingabe sofort nach ihrem Eingang ordnungsgemäß validiert wird, müssen Sie sich keine Gedanken darüber machen, wie, wann oder wo diese Benutzereingabe verwendet wird.
So führen Sie eine Eingabevalidierung durch
Der Ansatz zur Eingabevalidierung erfordert einige Arbeit: Sie müssen bestimmte Änderungen an Ihrem Code vornehmen. Dies ist jedoch eine relativ schmerzlose Praxis. Wenn Sie eine kleine Änderung vornehmen - gemäß den Namenskonventionen für Validierungsmethoden -, können Sie automatisch jede Instanz einer fehlerhaften Eingabevalidierung identifizieren, die behoben werden muss.
Die Überprüfung der Eingabevalidierung erfolgt normalerweise durch using regelbasierte statische Codeanalyse Identifizieren eines Methodenaufrufs, der gefährliche Daten zurückgibt, die nicht als Parameter für Aufrufe von Validierungsmethoden übergeben werden, sowie Identifizieren von Fällen, in denen fehlerhafte Daten an die Methoden übergeben werden. Wenn Sie eine Eingabevalidierungsregel durch regelbasierte statische Analyse erzwingen - indem Sie jede Instanz finden und beheben, in der Eingaben nicht ordnungsgemäß validiert werden -, können Sie sicherstellen, dass Injektionsangriffe nicht erfolgreich sind. Angreifer versuchen es möglicherweise erneut, aber wenn Sie Ihren Code auf die empfohlene Weise ändern, haben Sie im Wesentlichen einen Ablenkungsschutz generiert, der verhindert, dass sie Schaden anrichten, unabhängig davon, wie der Angriff gestartet wird.
Verwenden der statischen Datenflussanalyse
Wenn Sie auch über eine statische Datenflussanalyse verfügen, schlage ich vor, dass Sie sie verwenden, um zu überprüfen, ob Ihr Eingabevalidierungsprozess ordnungsgemäß befolgt wird. Wenn Sie darauf bedacht sind, jede Eingabe zu validieren, sollten hier keine Probleme gemeldet werden, da es unmöglich ist, dass ein Pfad zu einer Injektion führt. Wenn die Datenflussanalyse aus irgendeinem Grund einen potenziellen Pfad zu einer Sicherheitslücke aufdeckt, beheben Sie nicht einfach dieses spezifische Problem und fahren Sie fort! Nutzen Sie dies als Chance, Ihren Prozess zu verbessern. Finden Sie heraus, wie dieser Codebereich Ihren Eingabevalidierungsprozess umgangen hat und was Sie tun können, um den Eingabevalidierungsprozess von diesem Punkt an kugelsicher zu machen.
***
Laden Sie das eBook Foundations of Secure Application Development herunter, um zu erfahren, warum es riskant und ineffizient ist, sich der Sicherheit als Fehlersuche zu nähern, und erklären Sie dann, wie Sie Ihre Web-Apps immun gegen Angriffe machen können.
Bildquelle: Sarah G…