KI-Assistenten für die Softwareentwicklung: Schwachstellen vorprogrammiert

Eine Untersuchung hat ergeben, dass Codex und Co dazu verleiten können, Code mit Schwachstellen zu schreiben.

In Pocket speichern vorlesen Druckansicht 3 Kommentare lesen

(Bild: Sashkin/Shutterstock.com)

Lesezeit: 5 Min.
Von
  • Rainald Menge-Sonnentag
Inhaltsverzeichnis

Drei Informatiker und eine Informatikerin an der Stanford University haben untersucht, wie sich der Einsatz von KI-Assistenten beim Programmieren auf die Sicherheit des Codes auswirkt. Dazu stellten sie sechs Aufgaben, die das Risiko von Schwachstellen bergen. Für drei Aufgaben war Python, für zwei JavaScript und für eine C die geforderte Programmiersprache.

Das Team wollte mit der Studie Antworten auf drei Fragen finden: Ändert der Einsatz eines KI-Assistenten etwas daran, ob ein Code Schwachstellen enthält? Vertrauen Entwicklerinnen und Entwickler den Assistenten und glauben, dass diese sicheren Code schreiben? Wie beeinflusst die Programmiersprache und der Umgang der User mit den KI-Assistenten das Ausmaß der Schwachstellen.

Die Testgruppe bestand aus 47 Personen mit unterschiedlicher Programmiererfahrung. Zweidrittel waren Studenten, 19 Prozent Absolventen und 15 Prozent professionelle Entwickler. 87 Prozent der Personen waren jünger als 25 Jahre. Die Testgruppe wurde in eine Experimentgruppe mit 33 und eine Kontrollgruppe mit 14 Personen unterteilt.

Erstere hatte für die Aufgaben Zugriff auf OpenAI Codex, das auch die Grundlage für GitHub Copilot ist, die zweite Gruppe musste ihren Code ohne KI-Assistenten schreiben. Als Arbeitsumgebung diente für alle eine spezielle UI, die unter anderem für die Experimentgruppe eine genauere Anpassung der Prompts und Hyperparameter für den Assistenten erlaubt. Dass die Studie die Sicherheit des Codes betrachtet, erfuhren die Teilnehmerinnen und Teilnehmer erst nach Abschluss der Untersuchung, die anonymisiert erfolgte.

Als Grundlage dienten sechs Aufgaben, von denen letztlich nur fünf in die Untersuchung einflossen, da sich eine als zu trivial herausstellte. Die Developer mussten unter anderem in Python einen String mit einem symmetrischen Schlüssel ver- und entschlüsseln, mit JavaScript Eingaben verarbeiten und einer Datenbanktabelle hinzufügen und in C einen Integer-Wert in einen String umwandeln.

Das Team, das die Untersuchung durchgeführt hat, analysierte die Ergebnisse zum einen nach der korrekten Ausführung und zum anderen nach der Security. Je nach Aufgabenstellung gab es sowohl für die Korrektheit als auch die Sicherheit mehrere Abstufungen.

Die Tabellen vergleichen die Experimentgruppe (blau) mit der Vergleichsgruppe hinsichtlich der Sicherheit und Korrektheit des Codes. Nicht alle Prozentzahlen lassen sich auf 100 addieren, da unklare oder nicht abgegebene Ergebnisse nicht aufgeführt sind.

(Bild: Paper auf arXiv)

Durch die Bank schneidet die Kontrollgruppe hinsichtlich der Security besser ab als die Personen, die KI-Assistenten verwendet haben. Besonders deutlich ist der Unterschied bei der Ver- und Entschlüsselung mit Python. Bezüglich der Korrektheit gibt es keine größeren Unterschiede. Bei einigen Aufgaben liegt die Gruppe mit Assistent vorne, bei anderen die ohne.

Alle Teilnehmerinnen und Teilnehmer mussten angeben, für wie sicher und wie korrekt sie ihren Code halten. Diejenigen, die einen KI-Assistenten verwendet haben, schätzten ihren Code durchgehend als sicherer ein als diejenigen, die ihn ohne Hilfe geschrieben hatten.

Allerdings vertrauten viele den KI-Systemen nicht blind, kopierten den Code also nicht einfach, sondern bearbeiteten ihn zuvor. Dabei gab es große Unterschiede je nach Aufgabestellung: Für die Datenbankbearbeitung mit JavaScript übernahmen viele den Großteil des Codes, für das Erstellen eines String aus einem Integer in C, hat fast niemand den Code einfach kopiert.

Viele nahmen nicht den ersten Vorschlag des KI-Assistenten an. Im Schnitt haben die Testpersonen 4,6 Anfragen pro Aufgabe gestellt. Diejenigen mit Erfahrungen im Bereich Security haben mehr Aufwand in das Anpassen des Prompts und der Hyperparameter wie der Temperatur gelegt, um die Ergebnisse zu optimieren.

Die Studie kommt schließlich zu dem Ergebnis, dass diejenigen, die einen KI-Assistenten benutzen, mit höherer Wahrscheinlichkeit unsicheren Code erstellen und dessen Security gleichzeitig mehr vertrauen als andere Developer. Sie reiht sich damit in andere Untersuchungen ein wie die auf der Black Hat 2022 von zwei Professoren vorgestellte, die zu einem ähnlichen Schluss kommt.

Ob das Ergebnis ein Beleg dafür ist, dass KI-Assistenten zu mehr Schwachstellen in Code führen, ist trotzdem fraglich. Zum einen ist die Testgruppe mit 47 Personen alles andere als repräsentativ, und auch die Altersstruktur und Erfahrung spiegelt nicht diejenigen wider, die produktiven Code schreiben. Zum anderen dürften viele derjenigen, die den KI-Assistenten vertrauen, ebenso auf fremden Code verlassen, den sie aus Stack Overflow oder aus fremden GitHub-Repositories kopieren.

Letztlich hat Codex sein Wissen aus öffentlichen Repositories. Daraus folgt wenig verwunderlich, dass es "da draußen" reichlich Code mit Schwachstellen gibt. Die Lehre sollte also nicht sein, dass KI-Assistenten ein zusätzliches Sicherheitsrisiko sind, sondern (wenig originell) dass man fremden Code grundsätzlich nicht blind vertrauen darf – unabhängig davon, ob Codex und Co ihn ausspucken oder er aus einem fremden Projekt stammt.

Weitere Details und zusätzliche Zahlen zur Untersuchung finden sich in der Studie auf arXiv.

(rme)