Software-Schwachstellen sind ein erhebliches Problem in der Cybersicherheit. Sie ermöglichen Angriffe auf Softwareprodukte, und wenn diese Produkte mit ansonsten sicheren Netzwerken verbunden sind, können sie Hackern einen Einstiegspunkt bieten.
Alle professionellen Softwareprodukte werden vor der Veröffentlichung gründlich getestet. Leider treten Sicherheitslücken immer noch häufig auf. Eine Möglichkeit, zusätzliche Schwachstellen zu finden, ist die Verwendung einer Software-Testtechnik, die als Fuzzing bezeichnet wird.
Was ist Fuzzing und wie funktioniert es?
Was ist Fuzzing?
Fuzzing ist eine automatisierte Softwaretesttechnik, die versucht, Schwachstellen mithilfe zufälliger Eingaben zu finden.
Software verhält sich oft unvorhersehbar, wenn der Benutzer eine andere Eingabe als die angeforderte eingibt. Fuzzing ist die Praxis, große Mengen unerwarteter Eingaben einzugeben und aufzuzeichnen, was passiert. Die Idee ist, dass der Benutzer die Software dann überwachen und feststellen kann, ob Schwachstellen vorhanden sind oder nicht.
Fuzzing wird zum Testen von Softwareprodukten und von Sicherheitsexperten verwendet, um festzustellen, ob ein Netzwerk sicher ist. Es wird auch von Hackern verwendet, die Fuzzing betreiben, um Schwachstellen zu finden, die sie selbst ausnutzen können.
Die durch Fuzzing entdeckten Schwachstellen sind sehr unterschiedlich. Eine unerwartete Eingabe kann dazu führen, dass die Software einfach abstürzt. Es kann aber auch private Informationen zurückgeben oder dem Benutzer den Zugriff auf Teile der Software ermöglichen, die sonst gesperrt wären.
Was sind die Vorteile von Fuzzing?
Fuzzing ist nur eine von vielen Möglichkeiten, Softwareprodukte auf Schwachstellen zu testen. Es ist beliebt, weil:
- Fuzzing ist vollständig automatisiert. Sobald ein Fuzzing-Programm eingerichtet ist, kann es weiterhin ohne menschliches Zutun nach Schwachstellen suchen.
- Fuzzing kann Schwachstellen finden, die andere Software-Testtechniken nicht finden. Aus diesem Grund wird es oft zusätzlich zu manuellen Techniken verwendet.
- Fuzzing wird häufig von Hackern verwendet Finden Sie Zero-Day-Schwachstellen. Die Verwendung der gleichen Techniken wie Hacker ermöglicht es Entwicklern, Zero-Day-Schwachstellen zu finden, bevor sie es tun.
Wie funktioniert Fuzzing?
Ein zum Fuzzen verwendetes Werkzeug besteht typischerweise aus drei Komponenten. Sie werden oft als Dichter, Kurier und Orakel bezeichnet.
Der Poet
Der Poet startet den Prozess und ist für die Generierung eines Testfalls verantwortlich. Ein Testfall ist eine lange Liste potenzieller Eingaben.
Der Kurier
Der Kurier fügt alle zufälligen Eingaben in die Zielsoftware ein. Fuzzer sind dafür ausgelegt, dies automatisch zu tun, wodurch große Mengen von Eingaben in großen Mengen getestet werden können.
Das Orakel
Das Orakel prüft, ob eine der Eingaben dazu führt, dass die Software etwas anderes tut, als es vorgesehen ist. Wenn Fuzzing für legitime Zwecke durchgeführt wird, kann das Verhalten dann repliziert und behoben werden. Oder wenn Fuzzing von einem Hacker durchgeführt wird und das unerwartete Verhalten nützlich ist, kann es für böswillige Zwecke verwendet werden.
Wie verwenden Angreifer Fuzzing?
Fuzzing ist eine beliebte Technik unter Hackern, da es ihnen ermöglicht, Schwachstellen in Software ohne Zugriff auf den Quellcode zu finden. Da das Fuzzing automatisiert ist, ist es auch einfach durchzuführen. Wenn ein Hacker eine Schwachstelle entdeckt, kann er möglicherweise die folgenden Angriffe ausführen.
DDoS-Angriffe
Stellt das Fuzzing fest, dass bestimmte Eingaben eine lange Verarbeitungszeit benötigen, kann diese Information zum Starten eines DDoS-Angriffs verwendet werden. Ein DDoS-Angriff beinhaltet das Senden so vieler Anfragen an ein System, dass es nicht mehr funktioniert. Durch Fuzzing können Anforderungen so angepasst werden, dass sie die meisten Systemressourcen für die Beantwortung benötigen.
SQL-Injektion
Ein SQL-Injection-Angriff ist, wenn böswillige SQL-Anweisungen an eine Anwendung gesendet werden. Wenn diese Anweisungen nicht ordnungsgemäß bereinigt werden, können sie einem Angreifer die Interaktion mit der Datenbank ermöglichen. Dies kann es ihnen ermöglichen, Daten zu stehlen oder zu modifizieren. Fuzzing ist ein effektives Werkzeug, um große Mengen von SQL-Anweisungen auszuprobieren und festzustellen, ob eine positive Antwort erzielt wird.
Pufferüberlauf
Ein Pufferüberlaufangriff ist, wenn dem Puffer eines Programms mehr Daten hinzugefügt werden, als es verarbeiten kann. In diesem Szenario kann ein Hacker dieses Programm dazu bringen, bösartigen Code auszuführen. Dies kann verwendet werden, um Daten zu stehlen oder sich unbefugten Zugriff zu verschaffen. Fuzzing wird verwendet, um Eingaben zu finden, die einen Pufferüberlauf verursachen können.
Arten von Fuzzing
Fuzzing-Tools können sowohl danach klassifiziert werden, wie Testfälle generiert werden, als auch danach, wie viel über das System bekannt ist.
Dumm vs. Clever
Dumb Fuzzing fügt einfach große Mengen zufälliger Eingaben hinzu. Es wählt keine Eingaben aus, die am wahrscheinlichsten von der Anwendung akzeptiert werden. Dies erleichtert die Implementierung, ohne etwas über die Software zu wissen; es ist jedoch auch sehr ineffizient, da die meisten Eingaben zurückgewiesen werden.
Intelligentes Fuzzing generiert Eingaben, die die Anwendung wahrscheinlich akzeptiert. Es erfordert, dass der Benutzer versteht, welches Eingabeformat akzeptabel ist, und dann große Mengen an Eingaben innerhalb dieses Formats generiert. Smart Fuzzing erfordert mehr Aufwand und Produktkenntnisse in der Implementierung, ist aber deutlich effizienter.
Mutation vs. Generationengerecht
Mutations-Fuzzer nehmen eine Eingabe, die zuvor akzeptiert wurde, und nehmen geringfügige Änderungen daran vor. Dadurch können Eingaben generiert werden, die ohne Kenntnis des akzeptierten Formats wahrscheinlich akzeptiert werden.
Generations-Fuzzer erstellen völlig neue Eingaben basierend auf dem, was über das akzeptierte Format bekannt ist.
Weiße Box vs. Flugschreiber
Black-Box-Fuzzing wird ohne Informationen über die getestete Anwendung verwendet. Es ist weniger effektiv als White-Box-Fuzzing, kann aber auf jede Anwendung ohne Zugriff auf den Quellcode angewendet werden. Dies macht es bei Hackern beliebt.
White-Box-Fuzzing verwendet Informationen über die getestete Anwendung, um Eingaben zu erstellen, die höchstwahrscheinlich akzeptiert werden und Schwachstellen erzeugen. Es wird hauptsächlich von Softwareentwicklern verwendet, da es effektiver ist als Black-Box-Fuzzing.
Fuzzing ist eine leistungsstarke Methode zum Testen von Software, die von Softwareentwicklern, Sicherheitsexperten und Hackern verwendet wird. Die Implementierung erfordert nur minimalen Aufwand und ist in der Lage, Schwachstellen zu finden, die andere Softwaretesttechniken nicht finden.
Unter Sicherheitsgesichtspunkten ist es besonders wichtig, da es häufig verwendet wird, um Zero-Day-Schwachstellen zu entdecken. Diese Schwachstellen können entweder von Sicherheitsexperten entdeckt und behoben oder von Hackern entdeckt und ausgenutzt werden.