Andrej Karpathy ist ehemaliger Forschungswissenschaftler und Gründungsmitglied von OpenAI. Außerdem war er Senior Director of AI bei Tesla.
In letzter Zeit verwendet er Copilot, das GPT-3 zur Codegenerierung nutzt. Er twitterte dazu:
„Lesenswerter Beitrag über das Reverse Engineering von GitHub Copilot. Copilot hat meine Programmiergeschwindigkeit dramatisch erhöht – es ist schwer, sich vorzustellen, wieder zum „manuellen Programmieren“ zurückzukehren. Ich lerne noch, damit umzugehen, aber schon jetzt schreibt es etwa 80 % meines Codes mit einer Genauigkeit von etwa 80 %. Eigentlich programmiere ich gar nicht richtig, ich formuliere Prompts und bearbeite sie.“
Während ChatGPT die Welt in jüngster Zeit in seinen Bann gezogen hat, ist generative KI tatsächlich schon seit einigen Jahren auf dem Vormarsch. Ein wichtiger Anwendungsbereich ist die Unterstützung bei der Codeentwicklung.
Dennoch gibt es bei diesen Systemen einige Probleme, etwa Sicherheitslücken. Zu diesem Schluss kommt eine Studie von Wissenschaftlern der Stanford University. Sie merken:
„Wir haben festgestellt, dass Teilnehmer mit Zugriff auf einen KI-Assistenten häufig mehr Sicherheitslücken produzierten als Teilnehmer ohne Zugriff. Besonders deutlich waren die Ergebnisse bei String-Verschlüsselung und SQL-Injection … Überraschenderweise stellten wir außerdem fest, dass Teilnehmer mit Zugriff auf einen KI-Assistenten eher glaubten, sicheren Code geschrieben zu haben, als Teilnehmer ohne Zugriff auf den KI-Assistenten.“
Außerdem lesenswert: Cybersecurity-Analysten nutzen ChatGPT zur Analyse von Schadcode und zur Vorhersage von Bedrohungen
KI-Systeme zur automatischen Codegenerierung verstehen
Integrierte Entwicklungsumgebungen (IDEs) verfügen bereits seit einiger Zeit über intelligente Systeme zur Verbesserung des Programmierens. Dazu gehören unter anderem Autovervollständigung, Codevorschläge und erweitertes Debugging.
Doch das Aufkommen großer Sprachmodelle wie GPT-3, Codex, Copilot und ChatGPT hat die Entwicklung grundlegend verändert. Sie nutzen generative KI-Techniken wie Transformer, unüberwachtes Lernen und bestärkendes Lernen. Durch die Verarbeitung riesiger Datenmengen können LLMs anspruchsvollen Code verstehen und erstellen.
So kann man beispielsweise einen Prompt schreiben wie: „Schreibe eine Funktion in Python, die den Durchschnitt der Zahlen aus der XYZ-Datenbank berechnet.“ Das KI-System erledigt dies. Es versteht sogar den Kontext, etwa welche relevanten Variablendeklarationen eingebunden werden müssen.
Ein KI-basiertes Programmiersystem kann auch Empfehlungen liefern, während jemand programmiert. Wenn man beispielsweise beginnt, den Header einer Funktion zu schreiben, vervollständigt das System den Codeblock. Mit der Tabulatortaste kann man den Vorschlag übernehmen.
„Codegenerierung ist eine der ersten Killeranwendungen für generative KI“, sagte Muddu Sudhakar, Gründer und CEO des Start-ups für generative KI Aisera. „Diese Systeme ersetzen keine Programmierer. Aber sie machen sie zweifellos sehr viel produktiver.“
Probleme der KI-Programmierung
KI-Systeme zur Codegenerierung bringen eine Vielzahl von Problemen mit sich. Sie können „halluzinieren“, das heißt, der Code wirkt zwar solide, weist aber tatsächlich Fehler auf. In manchen Fällen bricht die Codeerstellung aufgrund der Komplexität der Funktionen mittendrin ab.
Diese Probleme sollten jedoch nicht überraschen. KI-Systeme zur Codegenerierung werden anhand riesiger Mengen öffentlicher Repositories trainiert, etwa auf GitHub. Einige der Programme sind möglicherweise nicht gut geschrieben oder entsprechen nicht den gängigen Standards.
Dadurch können auch Sicherheitslücken entstehen.
„Das Vertrauen darauf, dass die KI Code gemäß den Anforderungen der Anfrage generiert, bedeutet nicht, dass der Code unter Verwendung der besten Bibliotheken erstellt wurde, Risiken in der Lieferkette berücksichtigt oder Zugriff auf alle proprietären Tools zum Scannen nach Sicherheitslücken hat“, sagte Matt Duench, Senior Director of Product Marketing bei Okta, einem Unternehmen für Identitätsmanagement. „Oft fehlt der cybersicherheitstechnische Kontext dazu, wie dieser Code innerhalb der internen Umgebung und des Quellcodes eines Unternehmens funktioniert.“
Ein weiteres Problem besteht darin, dass Entwickler möglicherweise nicht über die nötigen Kenntnisse verfügen, um Sicherheitsprobleme zu erkennen. Ein Teil davon liegt daran, wie gut strukturiert der Code aussieht.
„Wenn man ein Programm selbst entwickelt, weiß man ziemlich genau, was es Zeile für Zeile tut“, sagte Richard Ford, Chief Technology Officer beim Cybersicherheitsunternehmen Praetorian. „Während Websites wie StackOverflow bereits einen Fundus an Code bereitstellen, den Entwickler ohne vollständiges Verständnis in ihre eigenen Programme kopieren und einfügen können, liefern Modelle wie ChatGPT mit deutlich weniger Aufwand deutlich mehr Code – und vergrößern damit möglicherweise diese ‚Verständnislücke‘.“
Außerdem lesenswert:
- Leitfaden zur Sicherheit der Software-Lieferkette für Entwickler
- Die besten Scanner für Sicherheitslücken
Sicherheitsprobleme bei der KI-Programmierung bewältigen
Bei der Bewältigung der Sicherheitsrisiken von KI-Systemen zur Codegenerierung sollte zunächst eine gründliche Bewertung des Tools erfolgen. Welche Nutzungsbedingungen gelten? Wie werden die Daten verwendet? Gibt es entsprechende Schutzmechanismen?
Eine Sorge besteht beispielsweise darin, dass potenzielle Verstöße gegen geistiges Eigentum auftreten könnten. Für das Training verwendeter Code kann Lizenzen unterliegen, die seine Nutzung zur Codegenerierung nicht erlauben.
Um dieses Problem anzugehen, hat sich ServiceNow mit Hugging Face zusammengeschlossen und BigCode entwickelt. Ziel ist die Entwicklung eines Programmiertools, das sich an eine „offene und verantwortungsvolle“ KI hält.
Auch wenn ein Tool für die eigene Organisation geeignet ist, sollte es zudem wirksame Code-Reviews geben. „Im Hinblick auf die Cybersicherheit sollten diese Ausgaben sorgfältig von einem Sicherheitsexperten geprüft werden, der ein sicheres Code-Review der Ergebnisse durchführen kann“, sagte Duench. „Außerdem sollten die Ergebnisse mit einer Datenbank bekannter bestehender Sicherheitslücken abgeglichen werden, um potenzielle Risikobereiche zu identifizieren.“
Wie dem auch sei: Es sieht so aus, als würden KI-Systeme zur Codegenerierung bleiben – und große Auswirkungen auf die IT haben. Die Technologie wird die Produktivität steigern, die Entwicklung demokratisieren und dazu beitragen, den Mangel an Entwicklern zu lindern.
„Ich glaube nicht, dass Unternehmen darauf reagieren sollten, indem sie diese Art von Unterstützung verbieten“, sagte Ford. „Der Geist ist aus der Flasche, und in dieser schönen neuen Welt werden diejenigen Unternehmen am erfolgreichsten sein, die Fortschritte mit Sorgfalt und Bedacht annehmen – nicht diejenigen, die sie entweder rundweg ablehnen oder rücksichtslos einsetzen, als wären sie ein Allheilmittel.“
Sehen Sie sich die besten Tools für Codesicherheit und Debugging





