Kann KI sicheren Code schreiben?
Frank Fischer
3. Mai 2023
0 Min. LesezeitKI entwickelt sich rasant weiter: Jede Woche werden neue Tools und Anwendungsfälle entdeckt und vorgestellt – vom Verfassen von Gedichten bis hin zum Absichern von Netzwerken.
Forschende wissen noch nicht genau, wozu neue KI-Modelle wie GPT-4 in der Lage sind. Deshalb fordern einige bekannte Persönlichkeiten wie Elon Musk und Steve Wozniak gemeinsam mit KI-Forschenden einen sechsmonatigen Stopp beim Training leistungsfähigerer Modelle, damit der Fokus auf der Entwicklung von Sicherheitsprotokollen und Vorschriften liegen kann.
Eine der größten Sorgen im Zusammenhang mit GPT-4 ist, dass Forschende noch immer nicht genau wissen, was das Modell kann. Im Laufe der Zeit werden neue Exploits, Jailbreaks und emergente Verhaltensweisen entdeckt werden. Aufgrund der Black-Box-Natur von LLMs lassen sie sich nur schwer verhindern. OpenAI weist in seinem GPT-4-Whitepaper darauf hin:
OpenAI hat während der Entwicklung und Bereitstellung von GPT-4 verschiedene Sicherheitsmaßnahmen und Prozesse umgesetzt, die die Fähigkeit des Modells, schädliche Inhalte zu erzeugen, einschränken. GPT-4 kann jedoch weiterhin für adversariale Angriffe und Exploits oder „Jailbreaks“ anfällig sein, und schädliche Inhalte sind nicht die Ursache des Risikos. Durch Fine-Tuning lässt sich das Verhalten des Modells verändern, doch die grundlegenden Fähigkeiten des vortrainierten Modells – etwa das Potenzial, schädliche Inhalte zu erzeugen – bleiben latent.
GPT-4 wurde gerade erst veröffentlicht, doch über seinen Vorgänger GPT-3, der ChatGPT zugrunde liegt, verfügen wir bereits über viele Daten. Seit seiner Markteinführung hat ChatGPT für so viel Aufsehen gesorgt, dass auch andere Tech-Giganten wie Google und Adobe darum bemüht sind, ihre KI-Präsenz auszubauen.
Von der Produktivitätssteigerung bis zur Erstellung von Inhalten: Die Einsatzmöglichkeiten von ChatGPT sind vielfältig. Allerdings gibt es Bedenken, wenn Entwicklerinnen und Entwickler damit Code erzeugen – etwa aufgrund von Datenschutzproblemen, Cybersicherheitsrisiken und möglichen Auswirkungen auf die Sicherheitslage von Anwendungen.

Datenschutz- und IP-Risiken beim Einsatz von KI-Tools zum Programmieren
Seit der Markteinführung Ende letzten Jahres gibt es bei Verbraucherinnen und Verbrauchern sowie Fachleuten weit verbreitete Bedenken hinsichtlich der Datenschutzrisiken von ChatGPT, wenn es mit internen Unternehmensdaten verwendet wird.
Ein aktueller Bericht von Cyberhaven zeigt, dass 3,1 % der Beschäftigten vertrauliche Informationen in Chat-GPT eingegeben haben. Das unterstreicht, wie wichtig Richtlinien für den internen Einsatz von KI-Tools sind. Samsung musste seine Mitarbeitenden kürzlich intern vor der Nutzung von KI warnen, nachdem vertraulicher Quellcode und Besprechungsnotizen in Chat-GPT eingegeben worden waren. Diese Daten befinden sich nun als Trainingsdaten bei Open-AI; ob sie sich wieder abrufen lassen, ist unklar.
KI-Tools stärken die Cybersicherheit
Für Sicherheitsexpertinnen und -experten ist nicht alles düster. KI-Technologie bringt zwar Nachteile und Bedenken zum Datenschutz mit sich, stellt Sicherheitsteams aber auch weitere Tools zur Verfügung, mit denen sie auf neue Bedrohungen reagieren können.
Die Red Teams von OpenAI haben GPT-4 erfolgreich zur Erkennung und Ausnutzung von Schwachstellen sowie für Social Engineering eingesetzt. Dadurch können Red Teams neue Schwachstellen finden und melden.
Sicherheitsunternehmen entwickeln weiterhin neue Möglichkeiten, KI zu integrieren in ihre bestehenden Produkte. Kürzlich haben wir das neue Auto-Fix-Feature vorgestellt. Es nutzt Hybrid-KI-Technologie, um von KI generierte Korrekturen für Schwachstellen vorzuschlagen, die von der Snyk Code Engine auf ihre Sicherheit geprüft werden.
Risiken für die Anwendungssicherheit beim Programmieren mit KI
ChatGPT kann zwar beim Schreiben von Code helfen, funktioniert im Allgemeinen aber nur mit kleineren Codeabschnitten auf einmal. Wird es also zum Erzeugen großer Codemengen eingesetzt, können sich Entwicklerinnen und Entwickler Risiken aussetzen, da die Software keine Probleme über mehrere Dateien oder Ebenen hinweg berücksichtigt. Meist erkennt die KI solche Fälle nicht einmal und kann die damit verbundenen Probleme nicht lösen.
Die Qualität von Codegenerierungsprodukten hängt von den Daten ab, mit denen sie trainiert wurden. Fehler- oder schwachstellenfreien Code zu 100 % zu gewährleisten, ist nahezu unmöglich. Daher enthalten die Vorschläge von Codegenerierungstools häufig anfälligen Code. Besonders besorgniserregend ist diese von Microsoft veröffentlichte Zahl: 40 % des Codes, den Entwicklerinnen und Entwickler einchecken, werden inzwischen von KI generiert und unverändert übernommen. Das ist ein großes Problem für AppSec-Teams, denn Unternehmen müssen sicherstellen, dass ihre Software so sicher wie möglich ist.
GitHubs KI-Programmiertool Copilot wurde mit Code aus öffentlich zugänglichen Quellen trainiert, darunter Code in öffentlichen GitHub-Repositories. Deshalb schlägt es Code vor, der bestehendem Code ähnelt. Enthält der Trainingsdatensatz unsicheren Code, können die Vorschläge ebenfalls typische Schwachstellen einführen. Ein Forschender von Invicti prüfte dies, indem er mit Copilot eine Python- und eine PHP-App erstellte und beide anschließend auf enthaltene Schwachstellen untersuchte. Dabei fand er unter anderem XSS-, SQL-Injection- und Session-Fixation-Schwachstellen.
GitHub ist sich der aufgeworfenen Sicherheitsprobleme bewusst und hat kürzlich eine Funktion zur Filterung von Schwachstellen hinzugefügt:
Fest codierte Zugangsdaten, SQL-Injections und Path-Injections gehören zu den häufigsten anfälligen Codierungsmustern, auf die das Modell abzielt. Mit GitHub Copilot ist diese Lösung ein großer Schritt, um Entwicklerinnen und Entwickler beim Schreiben sichereren Codes zu unterstützen.
GitHub-Copilot-Update ergänzt Filter für Sicherheitslücken | InfoWorld
Diskussionen auf Reddit über das Programmieren mit ChatGPT
Auf Grundlage der vorherigen Untersuchung zu Copilot wollten wir herausfinden, ob ChatGPT in dessen Fußstapfen tritt.
Dazu haben wir uns Reddit angesehen. Auf dieser Social-News- und Diskussionsplattform holen sich technikaffine Fachleute wie Entwicklerinnen und Entwickler regelmäßig Einblicke von anderen Fachleuten aus ihrem Bereich.
Deshalb eignet sich die Plattform ideal, um zu sehen, wie Menschen ChatGPT zum Programmieren nutzen: Suchen sie nach Ratschlägen? Warnen sie andere davor, es dafür einzusetzen? Oder loben sie es als zuverlässige Quelle?
Zunächst analysierten wir einen Reddit-Thread über Programmieren und ChatGPT mit fast 350 Beiträgen. Anschließend bewerteten wir die Stimmung in den Kommentaren und konzentrierten uns dabei auf den gesamten Reddit-Beitrag statt nur auf den Titel.
Positiv
Ohne Beiträge ohne Beschreibung oder ohne thematischen Bezug hatten 17,9 % eine positive Stimmung. Eine Person veröffentlichte ein Bild eines Codes, an dem sie gerade arbeitete, und schrieb dazu: „… Ich war kurz davor aufzugeben. Ich hatte die letzte halbe Stunde nach einer Lösung gesucht und GPT schließlich als letzten Ausweg gefragt. Fünf Sekunden später liefert es mir die perfekte Antwort …“
Eine andere Person äußerte sich besonders lobend: „Wenn ich auf ein komplexes Problem stoße, etwa beim Refactoring von Code oder beim Bearbeiten von Arrays oder Listen auf ungewöhnliche Weise, gefällt mir, dass ich ChatGPT einfach fragen kann, wie das geht. Nachdem ich 20 Jahre lang jedes Mal meine Gehirnzellen dafür strapazieren musste, kann ich diese langweilige Aufgabe endlich an eine KI abgeben! Was für eine Art Programmierer macht mich das?“
Unter den positiven Beiträgen zeigte sich jedoch ein auffälliges Muster: ChatGPT übersieht oft die kleinen Details:
„… Klar, es ist extrem beeindruckend. Es hat plausiblen, relativ korrekten Code in kürzester Zeit geschrieben. Aber bei all den kleinen Details hat es kläglich versagt …“
„… Ich bin ein großer Fan von ChatGPT (zumindest meistens), wenn es ums Programmieren geht. Es findet nicht immer die richtige Antwort, aber das ist in Ordnung. Meistens kommt es ziemlich nah heran. Es ist, als hätte ich immer einen sehr cleveren – aber unvollkommenen – Junior-Entwickler 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 …“
Die positiven Kommentare, die zugleich kritisieren, dass ChatGPT die feineren Details übersieht, zeigen, wo Sicherheitsbedenken entstehen. Wird das KI-Tool von einer unerfahrenen Person zum Erstellen von Code genutzt, bleiben solche Fehler möglicherweise unbemerkt.
Negativ
Insgesamt fanden wir weniger negative als positive Beiträge über das Programmieren mit ChatGPT. 10,3 % der Beschreibungen hatten insgesamt eine negative Stimmung. Viele Nutzerinnen und Nutzer äußerten ihre Frustration über Ungenauigkeiten.
Eine Person schrieb: „… Ich finde die Vorschläge von ChatGPT besonders unzuverlässig. Die Abfragen, die es erstellt, führen zu Fehlern über Fehler …“
Eine andere Person wies auf ein ähnliches Problem hin und suchte nach konkreten Prompts, die beim Programmieren helfen: „Wenn ich eine Codeänderung anfordere, gibt ChatGPT den vollständigen Code aus, selbst wenn nur eine Zeile geändert wurde. Ich habe Prompts wie ‚Bitte gib nur den Code der geänderten Zeilen aus‘ ausprobiert, aber es ignoriert mich und gibt trotzdem den gesamten Code aus. Das kostet Zeit. Ich hätte gern einen funktionierenden Prompt, mit dem es nur die geänderten Codezeilen ausgibt.“
Hilfe und Ratschläge suchen
Wir fanden heraus, dass die meisten Reddit-Beiträge zu ChatGPT und Programmieren Hilfe und Ratschläge suchten (44,6 %).
Die Anfragen reichten von der Frage, ob dem von ChatGPT gelieferten Code etwas Wichtiges fehlt, bis hin zum Übersetzen von Code von einer Programmiersprache in eine andere.
Bei einer genaueren Aufschlüsselung stellten wir fest, dass sich diese Beiträge mit Lernressourcen (51,4 %), Peer-to-Peer-Anfragen (14,3 %), Qualitätsfragen und -anfragen (14,3 %), eigenen Kreationen (11,4 %), Prognosen (5,7 %) und Nutzererfahrungen (2,9 %) befassten.
Unsere Schlussfolgerungen aus diesen Daten
Menschen, die ihren Code wirklich verstehen, entdecken in den Details weiterhin kleine Anpassungen und Änderungen. Chat-GPT ist in seinem aktuellen Zustand bei einfacheren Aufgaben äußerst hilfreich, liefert aber nicht immer perfekten Code für Ihre Anforderungen.
Menschen, die ihren Code nicht verstehen, sind sehr beeindruckt und äußerst positiv eingestellt, da sie Code erstellen können, der ihre Ziele erreicht – und dafür viel weniger eigenes Wissen benötigen.
Beide Gruppen sind sich wahrscheinlich nicht der Sicherheitsprobleme bewusst, die durch KI-Tools entstehen – insbesondere Menschen, die neu in der Entwicklung sind. Daher ist es gut möglich, dass Entwicklerinnen und Entwickler KI-Tools nutzen, ohne die Sicherheit zu berücksichtigen, und so durch KI-Vorschläge erzeugte Schwachstellen in ihre Codebasis übernehmen.
Das wird noch wichtiger, wenn Sie sich die Trends bei der KI-Nutzung ansehen. 42 % der im vergangenen Jahr von IBM befragten Unternehmen suchen nach Möglichkeiten, KI in ihren Organisationen einzusetzen. Deshalb ist es entscheidend, die Sicherheit bei KI-Tools mitzudenken.
Wichtige Überlegungen zur Anwendungssicherheit in einer Welt mit KI
KI-Tools wie Chat-GPT und Copilot können die Entwicklung beschleunigen, sollten aber mit umfassenden Sicherheitstools kombiniert werden, um sicherzustellen, dass der von ihnen generierte Code sicher ist. LLMs können während der Entwicklung weder einen Compiler noch einen Interpreter ersetzen – genauso wenig wie spezialisierte Sicherheitstools.
Es sollten interne Richtlinien für den Einsatz von KI-Tools eingeführt werden. Diese sollten unter anderem Folgendes abdecken:
Klare Definition zulässiger Anwendungsfälle: Legen Sie fest, welche Anwendungsfälle für den Einsatz von KI-Tools zulässig sind und welche Entscheidungen damit getroffen werden dürfen.
Auswahl und Nutzung von Daten: Legen Sie fest, welche Art und Qualität von Daten in KI-Modellen verwendet werden dürfen und welche Datenquellen dafür geeignet sind.
Datenschutz und Datensicherheit: Stellen Sie sicher, dass alle in KI-Modellen verwendeten Daten angemessen geschützt sind und geeignete Maßnahmen zum Schutz der Privatsphäre und Datensicherheit getroffen werden.
Compliance-Anforderungen: Stellen Sie sicher, dass der Einsatz von KI-Tools alle rechtlichen, regulatorischen und ethischen Anforderungen erfüllt.
Regelmäßige Aktualisierungen: Aktualisieren Sie die Richtlinien fortlaufend, wenn neue KI-Tools entwickelt werden und sich die geschäftlichen Anforderungen weiterentwickeln.
Diese Liste ist nicht vollständig und umfasst nicht alle Richtlinien für den Einsatz von KI in Ihrer Organisation. Sie kann jedoch als Ausgangspunkt dienen.
Sicherheitsteams sollten Entwicklungen im Bereich KI im Blick behalten, die sowohl Sicherheitsteams als auch Angreifern neue Möglichkeiten eröffnen. KI-Tools können eine wichtige Rolle dabei spielen, sich gegen die zunehmende Zahl von Exploits zu schützen, indem sie Sicherheitsteams effizientere Tools an die Hand geben – insbesondere, solange Unternehmen weiterhin Schwierigkeiten haben, Sicherheitsexpertinnen und -experten einzustellen. Wir gehen davon aus, dass im Laufe dieses Jahres neue Einsatzmöglichkeiten für KI-Tools entdeckt werden. Daher ist es wichtig, über aktuelle Entwicklungen auf dem Laufenden zu bleiben. Sicherheitsteams sollten außerdem im Blick behalten, wie intensiv ihre Entwicklungsteams KI nutzen, welcher Anteil des zur Codebasis hinzugefügten Codes von KI generiert wird und ob die passenden Sicherheitsprüfungen vorhanden sind, um damit umzugehen.
Codesicherheit ist nur ein Aspekt der Entwicklung. Softwareentwicklung vereint Menschen, Prozesse und Technologie. KI kann bei der Technologie helfen, doch auch die anderen Faktoren sind unverzichtbar. Qualität ist entscheidend beim Programmieren – der menschliche Faktor wird immer wichtig sein.
Snyks Empfehlungen 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: Es ist wichtig, die Grundlagen der Sicherheit zu beherrschen, um Ihre Angriffsfläche zu minimieren. Die Bewertung Ihrer Anwendungssicherheit ist entscheidend, um Ihren Code vor Personen zu schützen, die ihn ausnutzen möchten. Bei einer Bewertung der Anwendungssicherheit werden Anwendungen auf Bedrohungen getestet und Strategien zu ihrer Abwehr entwickelt. So können Unternehmen die aktuelle Sicherheitslage ihrer Anwendungen beurteilen und Möglichkeiten ermitteln, ihre Software besser vor künftigen Angriffen zu schützen. Entwicklerinnen und Entwickler sollten regelmäßig Bewertungen der Anwendungssicherheit durchführen, damit die Sicherheitsmaßnahmen aktuell und wirksam bleiben.
Fünf Schritte zur Bewertung Ihrer Anwendungssicherheit:
Mögliche Angreifer identifizieren
Schützenswerte sensible Daten ermitteln
Die Angriffsfläche der Anwendung erfassen
Schwachstellen und Probleme in aktuellen AppSec-Prozessen bewerten
Eine Sicherheits-Roadmap zur Beseitigung von Schwachstellen erstellen
KI-Tools wie ChatGPT übersehen möglicherweise Schwachstellen und Sicherheitslücken. Snyk ist eine Developer-Security-Plattform, die sich für diese Aufgabe viel besser eignet. Mit Snyk können Sie Sicherheitslücken in Ihrem Code, Open-Source-Abhängigkeiten, Container und Cloud-Umgebungen identifizieren und automatisch absichern.
Die Plattform lässt sich sogar direkt in Entwickler-Tools, Automatisierungs-Pipelines und Coding-Workflows integrieren und sorgt so für nahtlose und effiziente Sicherheit.
Beschleunigen Sie die sichere Entwicklung
Snyk bringt Entwickler und Sicherheitsteams zusammen, damit Sie Geschwindigkeit und Sicherheit in großem Maßstab gewährleisten können.



