Kann KI sicheren Code schreiben?
3. Mai 2023
0 Min. LesezeitKI macht rasante Fortschritte. Jede Woche werden neue Tools und Anwendungsfälle entdeckt und angekündigt, vom Schreiben von Gedichten bis hin zur Sicherung von Netzwerken.
Forscher sind sich nicht ganz sicher, wozu neue KI-Modelle wie GPT-4 in der Lage sind, was einige große Namen wie Elon Musk und Steve Wozniak sowie KI-Forscher dazu veranlasst hat, einen Stopp für das Training leistungsfähigerer Modelle für 6 Monate zu fordern, damit der Schwerpunkt auf die Entwicklung von Sicherheitsprotokollen und -vorschriften gelegt werden kann.
Eine der größten Sorgen im Zusammenhang mit GPT-4 ist, dass Forscher immer noch nicht ganz sicher sind, was es alles kann. Neue Exploits, Jailbreaks und emergente Verhaltensweisen werden im Laufe der Zeit entdeckt werden und sind aufgrund der Blackbox-Natur von LLMs schwer zu verhindern. OpenAI erklärt dies in seinem GPT-4 Whitepaper:
OpenAI hat während des gesamten Entwicklungs- und Bereitstellungsprozesses von GPT-4 verschiedene Sicherheitsmaßnahmen und -prozesse implementiert, die seine Fähigkeit, schädliche Inhalte zu erzeugen, reduziert haben. GPT-4 kann jedoch immer noch anfällig für Angriffe und Exploits oder „Jailbreaks“ sein, und schädliche Inhalte sind nicht die Quelle des Risikos. Durch Feinabstimmung kann das Verhalten des Modells verändert werden, aber die grundlegenden Fähigkeiten des trainierten Modells, wie z. B. das Potenzial, schädliche Inhalte zu erzeugen, bleiben verborgen.
GPT-4 wurde erst veröffentlicht, aber wir verfügen über eine Menge Daten über seinen Vorgänger, GPT-3, der Chat-GPT antreibt. Seit seiner Einführung hat ChatGPT so viel Aufsehen erregt, dass auch andere Tech-Giganten, darunter Google und Adobe, sich darum bemühen, ihre KI-Präsenz zu zeigen.
Von der Optimierung der Produktivität bis zur Erstellung von Inhalten – die Liste der Fähigkeiten von ChatGPT ist umfangreich. Es gibt jedoch Bedenken, dass Entwickler/innen es zur Erstellung von Code verwenden, und zwar aufgrund von Datenschutzproblemen, Risiken für die Cybersicherheit und möglichen Auswirkungen auf die Anwendungssicherheit.
Datenschutz und IP-Risiken bei der Verwendung von KI-Tools für die Programmierung
Seit der Markteinführung von ChatGPT Ende letzten Jahres sind unter Verbrauchern und Fachleuten Bedenken über die Risiken für den Datenschutz bei der Verwendung von internen Unternehmensdaten weit verbreitet.
Ein aktueller Bericht von Cyberhaven zeigt, dass 3,1 % der Arbeitnehmer vertrauliche Informationen in Chat-GPT gepostet haben, was zeigt, wie wichtig es ist, Richtlinien für die interne Nutzung von KI-Tools zu erstellen. Samsung musste vor Kurzem eine interne Warnung über die KI-Nutzung an seine Mitarbeiter herausgeben, nachdem vertrauliche Quellcodes und Besprechungsnotizen in Chat-GPT eingegeben wurden. Diese Daten befinden sich nun als Trainingsdaten in den Händen von Open-AI und es ist unklar, ob sie zurückgerufen werden können.
KI-Tools zur Verbesserung der Cybersicherheit
Für Sicherheitsexperten gibt es nicht nur Schwarzmalerei. Die KI-Technologie hat zwar einige Schattenseiten und Bedenken hinsichtlich des Datenschutzes, aber sie gibt den Sicherheitsteams auch mehr Werkzeuge an die Hand, mit denen sie aufkommenden Bedrohungen begegnen können.
OpenAI-Red Teams haben GPT-4 erfolgreich für Schwachstellenerkennung und -ausnutzung sowie Social Engineering eingesetzt, wodurch Red Teams neue Schwachstellen finden und melden können.
Sicherheitsunternehmen suchen weiterhin nach neuen Wegen, um KI in ihre bestehenden Produkte zu integrieren. Vor Kurzem haben wir die neue Funktion Auto-Fix angekündigt, die hybride KI-Technologie nutzt, um von KI generierte Fixes für Schwachstellen zu empfehlen, die von der Snyk Code-Engine auf ihre Sicherheit hin überprüft werden.
Risiken für die Anwendungssicherheit bei der Programmierung mit KI
ChatGPT kann Anwendern zwar bei der Programmierung helfen, arbeitet aber in der Regel nur mit kleineren Codestücken gleichzeitig. Wenn also eine große Menge an Code damit erstellt wird, können sich Entwickler/innen möglicherweise Risiken aussetzen, da die Software keine dateiübergreifenden oder mehrstufigen Probleme berücksichtigt. In den meisten Fällen versteht die KI diese Fälle nicht einmal und kann die damit verbundenen Probleme nicht lösen.
Produkte zur Codegenerierung sind nur so gut wie die Daten, auf denen sie trainiert werden. Es ist fast unmöglich, einen 100 % fehler- oder schwachstellenfreien Code zu erhalten, sodass Codegenerierungs-Tools häufig auch schwachstellenbehafteten Code in ihre Vorschläge aufnehmen. Dies ist umso besorgniserregender, wenn Sie sich diese Statistik von Microsoft ansehen – 40 % des Codes, den sie (die Entwickler/innen) einchecken, ist inzwischen KI-generiert und unmodifiziert.Dies ist ein großes Problem für AppSec-Teams, da Unternehmen sicherstellen müssen, dass ihre Software so sicher wie möglich ist.
Das KI-Programmierungstool Copilot von Github wird auf Code aus öffentlich zugänglichen Quellen, einschließlich Code in öffentlichen Repositories auf GitHub, trainiert, sodass es Vorschläge erstellt, die dem vorhandenen Code ähneln. Wenn das Trainingsset unsicheren Code enthält, dann können die Vorschläge auch einige typische Schwachstellen enthalten. Ein Forscher bei Invicti hat dies getestet, indem er eine Python- und eine PHP-Anwendung mit Copilot erstellt und dann beide Anwendungen auf enthaltene Schwachstellen überprüft hat. Dabei wurden Probleme wie XSS, SQL-Injektion und Schwachstellen bei der Session-Fixierung gefunden.
GitHub ist sich der Sicherheitsprobleme sehr bewusst und hat in einem kürzlich erschienenen Update eine Funktion zum Filtern von Schwachstellen hinzugefügt:
Hartkodierte Anmeldedaten, SQL-Injektions und Path-Injektions gehören zu den häufigsten anfälligen Programmierungen, auf die das Modell abzielt. Mit GitHub Copilot ist diese Lösung ein großer Schritt zur Unterstützung von Entwickler/innen beim Schreiben von sichererem Code.
GitHub Copilot Update enthält Filter für Schwachstellen | InfoWorld
Gespräche auf Reddit über die Programmierung mit ChatGPT
Auf der Grundlage der bisherigen Erkenntnisse über Copilot wollten wir herausfinden, ob ChatGPT in dessen Fußstapfen tritt.
Zu diesem Zweck haben wir uns an Reddit gewandt. Reddit ist eine soziale Nachrichten- und Diskussionswebsite, auf der Technologieexperten, wie z. B. Entwickler/innen, regelmäßig Informationen von anderen Expert/innen aus demselben Bereich einholen.
Es ist also der perfekte Ort, um zu sehen, wie Menschen ChatGPT zum Programmieren verwenden: Suchen sie nach Ratschlägen? Warnen sie andere davor, es für diesen Zweck zu verwenden? Oder loben sie es als eine zuverlässige Quelle?
Wir begannen mit der Analyse eines Reddit-Threads zum Thema Coding und ChatGPT, der fast 350 Beiträge umfasste. Anschließend haben wir die Stimmung in den Kommentaren bewertet, wobei wir uns auf den gesamten Reddit-Beitrag konzentriert haben und nicht nur auf den Titel.
Positiv
Wenn wir Beiträge ohne Beschreibung oder solche, die sich nicht auf das Thema bezogen, ausschließen, hatten 17,9 % eine positive Bewertung. Ein Benutzer postete ein Bild eines Codes, an dem er arbeitete, und schrieb dazu: „…ich war kurz davor, aufzugeben. Hatte die letzte halbe Stunde damit verbracht, nach einer Lösung zu suchen, und als letzten Ausweg habe ich GPT gefragt, 5 Sekunden vergehen und es gibt mir die perfekte Antwort…“
Ein anderer Benutzer äußerte sich besonders lobend und schrieb: „Wenn ich auf ein komplexes Problem stoße, wie z. B. das Refactoring von Code oder die Manipulation von Arrays oder Listen auf seltsame Weise, finde ich es toll, dass ich ChatGPT einfach fragen kann, wie das geht. Nachdem ich 20 Jahre lang jedes Mal meine Gehirnzellen verbrannt habe, um herauszufinden, wie diese Dinge zu tun sind, kann ich diese langweilige Aufgabe endlich an eine KI abgeben! Zu was für einem Programmierer macht mich das?“
Unter den positiven Beiträgen war jedoch auch zu lesen, dass ChatGPT die kleinen Details vernachlässigt:
„… Sicher, es ist äußerst beeindruckend. Es hat plausiblen, relativ genauen Code geschrieben, und das extrem schnell. Aber bei all den kleinen Details hat es kläglich versagt …“
„… Ich bin ein großer Fan von ChatGPT (zum größten Teil), wenn es um Coding geht. Es gibt zwar nicht immer die richtige Antwort, aber das ist in Ordnung. Normalerweise kommt es der Lösung ziemlich nahe. Es ist, als hätte man einen sehr klugen – aber unvollkommenen – Jr. Entwickler immer zur Verfügung…“
„… ChatGPT scheint zu wissen, wo die Probleme in seinem Code liegen, liefert aber manchmal nicht die richtige Lösung, um sie zu beheben …“
Der positive Charakter der Kommentare, die mit der Kritik verbunden sind, dass ChatGPT die kleinsten Details auslässt, macht deutlich, wo die Sicherheitsbedenken liegen. Wenn das KI-Tool von jemandem zur Erstellung von Code verwendet wird, der keine Erfahrung hat, werden diese Fehler nicht bewertet.
Negativ
Insgesamt haben wir festgestellt, dass es weniger negative Beiträge zur Programmierung mit ChatGPT gab als positive. 10,3 % der Schilderungen waren insgesamt negativ, wobei viele Benutzer/innen ihre Frustration über Ungenauigkeiten zum Ausdruck brachten.
Ein Benutzer gab an: „… Ich finde, dass die Vorschläge von ChatGPT extrem unzuverlässig sind. Die Abfragen, die es erstellt, produzieren einen Fehler nach dem anderen …“
Eine andere Benutzerin wies auf ein ähnliches Problem hin und suchte nach speziellen Prompts, die bei der Programmierung helfen sollten: „Nach der Abfrage einer Codeänderung gibt ChatGPT den gesamten Code aus, auch wenn nur eine Zeile des Codes geändert wurde. Ich habe versucht, Prompts wie ,Bitte gib mir nur den Code für die geänderten Zeilen an‘ zu verwenden, aber er ignoriert mich und gibt trotzdem den vollständigen Code aus. Damit vergeude ich Zeit, also hätte ich gerne einen funktionierenden Prompt, der mir nur die geänderten Codezeilen ausgibt.“
Suche nach Hilfe und Rat
Wir haben festgestellt, dass die Mehrheit der Reddit-Beiträge zum Thema ChatGPT und Programmierung Hilfe und Rat suchen (44,6 %).
Die Anfragen reichen von der Frage, ob im Code, den sie von ChatGPT erhalten haben, etwas Wichtiges fehlt bis hin zu Übersetzung von Code von einer Sprache in eine andere.
Als wir dies weiter aufschlüsselten, stellten wir fest, dass sich diese Beiträge auf Lernressourcen (51,4 %), P2P-Anfragen (14,3 %), Qualitätsfragen/Anfragen (14,3 %), Benutzererstellungen (11,4 %), Vorhersagen (5,7 %) und Benutzererfahrungen (2,9 %) konzentrierten.
Unsere Schlussfolgerungen aus diesen Daten
Menschen, die ihren Code wirklich verstehen, finden immer noch kleine Optimierungen und Änderungen in den Details. Chat-GPT ist in seinem derzeitigen Zustand unglaublich nützlich für einfachere Aufgaben, wird aber nicht immer perfekten Code für Ihre Bedürfnisse ausgeben.
Menschen, die ihren Code nicht verstehen, sind super beeindruckt und sehr positiv gestimmt, da sie in der Lage sind, Code zu generieren, der ihre Ziele erreicht, und das mit viel weniger Wissen, das sie selbst benötigen.
Es ist unwahrscheinlich, dass beide Personengruppen sich der Sicherheitsprobleme bewusst sind, die von KI-Tools generiert werden, insbesondere diejenigen, die neu in der Entwicklung sind. Es ist also gut möglich, dass Entwickler/innen, die KI-Tools nutzen, ohne an Sicherheit zu denken und Schwachstellen in ihre Codebase einbringen, die durch KI-Vorschläge entstehen.
Dies ist umso wichtiger, wenn Sie sich die Trends beim Einsatz von KI ansehen. 42 % der von IBM im letzten Jahr befragten Unternehmen suchen nach Möglichkeiten, KI in ihrem Unternehmen zu nutzen, daher ist es wichtig, neben KI-Tools auch die Sicherheit zu berücksichtigen.
Wichtige Überlegungen zur Anwendungssicherheit in einer Welt mit KI
KI-Tools wie Chat-GPT und Copilot können die Entwicklung beschleunigen, aber sie sollten mit umfassenden Sicherheitstools gepaart werden, um sicherzustellen, dass der von diesen Tools generierte Code sicher ist. LLMs können während der Entwicklung weder einen Compiler noch einen Interpreter ersetzen, genauso wenig wie sie spezielle Sicherheitstools ersetzen können.
Es sollten interne Richtlinien für die Verwendung von KI-Tools aufgestellt werden. Diese sollten Dinge wie Folgendes umfassen:
Klare Definition von akzeptablen Anwendungsfällen: Festlegen, welche Anwendungsfälle für den Einsatz von KI-Tools akzeptabel sind und welche Arten von Entscheidungen damit getroffen werden können.
Datenauswahl und -verwendung: Festlegen der Art und Qualität der Daten, die in KI-Modellen verwendet werden können und welche Datenquellen dafür geeignet sind.
Datenschutz und Sicherheit: Sicherstellung, dass alle in KI-Modellen verwendeten Daten ordnungsgemäß geschützt sind und dass geeignete Maßnahmen zur Wahrung des Datenschutzes und der Datensicherheit getroffen werden.
Konformitätsanforderungen: Sicherstellung, dass die Verwendung von KI-Tools allen rechtlichen, regulatorischen und ethischen Anforderungen entspricht.
Regelmäßige Aktualisierungen: Aktualisierung der Richtlinien in dem Maße, wie neue KI-Tools entwickelt werden und sich die geschäftlichen Anforderungen weiterentwickeln.
Dies ist keine erschöpfende Liste von Richtlinien für den Einsatz von KI in Ihrem Unternehmen, aber sie kann als Ausgangspunkt verwendet werden.
Sicherheitsteams sollten sich der Entwicklungen im Bereich der KI bewusst sein, die sowohl den Sicherheitsteams als auch bösartigen Akteuren mehr Möglichkeiten bieten. KI-Tools können eine Schlüsselrolle bei der Abwehr der zunehmenden Zahl von Exploits spielen, indem sie den Sicherheitsteams effizientere Werkzeuge an die Hand geben, insbesondere wenn Unternehmen immer noch Schwierigkeiten haben, Sicherheitsexperten einzustellen. Wir gehen davon aus, dass im Laufe des Jahres neue Anwendungsfälle für KI-Tools entdeckt werden, sodass es wichtig ist, sich über die neuesten Entwicklungen auf dem Laufenden zu halten. Sicherheitsteams sollten sich auch darüber im Klaren sein, inwieweit ihre Entwicklerteams KI einsetzen, wie viel Code in Ihrer Codebase durch KI generiert wird und ob Sie über die richtigen Sicherheitskontrollen verfügen, um dies zu verwalten.
Code-Sicherheit ist nur ein Aspekt der Entwicklung. Softwareentwicklung ist eine Kombination aus Menschen, Prozessen und Technologie. KI kann bei der Technologie helfen, aber Sie brauchen immer noch die anderen Faktoren. Qualität ist der Schlüssel, wenn es um Programmierung geht – der menschliche Faktor wird immer wichtig sein.
Ratschläge von Snyk zu den besten Optionen für die Anwendungssicherheit
Unabhängig davon, ob Ihr Code vollständig von Menschen geschrieben oder größtenteils von KI generiert wurde, ist es wichtig, die Grundlagen der Sicherheit zu beherrschen, um Ihre Angriffsfläche zu minimieren. Die Bewertung der Sicherheit Ihrer Anwendung ist entscheidend für den Schutz Ihres Codes vor denjenigen, die ihn ausnutzen wollen. Die Durchführung einer Bewertung der Anwendungssicherheit beinhaltet das Testen von Anwendungen, um Bedrohungen zu erkennen und Strategien zu ihrer Abwehr zu entwickeln. Dieser Prozess ermöglicht es Unternehmen, die aktuelle Sicherheitslage ihrer Anwendungen zu bewerten und Möglichkeiten zur Verbesserung des Schutzes ihrer Software vor zukünftigen Angriffen zu ermitteln. Entwickler/innen sollten die Sicherheit von Anwendungen regelmäßig überprüfen, um sicherzustellen, dass die Sicherheitsmaßnahmen aktuell und wirksam bleiben.
Fünf Schritte zur Bewertung der Sicherheit Ihrer Anwendungen:
Identifizieren potenzieller Bedrohungsakteure
Bestimmen, welche sensiblen Daten schützenswert sind
Skizzieren der Angriffsfläche einer Anwendung
Bewerten der aktuellen AppSec-Prozess-Schwachstellen
Erstellen einer Sicherheits-Roadmap zur Beseitigung von Schwachstellen
Während KI-Tools wie ChatGPT Schwachstellen und Verwundbarkeiten übersehen können, ist Snyk eine Sicherheitsplattform für Entwickler/innen, die dieser Aufgabe viel besser gewachsen ist. Mit Snyk können Sie Schwachstellen in Ihrem Code, Open-Source-Abhängigkeiten, Containern und Cloud-Umgebungen identifizieren und automatisch sichern.
Die Plattform kann sogar direkt in Entwicklungs-Tools, Automatisierungs-Pipelines und Programmier-Workflows integriert werden, um nahtlose und effiziente Sicherheit zu gewährleisten.
Beschleunigen Sie die sichere Entwicklung
Mit Snyk agieren Dev- und Security-Teams als Einheit – für Entwicklung mit Speed und effizient skalierte Sicherheit.