zurück zum Artikel

Programmierhilfe GitHub Copilot macht Code unsicherer

Uli Ries
Aufmacher Github Copilot erzeugt unsicheren Code

(Bild: JINOLD/Shutterstock.com)

Gut 40 Prozent des von GitHub Copilot vorgeschlagenen Codes enthĂ€lt Schwachstellen. Zu diesem Schluss kommen US-Professoren, die die Copilot-VorschlĂ€ge prĂŒften.

Im Rahmen der Sicherheitskonferenz Black Hat 2022 haben die beiden Professoren Hammond Pearce und Benjamin Tan von der New York University gemeinsam mit Kollegen ihre Untersuchung vorgestellt, wie sicher die von Github Copilot vorgeschlagenen Code-Bestandteile sind.

Github Copilot ist seit rund sechs Wochen verfĂŒgbar [1]. Bei der KI-basierten CodevervollstĂ€ndigung handelt sich um eine kostenpflichtige Erweiterung fĂŒr Programmierumgebungen.

Laut der Untersuchung reißen im Schnitt gut 40 Prozent der VorschlĂ€ge, die Copilot als erstes prĂ€sentiert und die der jeweilige Programmierer daher wahrscheinlich auch ĂŒbernimmt, ernst zu nehmende Löcher in die Sicherheit des Codes.

Beeinflusst wird die QualitĂ€t der VorschlĂ€ge von einer ganzen Reihe an Faktoren, darunter die jeweilige Sprache. In C geschriebener Code fĂŒhrte zu mehr unsicheren VorschlĂ€gen als Python-Code. Aber auch die GĂŒte des vom jeweiligen Programmierer bereits geschriebenen Codes oder sogar der Name des Entwicklers haben Einfluss.

Als Grund fĂŒr die teilweise haarstrĂ€ubend unsicheren VorschlĂ€ge machen die Forscher das Training des auf OpenAI Codex [2], einem auf Programmcode optimierten Nachfahren von GPT-3, basierenden Copiloten aus: Die Software schlĂ€gt die jeweils wahrscheinlichste VervollstĂ€ndigung der aktuellen Eingabe vor. Die Wahrscheinlichkeit berechnet sie anhand des Materials, das Copilot wĂ€hrend des Trainings zugefĂŒhrt bekam. Das KI-Modell generiert somit nicht den schnellsten, elegantesten oder sichersten Code, sondern eher den, der am besten zum vorhandenen Code passt.

So ist dann auch nachvollziehbar, warum Copilot wÀhrend des Tests den seit Langem als unsicher bekannten Hash-Algorithmus MD5 zum Verschleiern von Passwörtern vorschlug. Wahrscheinlich traf Copilot in den Trainingsdaten hÀufiger auf MD5 als auf die sichereren Alternativen wie SHA-256 oder SHA-3.

Um die Sicherheit der vorgeschlagenen Code-Bestandteile zu bewerten, untersuchten die Forscher die mit Hilfe von Copilot erzeugten Programme sowohl automatisiert mittels Githubs CodeQL, als auch manuell. Als Benchmark dienten 18 EintrĂ€ge aus der Liste der Top 25 Common Weakness Enumerations (CWEs) aus dem Jahr 2021 [3]. Die Forscher schrieben zuerst 54 sogenannte Szenarien fĂŒr die 18 CWEs. Die Szenarien sind unvollstĂ€ndige Programmschnipsel, die Copilot dazu auffordern, Code zu generieren, der eine CWE enthalten könnte. In den Szenarien selbst ist noch kein unsicherer Code enthalten.

Die Forscher ließen Copilot jeweils maximal 25 VorschlĂ€ge zum betreffenden Szenario beisteuern und prĂŒften den Code anschließend auf FunktionstĂŒchtigkeit. De facto lauffĂ€hige Programme unterzogen sie dann der Sicherheitsbewertung.

Von den insgesamt 1084 validen Programmen enthielten 44 Prozent eine CWE. Im Fall von 24 der 54 Szenarien war es jeweils der erste von Copilot vorgeschlagene Schnipsel, der verwundbaren Code erzeugt hat. Die Forscher sagten wĂ€hrend ihres Vortrags, dass sie diese Top-VorschlĂ€ge fĂŒr gefĂ€hrlicher halten als per Copy-and-paste von Stackoverflow eingefĂŒgten Code, da letzteres eine grĂ¶ĂŸere HĂŒrde sei als das Akzeptieren der Copilot-VorschlĂ€ge.

Bezogen auf die Programmiersprachen zeigten sich deutliche Unterschiede. WÀhrend 50 Prozent der 513 in C geschriebenen Programme Schwachstellen hatten, lag der Wert im Fall von Python bei gut 38 Prozent. In einem Whitepaper haben die Forscher sÀmtliche Resultate [4] im Detail festgehalten. Darunter auch die, bei denen Copilot sich mittels VervollstÀndigung von Verilog-Code am Design von Hardware-Komponenten versuchen sollte.

Jetzt heise security PRO entdecken Jetzt heise security PRO entdecken [5]

(dmk [6])


URL dieses Artikels:
https://www.heise.de/-7217314

Links in diesem Artikel:
[1] https://www.heise.de/news/KI-Programmiergehilfe-GitHub-Copilot-ist-fertig-7146814.html
[2] https://gpt3demo.com/apps/openai-codex
[3] https://www.heise.de/news/Top-25-der-Sicherheitsluecken-Buffer-Overflows-als-groesste-Gefahrenquelle-6148053.html
[4] https://arxiv.org/pdf/2108.09293.pdf
[5] https://pro.heise.de/security/?LPID=39555_HS1L0001_27416_999_0&wt_mc=disp.fd.security-pro.security_pro24.disp.disp.disp
[6] mailto:dmk@heise.de