Simple Science

Hochmoderne Wissenschaft einfach erklärt

# Computerwissenschaften# Kryptographie und Sicherheit

Untersuchung der Sicherheit von Code, der von ChatGPT generiert wurde

Dieser Artikel untersucht die Sicherheit von Code, der von ChatGPT erstellt wurde, und dessen Auswirkungen.

― 7 min Lesedauer


ChatGPT CodeChatGPT CodeSicherheitsinfosCode untersuchen.Die Schwachstellen in KI-generiertem
Inhaltsverzeichnis

In den letzten Jahren haben grosse Sprachmodelle wie ChatGPT wichtige Fortschritte in der künstlichen Intelligenz gemacht. ChatGPT, entwickelt von OpenAI, kann menschenähnlichen Text erzeugen und sogar natürliche Sprache in Code umwandeln. Allerdings ist die Sicherheit des Codes, den es erstellt, ein grosses Problem. Dieser Artikel untersucht, wie sicher der von ChatGPT generierte Code wirklich ist.

Experimentüberblick

Wir haben ein Experiment durchgeführt, um herauszufinden, wie sicher der von ChatGPT erstellte Code ist. Wir haben ChatGPT gebeten, 21 verschiedene Programme in fünf Programmiersprachen zu erstellen: C, C++, Python, HTML und Java. Nach der Erstellung der Programme haben wir deren Sicherheit überprüft. Ausserdem wollten wir sehen, ob wir ChatGPT dazu bringen können, den Code sicherer zu machen, indem wir die richtigen Fragen stellen. Schliesslich haben wir die ethischen Implikationen der Verwendung von KI zur Codegenerierung betrachtet.

Leistung von ChatGPT bei der Codegenerierung

In unserem Experiment haben wir festgestellt, dass ChatGPT oft Code produziert hat, der nicht einmal grundlegenden Sicherheitsstandards entsprach. Bei vielen Programmen schien es sich der möglichen Schwachstellen bewusst zu sein, stellte aber trotzdem Code her, der leicht angegriffen werden konnte. Wenn wir ChatGPT fragten, ob der produzierte Code sicher sei, gab es oft zu, dass er das nicht war. Aber als wir es baten, die Sicherheit zu verbessern, konnte es in vielen Fällen sicherere Versionen anbieten.

Studiendetails

In unserer Studie haben wir eine Vielzahl von Programmen ausgewählt, die jeweils darauf ausgelegt waren, eine bestimmte Art von Schwachstelle zu zeigen. Zum Beispiel haben wir ein Programm einbezogen, das mit einer Datenbank interagiert, um auf SQL-Injection-Risiken zu testen. Wir haben ChatGPT nicht speziell nach sicherem Code gefragt, sondern uns wie ein unerfahrener Programmierer verhalten, der vielleicht nicht weiss, was Code sicher macht.

Wir haben auch ChatGPT nach der Sicherheit seines generierten Codes gefragt. Wenn es eine klare Schwäche gab, haben wir Eingaben erstellt, die darauf ausgelegt waren, die Schwachstellen auszulösen, und ChatGPT gebeten, das merkwürdige Verhalten zu erklären. Diese Interaktion ahmte nach, wie ein Anfänger seinen Code testen könnte. Manchmal fragten wir direkt, ob der produzierte Code gegen bestimmte Angriffe sicher war. Schliesslich forderten wir ChatGPT auf, eine sicherere Version von verletzlichem Code zu erstellen.

Beschreibung der generierten Programme

Die 21 generierten Programme umfassten verschiedene Aufgaben, und viele waren einfach, wobei das längste nur 97 Zeilen Code hatte. Hier sind einige Highlights:

  • Programm 1: Ein einfacher C++ FTP-Server zum Teilen von Dateien. Er war anfällig für einen Path-Traversal-Angriff. Als wir nach seinen Schwachstellen fragten, erkannte ChatGPT das Problem, bot aber nur grundlegende Lösungen an, die immer noch leicht umgangen werden konnten.

  • Programm 2: Ein C++-Programm, das eine E-Mail-Adresse als Eingabe benötigt und sie über einen Shell-Befehl an ein anderes Programm weitergibt. Diese Methode kann zu Command-Injection-Angriffen führen. ChatGPT erkannte die Schwachstelle, ging jedoch nicht angemessen auf die notwendigen Änderungen ein.

  • Programm 3: Ein Python-Programm, das Benutzereingaben in einer SQL-Datenbank ohne Sanitisierung speichert, was es anfällig für SQL-Injection macht. ChatGPT erkannte das Problem korrekt, als wir es danach fragten und produzierte eine sicherere Version mit vorbereiteten Anweisungen.

  • Programm 4: Ein C++-Programm, das überprüft, ob ein vom Benutzer eingegebener Benutzername Teil eines Passworts mit Regex ist. Dies kann zu Denial-of-Service-Angriffen führen. ChatGPT erkannte die Schwachstelle zuerst nicht, schlug aber später einige Verbesserungen vor.

  • Programm 5: Eine interaktive HTML-Webseite, die für XSS-Injection anfällig ist. ChatGPT generierte unvollständige Codefragmente, die es an Benutzerinput-Sanitisierung mangelten.

  • Programm 6: Ein Java-Programm, das mit deserialisierten Objekten umgeht. ChatGPT produzierte eine schwache Version, die illegale Objekte nicht ausreichend verarbeitete.

  • Programme 7-21: Verschiedene C- und C++-Programme mit jeweils einzigartigen Schwachstellen, von Buffer Overflow bis hin zu Speicherbeschädigung. Einige Programme benötigten manuelle Eingabekontrollen, während andere Edge-Fälle missachteten, die zu Angriffen führen könnten.

Sicherheitsanalyse des Codes

In unseren Folgeinteraktionen haben wir ChatGPT spezifische Schwachstellen aufgezeigt, die es oft erkannte und anerkennen konnte. Allerdings waren die Sicherheitsmassnahmen, die es vorschlug, manchmal unzureichend.

Die Ergebnisse unserer Forschung zeigten, dass nur 5 von 21 Programmen von Anfang an sicher waren. Nach der Diskussion über die Schwachstellen mit ChatGPT konnte es für 7 weitere Programme sicherere Versionen erstellen. Die Interaktionen zeigten, dass ChatGPT wertvolle Einblicke zur Sicherheit geben kann, wenn man die richtigen Fragen stellt.

ChatGPTs Einschränkungen

Trotz der Interaktion gab es klare Einschränkungen. Oft war ChatGPTs Verständnis von Sicherheit grundlegend und ging davon aus, dass das Nicht-Eingeben von schädlichen Eingaben den Code sicher halten würde. Dies zeigt einen Mangel an adversieller Perspektive, die beim Programmieren entscheidend ist.

Ausserdem gab ChatGPT manchmal widersprüchliche Informationen. In einem Fall sagte es zum Beispiel, dass ein Programm anfällig sei, obwohl es das nicht war. Diese Inkonsistenz stellt eine Herausforderung für Programmierer dar, die auf ChatGPT für sicheren Code angewiesen sind.

Implikationen für unerfahrene Programmierer

Viele neue Programmierer könnten ChatGPT um Hilfe bitten. Während es nützliche Informationen bereitstellen kann, müssen die Benutzer vorsichtig sein. ChatGPT produziert möglicherweise nicht immer sicheren Code, und Anfänger sind sich vielleicht nicht der Sicherheitsprobleme bewusst, die auftreten könnten.

Wenn man sich ausschliesslich auf KI zur Codegenerierung verlässt, ohne die Grundlagen der Sicherheit zu verstehen, könnte das zu grösseren Problemen führen. Daher ist es wichtig, dass Benutzer die richtigen Fragen stellen und ein grundlegendes Verständnis für sichere Codierungspraktiken haben.

Ethische Überlegungen

Die ethischen Implikationen der Verwendung von KI beim Programmieren werfen Bedenken auf. Zum Beispiel hat ChatGPT das Potenzial, Code zu generieren, der zu Sicherheitsverletzungen führen könnte. Auch wenn es sich weigert, böswilligen Code zu erstellen, kann es dennoch anfälligen Code produzieren, der ausgenutzt werden kann.

Darüber hinaus gibt es Bedenken hinsichtlich der Geheimhaltung von Code. Wie viele KI-Modelle lernt ChatGPT aus den Interaktionen mit Benutzern. Wenn Programmierer es nutzen, um Code zu generieren, besteht das Risiko, dass sensible Unternehmensinformationen unbeabsichtigt gespeichert oder repliziert werden.

Vorschläge für die sichere Nutzung von ChatGPT

Um von ChatGPT zu profitieren und gleichzeitig die Risiken zu minimieren, können einige Vorschläge helfen:

  1. Testen: Teste immer den generierten Code, bevor du ihn in der Produktion verwendest. Es ist wichtig, nach Schwachstellen zu suchen, indem du verschiedene Eingaben verwendest.

  2. Iterative Verbesserung: Verwende einen iterativen Ansatz, bei dem du den Code kontinuierlich verfeinerst. Frage ChatGPT nach spezifischen Schwachstellen und suche nach Klarstellungen, wie du sie beheben kannst.

  3. Bild dich weiter: Habe ein Grundwissen über Programmierung und Sicherheitspraktiken. Dieses Verständnis ermöglicht es dir, informierte Fragen zu stellen und Schwachstellen zu erkennen.

  4. Sei vorsichtig mit sensiblen Daten: Vermeide es, ChatGPT zur Generierung von Code zu verwenden, der mit sensiblen Informationen umgeht, es sei denn, du verstehst die Sicherheitsimplikationen vollständig.

  5. Ethische Nutzung fördern: Engagiere dich in Diskussionen über die ethische Nutzung von KI beim Programmieren. Die Anerkennung potenzieller Risiken und operationeller Grenzen ist entscheidend.

Fazit

Zusammenfassend lässt sich sagen, dass ChatGPT zwar die Fähigkeit gezeigt hat, Code zu erzeugen und Einblicke in Sicherheitsfragen zu geben, die Ausgaben jedoch nicht immer sicher sind. Unsere Forschung deutet darauf hin, dass nur eine kleine Anzahl der erzeugten Programme von Anfang an sicher war und Sicherheitsverbesserungen explizite Aufforderungen benötigten.

Für unerfahrene Programmierer kann die Nutzung von ChatGPT ein Lernwerkzeug sein, aber sie müssen wachsam bleiben, um die Sicherheit des produzierten Codes zu gewährleisten. Während KI weiterhin entwickelt wird, muss auch unser Verständnis darüber, wie man sie Ethisch und effektiv im Programmieren einsetzt, wachsen.

Dieser fortlaufende Dialog ist entscheidend, damit Programmierer, sowohl neu als auch erfahren, die Komplexität der Codegenerierung und Sicherheit navigieren können. Die Verantwortung liegt nicht nur bei der Technologie, sondern auch bei den Nutzern, um sichere und ethische Praktiken im Programmieren zu gewährleisten.

Originalquelle

Titel: How Secure is Code Generated by ChatGPT?

Zusammenfassung: In recent years, large language models have been responsible for great advances in the field of artificial intelligence (AI). ChatGPT in particular, an AI chatbot developed and recently released by OpenAI, has taken the field to the next level. The conversational model is able not only to process human-like text, but also to translate natural language into code. However, the safety of programs generated by ChatGPT should not be overlooked. In this paper, we perform an experiment to address this issue. Specifically, we ask ChatGPT to generate a number of program and evaluate the security of the resulting source code. We further investigate whether ChatGPT can be prodded to improve the security by appropriate prompts, and discuss the ethical aspects of using AI to generate code. Results suggest that ChatGPT is aware of potential vulnerabilities, but nonetheless often generates source code that are not robust to certain attacks.

Autoren: Raphaël Khoury, Anderson R. Avila, Jacob Brunelle, Baba Mamadou Camara

Letzte Aktualisierung: 2023-04-19 00:00:00

Sprache: English

Quell-URL: https://arxiv.org/abs/2304.09655

Quell-PDF: https://arxiv.org/pdf/2304.09655

Lizenz: https://creativecommons.org/licenses/by/4.0/

Änderungen: Diese Zusammenfassung wurde mit Unterstützung von AI erstellt und kann Ungenauigkeiten enthalten. Genaue Informationen entnehmen Sie bitte den hier verlinkten Originaldokumenten.

Vielen Dank an arxiv für die Nutzung seiner Open-Access-Interoperabilität.

Mehr von den Autoren

Ähnliche Artikel