Skip to main content

Wie SAS seinen KI-generierten Code absichert

Artikel von
Headshot of Gerald Crescione

Gerald Crescione

feature snyk platform

15. April 2024

0 Min. Lesezeit

Programmierassistenten auf Basis generativer KI verändern die technische Weltanschauung. Diese Innovation hat die Arbeitsweise von Entwicklerinnen und Entwicklern revolutioniert und Effizienz und Entwicklungsgeschwindigkeit auf ein neues Niveau gehoben. Die höhere Geschwindigkeit durch KI stellt Sicherheitsteams vor neue Herausforderungen. Die Modelle dieser Programmierassistenten werden mit hochwertigem und minderwertigem Code aus dem gesamten Web trainiert. Der von ihnen generierte Code funktioniert zwar, bringt aber auch Qualitäts- und Sicherheitsprobleme von außen in unsere Projekte ein. KI eröffnet zudem neue Angriffsvektoren, die in Unternehmen erheblichen Schaden anrichten können. Sicherheitsteams müssen sich diesen Herausforderungen stellen und dafür sorgen, dass dieses leistungsstarke Tool sicher und verantwortungsvoll eingesetzt wird.

Diese neuen Gegebenheiten werfen bei Teams Fragen auf: Wo lässt sich KI in der Softwareentwicklung einsetzen? Welche Vorkehrungen sollten sie treffen, um uneinheitliche Ergebnisse dieser Tools zu minimieren? Und wie können sie mit KI weiter innovativ sein und sich zugleich vor neuen Risiken schützen?

Snyk veranstaltete kürzlich ein Live-Webinar zu all diesen Themen. Moderiert wurde es von Clinton Herget, als Sprecher waren Brett Smith und Chris Knackstedt dabei. Sie sprachen darüber, welche Risiken KI-Code für Unternehmen im Jahr 2024 birgt und mit welchen Maßnahmen sie ihre Anwendungen vor diesen neuen Bedrohungen schützen.

Die Risiken KI-generierten Codes

Smith und Knackstedt sind sich einig, dass generative KI die Softwareentwicklung zweifellos revolutioniert hat und Entwicklerinnen und Entwicklern weltweit als Programmierpartner zur Seite steht. Sie bietet einen Ausgangspunkt, wenn Code von Grund auf neu geschrieben wird, und beschleunigt so den Entwicklungsprozess erheblich. Sie erwarten, dass Entwicklerinnen und Entwickler in naher Zukunft mithilfe generativer KI ihre Arbeitsabläufe beschleunigen und ihre Effizienz insgesamt steigern können.

Knackstedt freut sich außerdem auf die positiven Auswirkungen von KI-Tools, da diese maßgeschneiderte Lösungen für spezifische Probleme bieten. Er sagte: „Ich bin äußerst beeindruckt davon, wie weit sich generative KI in nur einem Jahr entwickelt hat – insbesondere angesichts der neuartigen Anwendungsfälle, die Menschen für einige dieser Tools in Betracht ziehen.“

Bei sachgemäßer Verwendung kann KI die Entwicklung beschleunigen. Bei unsachgemäßer Verwendung kann sie jedoch schwerwiegende Sicherheitsprobleme verursachen. KI-Tools machen es Sicherheitsteams deutlich schwerer, mit anderen technologischen Fortschritten Schritt zu halten. Viele versuchen noch immer, die letzte digitale Transformation zu verarbeiten und sich mit DevOps, Cloud, CI/CD sowie vielen anderen Technologien und Prozessen vertraut zu machen. Diese laufenden digitalen Transformationen werden durch den Siegeszug generativer KI beschleunigt. Daher müssen sich Sicherheitsteams dringender denn je anpassen.

KI-generierter Code beschleunigt nicht nur die bereits laufende digitale Transformation, sondern kann auch Sicherheitsrisiken für Unternehmen bergen. Dafür gibt es zwei Hauptgründe.

KI-generierter Code ist nicht automatisch sicher oder hochwertig

Generative KI-Tools greifen auf hochwertige und minderwertige Trainingsdaten aus dem gesamten Internet zurück: auf gut geschriebenen Code erfahrener Entwicklerinnen und Entwickler, fehleranfälligen Code von Neulingen und sogar auf absichtlich funktionsunfähige Codebeispiele, die in Foren wie Stack Overflow veröffentlicht wurden. Da generative KI so unterschiedliche Codebeispiele aufnimmt, entspricht die Qualität der Ergebnisse dem, was Sie von einer Nachwuchsentwicklerin oder einem Nachwuchsentwickler erwarten würden.

Die Sprecher betonten außerdem, wie wichtig es ist zu verstehen, dass generative KI-Tools von heute Schwachstellen nicht standardmäßig erkennen können. Herget verwies auf eine Studie von Snyk, die dies belegt. Unser Team erstellte eine Java-Klasse mit mehreren Methoden und nannte eine davon „SQL injection“. Anschließend fragten wir mehrere KI-Programmierassistenten, ob der Code eine SQL-Injection-Schwachstelle enthielt. Alle antworteten mit „Ja“. Nachdem wir einfach den Klassennamen geändert hatten, ohne die Funktionalität des Codes anzutasten, antworteten dieselben Assistenten mit „Nein“. Das Experiment zeigte, dass KI die symbolische Bedeutung bestimmter Begriffe im Code noch immer nicht versteht.

Externe Bedrohungen können KI-Modelle ausnutzen

KI beschleunigt nicht nur bestehende Probleme, sondern bringt auch das Risiko neuer Angriffsvektoren mit sich. Angreifer können generative KI mit Code-Injections, Data Poisoning, Prompt-Injections und Hijacking ausnutzen. Dadurch kann das Modell entweder zu schädlichen Aktionen verleitet werden (etwa dazu, absichtlich unsicheren Code zu schreiben), oder Angreifer können vertrauliche Trainingsdaten stehlen.

Halluzinationen, bei denen KI-Tools Verweise, Codebibliotheken oder Funktionen generieren, die es nicht gibt, stellen ein weiteres Sicherheitsproblem dar. Angreifer können KI-Halluzinationen mit Methoden wie Library Squatting ausnutzen. Wenn eine KI beispielsweise eine nicht existierende Codebibliothek halluziniert, kann ein Angreifer diese vermeintliche Bibliothek ausnutzen, indem er eine echte Version mit schädlichem Code erstellt. Der KI-generierte Code, der auf diese Bibliothek verweist, bindet dann den schädlichen Code in die Anwendung ein.

So verwenden Sie KI-generierten Code sicher

Generative KI birgt zwar Sicherheitsrisiken, ist für viele Entwicklerinnen und Entwickler von heute aber dennoch unverzichtbar und wird so bald nicht wieder verschwinden. Sie bietet wertvolle Unterstützung, hilft Entwicklungsteams dabei, Schreibblockaden zu überwinden, und dient als Programmierassistenz auf Junior-Level. So können Entwicklerinnen und Entwickler schneller als je zuvor programmieren.

Dieses beispiellose Tempo wirkt sich jedoch direkt auf die Sicherheitsteams von heute aus. Sie müssen mehr Code in kürzerer Zeit absichern. Deshalb brauchen sie Strategien, mit denen sie KI-generierten Code besser schützen können, ohne technische Innovationen auszubremsen. Mit den folgenden Tipps können Teams den heutigen schnellen, KI-gestützten Entwicklungszyklen gerecht werden:

Entwicklerinnen und Entwickler gezielt schulen

Zunächst müssen Entwicklungsteams verstehen, was die einzelnen KI-Tools können und was nicht. Smith sagte: „Das ist kein Allheilmittel, das all Ihre Probleme löst. Es ist kein Programm für erfahrene Entwicklerinnen und Entwickler. Es ist ein Programm für Junior-Teams, das 170 Codezeilen ausgeben kann … Ihre Entwicklerinnen und Entwickler müssen verstehen, dass sie dadurch keinen besseren oder sichereren Code schreiben als zuvor. Sie haben jetzt einfach eine sehr intelligente Autovervollständigung.“

Darüber hinaus müssen Unternehmen Entwicklerinnen und Entwickler darüber aufklären, wie sie beim Eingeben von Code-bezogenen Prompts in ein KI-Tool geistiges Eigentum und die Privatsphäre schützen. Entwicklungsteams müssen unbedingt wissen, dass generative KI Prompts als Trainingsdaten nutzt. Vertrauliche Ressourcen können dadurch gefährdet werden, wenn diese Daten zur Beantwortung der Prompts anderer verwendet werden.

Die Verhaltensanalyse spielt eine wichtige Rolle dabei, den Erfolg dieser Schulungsmaßnahmen zu messen. Knackstedt sagte: „Wir müssen Prozesse und Prinzipien einführen, die stärker auf Verhaltensanalysen setzen – nicht nur beim Code selbst, sondern auch bei den Personen, die den Code entwickeln, und bei denen, die die Lösungen verwenden, auf denen der Code basiert … So können wir uns ein ganzheitlicheres Bild davon machen, wie KI bestimmungsgemäß eingesetzt werden soll und wie sie tatsächlich in der Praxis verwendet wird.“

Bewährte Sicherheitsmaßnahmen verstärken

Sicherheitstests in den Entwicklungslebenszyklus zu integrieren, ist aus DevSecOps-Sicht schon lange wichtig. Da sich das Tempo der Code-Injection durch KI jedoch deutlich erhöht hat, ist es für Unternehmen wichtiger denn je, Sicherheitstests in ihre Code-Pipelines zu integrieren.

Smith berichtete, dass sein Team statische Codeanalysen einsetzt, um mit der beispiellosen Geschwindigkeit Schritt zu halten, mit der KI-gestützte Entwicklung Codeprobleme hervorbringt. Er sagte: „Mit dem Aufkommen generativer KI gelangt immer mehr anfälliger Code mit einer Geschwindigkeit in unsere Pipeline, die wir bisher nicht kannten. Jedes Mal, wenn Sie Code einspielen, wird er mit Snyk gescannt. Zusammenführen können Sie ihn erst, wenn er die Prüfung besteht. Snyk Code (SAST) als Teil unserer automatisierten Prüfpunkte hilft uns, die schädlichen Aspekte generativer KI zu bekämpfen. Wenn Sie nicht ohne Weiteres erkennen können, ob etwas von einer Maschine oder einem Menschen generiert wurde, testen Sie alles. Testen Sie häufiger und mit einem Toolset, das mit der Geschwindigkeit moderner DevSecOps mithalten kann, ohne jemanden auszubremsen.“

Mehrstufige Tests einführen

Teams sollten außerdem überlegen, wie sie ihren KI-generierten Code mit der richtigen Kombination aus automatisierten Tools und manueller Prüfung gegenprüfen können. Knackstedt zufolge „sollte generatives Programmieren mit gewissen Leitplanken und unter Berücksichtigung bestimmter Aspekte eingesetzt werden. Grundsätzlich würde ich sicherstellen, dass ein Mensch in den Prozess eingebunden ist, und darauf achten, dass die Ergebnisse generativer KI-Lösungen nicht blind übernommen, sondern gründlich geprüft werden.“

Smith erläuterte, wie SAS gründliche Prüfungen mit automatisierter Codekontrolle durch Snyk SAST und zwei Prüfpunkten mit menschlicher Beteiligung durchführt. Er sagte: „Wir haben in GitHub Regeln eingerichtet, nach denen zwei Personen den Code prüfen müssen, bevor er zusammengeführt werden kann – eine davon muss für den Code verantwortlich sein. Erst danach können wir ihn zusammenführen … Aus meiner Sicht müssen Menschen den Code vorher gesehen haben, und er muss die automatisierten Prüfungen bestehen.“

Auf Konsistenz achten

Für Smith erfordert die Absicherung von KI-Prozessen einheitliche Sicherheitsmaßnahmen auf allen Ebenen der Entwicklung – von Infrastructure as Code über den Quellcode bis hin zur Dokumentation. Er sagte: „Wir versuchen, alles gleich zu behandeln … Wenn wir allem dieselbe Bedeutung beimessen, wenden wir auch bei allen dieselbe Sorgfalt auf die Sicherheitsmaßnahmen an.“

Auch Knackstedt hob hervor, wie wichtig Konsistenz ist. Entscheidend sei, „eine gewisse Standardisierung der Tools sicherzustellen, mit denen Sie Ihren Code erstellen, und dafür zu sorgen, dass diese Tools in Ihrem Unternehmen geschützt sind. Es geht darum zu verstehen, welche Daten zum Feinabstimmen der Modelle oder zum Ergänzen der Modelle mit zusätzlichem Kontext in Ihrem Unternehmen verwendet werden.“

Mit KI-generiertem Code vorankommen

Wenn Entwicklungsteams generative KI einsetzen, werden sich wahrscheinlich einige neue Sicherheitstrends abzeichnen. So ist beispielsweise mit mehr KI-Komponenten in Sicherheitstools zu rechnen, die auf Probleme im gesamten SDLC reagieren. Knackstedt beschrieb dies als „Feuer mit Feuer bekämpfen und Möglichkeiten finden, KI und generative KI in Schutzmaßnahmen einzubauen. So können Sie Probleme genauso schnell verstehen und dieselbe Art von Logik verwenden.“

Außerdem nutzt nicht nur Ihr Entwicklungsteam generative KI zum Schreiben von Code. Wahrscheinlich experimentieren auch Ihre Drittanbieter mit dieser Technologie. Smith erklärte: „Wenn wir Online-Anbieter aufnehmen, nutzen wir zunehmend Software-as-a-Service in unserem SDLC … Woher weiß ich, ob sie KI verantwortungsvoll einsetzen?“ Best Practices für die Software-Lieferkettensicherheit sind angesichts der potenziellen KI-Schwachstellen beim Einsatz von SaaS-Anbietern wichtiger denn je.

Letztlich hängt der Erfolg bei der Absicherung KI-generierten Codes von einem Modell gemeinsamer Verantwortung ab – ähnlich wie bei der Cloud-Sicherheit zwischen Nutzenden und Anbietern. Knackstedt sagte: „Die breite Nutzung künstlicher Intelligenz im gesamten Unternehmen erfordert eine stärkere Integration verschiedener Risikomanagementpraktiken. So lässt sich sicherstellen, dass künstliche Intelligenz übergreifend und verantwortungsvoll bereitgestellt, verwaltet und überwacht wird und ihre Nutzung transparent bleibt.“

Dieses Gespräch mit Clinton Herget, Brett Smith und Chris Knackstedt beleuchtet nur einen kleinen Teil davon, wie generative KI die Codeentwicklung heute beeinflusst und wie sich diese neue Technologie sicher einsetzen lässt. Weitere Informationen zur Absicherung KI-generierten Codes finden Sie in unserem Bericht von 2023 zu KI-Code, Sicherheit und Vertrauen in der modernen Entwicklung.

Sichern Sie KI-generierten Code ab

Erstellen Sie Ihr kostenloses Snyk-Konto und sichern Sie KI-generierten Code in wenigen Minuten ab. Oder buchen Sie eine Demo mit unseren Experten und erfahren Sie, wie Snyk Ihre Anwendungsfälle für Entwicklersicherheit unterstützt.

Gepostet in: