Bild 2: Ein Screenshot aus CodeSonar, der eine Schwachstelle zum Einschleusen von Befehlen zeigt, die vorsätzlich und böswillig in einen IRC-Server eingefügt wurde.
(Bild: GrammaTech)
Das Testen auf Schwachstellen dieser Art ist unter Umständen sehr schwierig. Sogar Tests, die eine sehr hohe Codeabdeckung erreichen, können bei der Aufdeckung dieser Probleme versagen. Für gewöhnlich sind Testfälle so aufgebaut, dass die Funktionalität unter normalen Umständen validiert wird. Bei einem Test auf Sicherheitslücken muss sich der Tester in die Gedankengänge eines zielstrebigen und raffinierten Angreifers versetzen.
Techniken wie Fuzz Testing (http://en.wikipedia.org/wiki/Fuzz_testing) können eine nützliche Hilfe bei der Suche nach bestimmten Fehlerarten sein, über die Code eingeschleust wird, beispielsweise Orte, an denen Daten als Format-Strings zum Einsatz kommen. Allerdings ist diese Technik normalerweise zu stark zufallsabhängig und daher nicht zuverlässig genug.
Eine statische Analyse kann ein sehr effektives Mittel sein, um Schwachstellen für Code-Injektion aufzuspüren. Die Werkzeuge der frühen Generationen der statischen Analyse (wie lint und seine direkten Nachfolger) bieten beim Auffinden dieser Schwachstellen nur eine schwache Leistung, da eine pfadsensitive Analyse des gesamten Programms erfolgen muss, um die gewünschte Genauigkeit zu erreichen.
Viel effektiver arbeiten moderne Tools zur statischen Analyse, die in den letzten Jahren auf den Markt kamen, denn die Anbieter dieser Werkzeuge haben viel Erfahrung darüber gesammelt, welche Schnittstellen gefährlich sind, und sie haben einen Wissensbestand aufgebaut, wonach zu suchen ist, und wie dies effektiv passieren kann, ohne den Benutzer in falschen positiven Resultaten zu ertränken.
Statische Analyse am praktischen Beispiel
Die Schlüsseltechnik, die wir bei GrammaTech dafür einsetzen, wird als Taint Analysis oder mitunter als Analyse gefährlicher Informationsflüsse bezeichnet. Diese Werkzeuge arbeiten so, dass sie zuerst die Quellen potenziell gefährlicher Daten identifizieren und danach verfolgen, wie diese Informationen durch den Code an Orte fließen, wo sie ohne vorherige Gültigkeitsprüfung verwendet werden. Die besten Werkzeuge ermöglichen außerdem eine Visualisierung des Flusses.
Wie effektiv das sein kann, zeigt folgendes Beispiel: In einem Programm zur Implementierung eines IRC-Servers (für "Internet Relay Chat") wurde eine Command Injection-Schwachstelle gefunden. Sie lag an einem Ort, an dem Daten ohne Unbedenklichkeitsprüfung aus dem Netzwerk als Eingabe an die Funktion system() übergeben wurden. Im links eingefügten Screenshot von CodeSonar (dem Werkzeug für statische Analysen von GrammaTech) ist dies abgebildet: Der Aufruf von system() war in diesem Fall zwei Ebenen tiefer im Text eines Makros versteckt, dessen Name nahe legte, dass es für eine ungefährliche Aktivitätsprotokollierung zuständig sei.
In der erweiterten Darstellung der Makros wurde jedoch klar, dass dies eine böswillig und vorsätzlich eingebaute Hintertür mit der Tarnung als etwas scheinbar Harmloses war. Käme sie zum Einsatz, hätte diese Hintertür jedem, der den Code kennt die Möglichkeit geboten, Code auf dem Host-Computer mit den gleichen Rechten wie der Server auszuführen.
Code-Injection-Schwachstellen stellen gefährliche Sicherheitsprobleme dar, denn sie können es einem Angreifer ermöglichen, das Programm zu stören und mitunter sogar die Kontrolle über den Computer zu übernehmen. Entwickler, die sicherstellen wollen, dass die Nutzung ihres Embedded-Codes in einer potenziell feindlichen Umgebung sicher ist, sollten alles tun, um die Risiken schon in einem frühen Stadium des Entwicklungszyklus auszuschließen. Weil diese mit traditionellen Techniken eventuell schwer zu finden sind, empfehlen sich strenge Code-Prüfungen und der Einsatz hochentwickelter Tools zur statischen Analyse.
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel Communications Group GmbH & Co. KG, Max-Planckstr. 7-9, 97082 Würzburg einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von redaktionellen Newslettern nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung, Abschnitt Redaktionelle Newsletter.
* Dr. Paul Anderson ist Chief Technology Officer (CTO) bei GrammaTech.