So nutzen Sie KI für Softwareentwicklung und Cybersicherheit
30. August 2023
0 Min. LesezeitWir haben erlebt, wie sich Technologie in rasantem Tempo weiterentwickeln kann. KI hat sich dabei als revolutionäre Kraft und zugleich als faszinierendes Rätsel erwiesen. Ganz gleich, ob Sie als erfahrene Entwicklerin oder erfahrener Entwickler Ihren Werkzeugkasten erweitern möchten oder sich als Security-Begeisterte oder -Begeisterter mehr Klarheit über KI verschaffen wollen: Der Versuch, dieses dynamische Feld zu durchdringen, kann gleichermaßen mitreißend und überwältigend sein.
Dieser Blogbeitrag ist Ihr Wegweiser durch das KI-Labyrinth. Er soll Entwicklerinnen, Entwicklern und Security-Interessierten die nötigen Werkzeuge an die Hand geben, um nicht nur die grundlegenden Konzepte zu verstehen, sondern auch sinnvolle Gespräche anzustoßen und den Weg für eine vertiefte Auseinandersetzung zu ebnen. Wir gehen von oben nach unten vor: Zunächst beleuchten wir, auf welche KI-Bereiche Sie sich konzentrieren sollten, erklären die Begrifflichkeiten und zeigen Ansatzpunkte auf, die eine genauere Betrachtung wert sind.
KI-Kategorien in der Entwicklung
Im Gespräch mit vielen Menschen über KI habe ich festgestellt, dass sich Gedanken zu KI-Funktionen und -Technologien gut ordnen lassen, wenn man sie in drei Kategorien einteilt:
KI-gestützte Entwicklung – Entwicklung, bei der generative KI beim Schreiben, Überprüfen und Dokumentieren von Code hilft.
KI-gestützte Anwendungen – KI-Funktionen, die einer Anwendung hinzugefügt werden, zum Beispiel ein Chatbot.
KI-gestützte Tools – Tools, die integrierte KI nutzen, um ihre eigene Effektivität und die damit verbundenen Prozesse zu steigern.
In diesem Beitrag konzentrieren wir uns auf die KI-gestützte Entwicklung. Auf die anderen Bereiche gehen wir in künftigen Blogbeiträgen ein – bleiben Sie also dran!
Weitere Begriffe, die Sie kennen sollten
Sehen wir uns weitere Begriffe an.
Grundlegende KI-Konzepte
Künstliche Intelligenz (KI) – Die Simulation menschlicher Denkprozesse durch Maschinen. Dadurch können sie aus Erfahrungen lernen, sich an neue Informationen anpassen und Aufgaben ausführen, für die üblicherweise menschliche Intelligenz erforderlich ist.
Verarbeitung natürlicher Sprache (NLP) – Der Bereich der KI, der darauf abzielt, Computern das Verstehen, Interpretieren und Erzeugen menschlicher Sprache zu ermöglichen.
Maschinelles Lernen (ML) – Ein Teilgebiet der KI, das es Systemen ermöglicht, ihre Leistung bei einer bestimmten Aufgabe durch das Verarbeiten von Daten zu verbessern – ohne explizit dafür programmiert zu sein.
Neuronale Netze – Rechenmodelle, die von Aufbau und Funktionsweise des menschlichen Gehirns inspiriert sind und Muster sowie Zusammenhänge in Daten erlernen können.
Sprache und Textverständnis:
LLM (Large Language Model) – Eine Art künstliches neuronales Netz, das mit einer enormen Menge an Textdaten trainiert wurde. Es kann dadurch menschenähnliche Texte erzeugen und Sprache bis zu einem gewissen Grad verstehen.
Generative Pre-trained Transformer (GPT) – Eine fortschrittliche Architektur neuronaler Netze, die anhand eines umfangreichen Sprachtrainings zusammenhängende, menschenähnliche Texte erzeugt.
Chatbot – Eine KI-gestützte Software, die automatisierte Gespräche mit Nutzerinnen und Nutzern führt. Sie nutzt die Verarbeitung natürlicher Sprache, um Texteingaben oder Sprache zu verstehen und darauf zu antworten.
KI-gestützte Entwicklung
In diesem Beitrag geht es um KI-gestützte Entwicklung. Dabei betrachten wir, wie KI uns beim Schreiben und Bereitstellen von Code leistungsfähiger und effizienter macht. Wir beginnen mit dem Schreiben von Code und widmen uns anschließend dem Testen, Überprüfen und Dokumentieren.
Code schreiben
Die bekannteste und meistdiskutierte Anwendung von KI-Tools während der Entwicklung sind Codevorschläge. Einige Tools, etwa ChatGPT, liefern Codebeispiele auf Grundlage Ihrer konkreten Anfragen. Sie können also in natürlicher Sprache beschreiben, welche Aufgabe der Code erfüllen soll, zum Beispiel:

Sehen wir uns den generierten Code an.
Andere Tools, zum Beispiel GitHub Copilot, Amazon CodeWhisperer oder Tabnine, bieten ähnliche Funktionen direkt in Ihrer IDE. Während Sie Code schreiben, etwa in einer Methodendefinition oder einem Codekommentar, schlagen die IDE-Plugins passenden Code vor, den Sie annehmen oder ablehnen können.
Kleiner Spoiler vorab: Der oben generierte Code enthält eine schwerwiegende Sicherheitslücke mit kritischem Schweregrad. Tatsächlich lernen LLMs aus Community-Code, der voller Sicherheitslücken steckt. Deshalb können auch die Codevorschläge Sicherheitslücken enthalten. Es ist unerlässlich, dass wir weiterhin mit den gewohnten Tools testen, damit sowohl generierter Code als auch selbst geschriebener Code sicher ist. Sehen Sie sich den Code noch einmal an und versuchen Sie, die Sicherheitslücke zu entdecken. Lesen Sie im nächsten Abschnitt Code testen weiter. Dort zeigen wir Ihnen die Details der Sicherheitslücke und wie Sie sie beheben können.
Zwei weitere interessante Tools sind unter anderem AI Query, ein KI-Tool, das aus Ihren Eingaben in natürlicher Sprache SQL-Abfragen erstellt. Das ist besonders praktisch, wenn Sie aus Sicherheitsgründen eine Trennung zwischen Ihrem LLM und Ihren Daten einrichten möchten. Sie können die erzeugten Abfragen anschließend daraufhin überprüfen, ob sie riskante Aktionen ausführen und ob sie für Endnutzerinnen und Endnutzer mit ihren jeweiligen Berechtigungen sinnvoll sind.
Code testen
Sind Sie hier, weil Sie die Sicherheitslücke entdeckt haben? Oder haben Sie gar nicht erst danach gesucht und möchten einfach die Antwort wissen? So oder so grenzen wir die Suche etwas ein :) Die Sicherheitslücke ist ein Beispiel für eine Zip-Slip-Schwachstelle. Dabei treffen Directory Traversal und das beliebige Überschreiben von Dateien aufeinander; sogar die Ausführung beliebigen Codes ist möglich. Diese Zeile verursacht die Sicherheitslücke:
Sehen wir uns zunächst den Inhalt eines gefährlichen Archivs an. Dann wird wahrscheinlich klar, warum der obige Code verwundbar ist. Die folgende Datei darf laut ZIP-Dateiformat-Spezifikation völlig legal zu einem ZIP-Archiv hinzugefügt werden.
Wie Sie wahrscheinlich schon erkannt haben: Wenn wir diesen ZIP-Dateinamen an das Zielverzeichnis anhängen, wird die Datei beim Kopieren vermutlich im temporären Systemverzeichnis statt im Zielverzeichnis abgelegt. Das kann einen gefährlichen Angriffsvektor darstellen – und dennoch ist dies eine typische Ausgabe von Codegenerierungstools.
Der Vollständigkeit halber: Die Lösung besteht darin, nach dem Zusammenfügen den kanonischen Dateinamen abzurufen und zu prüfen, ob er innerhalb des Zielverzeichnisses liegt:
Ich öffne diese Datei im IntelliJ-Browser, in dem ich bereits Snyk installiert habe. Snyk scannt den Quellcode und kann mithilfe seiner symbolischen KI die Daten- und Codeflüsse in der Anwendung nachvollziehen. Wie der folgende Screenshot zeigt, hat Snyk das Problem im neuen Code (1) erkannt, eine vollständige Beschreibung des Problems bereitgestellt (2) und sogar Beispiele zur Behebung angezeigt – ähnlich wie oben (3).

Starten Sie mit Capture the Flag
Erfahren Sie in unserem virtuellen On-Demand-Workshop für Einsteiger, wie Sie Capture-the-Flag-Herausforderungen lösen.
Wir haben symbolische KI erwähnt. Sie ist eine der KI-Arten, die Snyk verwendet. Es gibt noch weitere KI-Arten, die je nach Ziel unterschiedliche Vor- und Nachteile haben. Weitere Informationen finden Sie in unserem Leitfaden zur Verwendung verschiedener KI-Modelle. Die durch ChatGPT populär gewordenen KI-Systeme nutzen:
KI auf Basis von maschinellem Lernen – Ein KI-Ansatz, bei dem Systeme aus Daten lernen und ihre Leistung bei einer bestimmten Aufgabe verbessern, ohne dafür explizit programmiert zu sein. Zu den Unterarten zählen überwachtes, unüberwachtes und bestärkendes Lernen.
KI auf Basis neuronaler Netze – Ein Teilgebiet des maschinellen Lernens, bei dem künstliche, vom menschlichen Gehirn inspirierte neuronale Netze Muster, Merkmale und Zusammenhänge in Daten erkennen.
Symbolische KI (oder symbolisches Schlussfolgern) – Eine KI-Art, die Wissen mithilfe von Symbolen, Regeln und Logik darstellt, um Aufgaben zu lösen. Dabei kommen häufig für Menschen lesbare Ausdrücke und formale Schlussfolgerungen zum Einsatz.
Evolutionsbasierte KI (oder genetische Algorithmen) – Ein KI-Ansatz, der den Prozess der natürlichen Selektion nachahmt, um Lösungen für Probleme weiterzuentwickeln und zu optimieren. Er kommt häufig bei Optimierungs- und Designaufgaben zum Einsatz.
KI-Expertensysteme – Eine KI-Art, die menschliches Fachwissen in einem bestimmten Bereich nachbildet. Dazu nutzt sie eine Wissensdatenbank mit Fakten und Regeln, um Entscheidungen zu treffen oder Empfehlungen zu geben.
Ein weiteres Tool, das Sie sich ansehen sollten, ist Codium. Dieses KI-basierte Tool analysiert Ihren Code, erklärt seine Funktion, erstellt einen Testplan und kann sogar Tests generieren, die Sie kopieren und in Ihren Unit-Tests verwenden können.
Code überprüfen
Wenn Sie bereits geschriebenen Code überprüfen möchten, etwa einen Pull Request, könnte What the Diff interessant für Sie sein. Dieses Git-basierte Tool fasst die Änderungen im PR zusammen, hilft Ihnen, eine PR-Zusammenfassung zu schreiben, und unterstützt sogar beim Refactoring des Codes im PR.
Damit haben wir schon einiges behandelt: Code schreiben, testen und überprüfen … Sind Sie bereit, loszulegen?
Achten Sie darauf, dass Änderungen an Ihrem Code keine Regressionen oder Sicherheitsprobleme verursachen. Das können Qualitätsmängel ebenso sein wie die oben erwähnten Sicherheitsprobleme.
Nutzen Sie während des Review- und SDLC-Prozesses wie gewohnt durchgängig Tools. Der Einsatz generativer KI sollte diese nicht ersetzen, sondern vielmehr dafür sorgen, dass Sie sich noch stärker auf sie verlassen – denn in derselben Zeit werden wahrscheinlich mehr Code und Funktionen entwickelt und bereitgestellt.
Sehen Sie sich unseren Spickzettel mit Best Practices für den Einsatz von KI im SDLC an. Die Integrationen von Snyk in den SDLC, einschließlich unserer Git-Repo-PR-Integrationen, unterstützen Sie bei Code-Reviews in Ihrem gewohnten Workflow. So vermeiden Sie, Erst- oder Drittanbieter-Sicherheitslücken, verwundbare Container oder IaC-Sicherheitsprobleme und Fehlkonfigurationen einzuführen.
Übernehmen Sie die Kontrolle über AI-Security mit Snyk
Erfahren Sie, wie Snyk den von AI generierten Code Ihrer Entwicklungsteams absichert und Ihren Security-Teams zugleich vollständige Transparenz und Kontrolle bietet.



