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.
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.
Ăśberschaubare Testgruppe
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.
FĂĽnf Aufgaben im Blick
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.
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.
Zu viel Vertrauen
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.
Schwachstelle KI-Assistent?
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)