Generative KI hat enorme Auswirkungen auf Softwareentwicklung und Softwaresicherheit

Illustration Absmeier foto freepik

Seit der Veröffentlichung von ChatGPT im November 2022 arbeitet die Technologiebranche daran, solche auf annähernd menschlichem Level funktionierenden Konversationsschnittstellen zu etablieren und praktisch zu nutzen.

Fast jedes größere Unternehmen verbindet heute seine interne oder produktbezogene Dokumentation mit einem großen Sprachmodell, sogenannten »Large Language Models« oder kurz LLMs, um Fragen möglichst schnell zu beantworten. Gleichzeitig kommen generative KI-Systeme bei der Entwicklung und Erstellung neuer technischer Lösungen zum Einsatz, sei es für Marketinginhalte, Code für Webanwendungen oder im Chipdesign.

 

Der Hype hat seine Schattenseiten.

So stolpert man in Diskussionen über Chatbots regelmäßig über den Begriff »Halluzinationen«. Und auch die Annahme, dass eine menschenähnliche Sprache quasi automatisch für »gesunden Menschenverstand« steht, kann man getrost in Frage stellen. Potenzielle Nutzer von LLM-basierten Systemen sollten die Ergebnisse optimistisch betrachten, aber dabei pragmatisch bleiben.

Die Veröffentlichung des ersten großen Large Language Models löste eine Reihe von Reaktionen aus, eine Welle des Erstaunens, der Neugier und der Befürchtungen. Ganz offensichtlich war die Öffentlichkeit nicht ausreichend auf das überraschend »menschliche« Verhalten des Chatbots vorbereitet. Der Chatbot schien zweckgerichtet, überlegt und auf eine unverkennbar natürlich menschliche Weise zu kommunizieren. Bei aufeinanderfolgenden Chat-Anfragen konnte er sich offenbar sogar an eigene Antworten auf frühere Fragen »erinnern«. Für die Nutzer eröffnete das die Möglichkeit, zusammenhängende und scheinbar komplexe Unterhaltungen aufzubauen und versuchsweise tiefergehende Fragen beantworten zu lassen.

Trotzdem ist es hilfreich, die Systeme so zu betrachten, als seien sie auf dem Entwicklungsstand eines Kleinkinds. Das ist zwar in der Lage, die richtigen Wörter in der richtigen Reihenfolge zu sprechen. Was es aber mangels Erfahrung nicht kann, ist, seine Sicht der Welt kritisch zu überdenken und zu beurteilen. Die Ergebnisse, die generative KI-Systeme liefern, haben sich unser Vertrauen bislang nicht »verdient«. Umso vorsichtiger sollte man sein, wenn die Systeme ohne umfassende Kontrolle genutzt werden.

 

Die Entstehung generativer KI

Die Veröffentlichung nachfolgender Versionen dieser LLMs, wie ChatGPT von OpenAI, Bard von Google, Claude von Anthropic und das quelloffene LLaMA-Modell von Meta, hat bereits gezeigt, wie vielfältig sich diese Modelle einsetzen und nutzen lassen. Die Palette reicht von der spielerischen Simulation natürlicher Unterhaltungen mit einem virtuellen Orakel bis hin zum Verfassen von Gedichten aus abstrakten Dokumenten, der Gestaltung von Lebensläufen und Bewerbungsschreiben, dem Entwurf von Präsentationen und der Zusammenfassung (und manchmal auch dem Verfassen) von journalistischen Artikeln. Während »Prompt Engineering« zu einem der meistgesuchten Begriffe des Jahres wurde, haben die diese Modelle bereits begonnen, jede erdenkliche Art von Text-, Bild- oder Audioinhalten zu erzeugen.

Diese Fähigkeit der generativen KI hat schnell das Interesse von Sicherheitsforschern und Cyberkriminellen gleichermaßen geweckt. Bei vielen Arten von Online-Betrug und Cyberkriminalität im Allgemeinen sind die Kosten eine der Einstiegshürden. Kosten, die entstehen, wenn man jemanden veranlassen will, etwas Bestimmtes mit seinen digitalen Werten zu tun: Wenn der IT-Helpdesk ein Passwort zurücksetzt, ein Computernutzer technischen Support über nicht zurückverfolgbare Geschenkgutscheine bezahlt oder der Finanzchef eines Unternehmens eine nicht genehmigte Rechnung unbedingt sofort bezahlen soll. Jetzt ist es möglich, solche Interaktionen in einem kaum vorstellbaren Ausmaß zu automatisieren und dadurch zu skalieren. Und das zu einem gut kalkulierbaren Preis.

 

LLMs in der Softwareentwicklung: Freund? Feind? Frustration?

Von besonderem Interesse für die Cybersicherheitsbranche war insbesondere der Auftritt von GitHub Copilot auf der Bühne. Dieses LLM-basierte Tool ist in der Lage, Code zu analysieren und auf der Basis von Aufforderungen Ergänzungen oder Korrekturen vorzuschlagen. Das geschieht entweder direkt über eine Chat-ähnliche Schnittstelle oder in Form einer fortgeschrittenen Code-Vervollständigung. Sicherheitsverantwortliche machten sich recht schnell Gedanken über die potenziellen Risiken des Dienstprogramms. Diese betreffen nicht nur die eher oberflächliche Frage, ob diese LLMs sicheren Code erzeugen, sondern auch die tiefergehenden Auswirkungen auf die gesamte Softwareentwicklung.

Bestünde das Risiko für die Softwareintegrität nur darin, dass der von LLMs generierte Code zu gelegentlichen, halluzinierten oder einfach nur schlechten Sicherheitspraktiken führt, könnte man diesen Code einfach sperren. Eine vergleichsweise einfache Lösung. Tatsächlich verfolgen etliche Unternehmen diese Strategie.

Allerdings ist die Welt des Software-Engineering hinreichend komplex. So kann es durchaus vorteilhaft sein, wenn Entwickler, durchaus in bester Absicht, Code aus dem Internet ziehen, um ein frustrierendes Problem zu beheben. Wenn man unter diesen Voraussetzungen LLMs an irgendeiner beliebigen Stelle der Software-Lieferkette einführt, birgt dies nicht unerhebliche nachgelagerte Risiken. Eine Tatsache, die beispielsweise in den am 27. November letzten Jahres veröffentlichten »Guidelines on Secure AI System Development« des britischen NCSC wiederholt hervorgehoben wird.

Noch schlimmer ist, dass Websites wie Reddit, StackOverflow, Wikimedia und andere bereits Maßnahmen ergriffen haben, um Inhalte zu sperren, die anscheinend von solchen LLMs stammen. Allerdings sind die Bewertungsrichtlinien extrem subjektiv. Zudem richten sie sich eher nach Aspekten wie der Reaktionsgeschwindigkeit als nach der Qualität oder der Richtigkeit der Inhalte. Die Reaktion von Google und anderen bestand darin, die generierten Inhalte mit einer Art Wasserzeichen zu versehen. Im Klartext bedeutet das nichts anderes, als dass keine geeignete Methode gefunden wurde, um zuverlässig LLM-generierte Inhalte zu erkennen. Das heißt, man ist gezwungen, die Angebotsseite zu überwachen.

Diese Maßnahmen implizieren, dass das Internet bereits mit von LLMs abgeleiteten Inhalten infiziert wurde. Für den Bereich der Softwareentwicklung heißt das, dass ein Praktikant mit Internetzugang ein genauso hohes Risiko darstellt wie ein nicht vertrauenswürdiges LLM.

 

Wie man für mehr Sicherheit sorgt

Alles in allem trüben LLMs die Aussichten der Softwareentwicklung in vielerlei Hinsicht. Sicherheitsverantwortliche haben folglich kaum eine andere Wahl, als ihre DevSecOps-Positionen zu erweitern, um alle auf Basis von Maschinellem Lernen oder Künstlicher Intelligenz abgeleiteten Funktionen und Inhalte einzubeziehen. Zusätzlich sollten sie proaktiv ausfindig machen, wo genau die Risiken in ihren eigenen SDLCs liegen.

Dazu reicht es nicht aus, die eigene Codebasis zu scannen und sie für sicher zu erklären. Verantwortliche drängen deshalb zunehmend auf eine ganzheitliche Sicht der Sicherheitslage. Eine Sicht, die solche vorgelagerten KI/ML-Risiken einschließt. Dies gilt insbesondere für das »Application Security Posture Management«. ASPM sollte die Validierung des Betriebs, die Bereitstellung und sogar den Ursprung der Schulungsdaten als wichtigen Teil des Softwareentwicklungszyklus einschließen – und nicht nur ein nachgelagerter Aspekt sein. Letztlich werden Unternehmen einen völlig anderen Ansatz für die Anwendungs- und Servicesicherheit finden müssen. Wenn man gewährleisten will, dass eine Anwendung sicher ist, reicht es nicht mehr, lediglich während der Erstellung oder Bereitstellung zu scannen.

Es gilt vielmehr regelmäßig zu validieren, dass sich die Service-Integrationen von Drittanbietern (und die eigenen Dienste) weiterhin verhalten wie erwartet.

Dr. Andrew Bolster, Senior R&D Manager (Data Science) @ Synopsys

 


 

Wie kann man die Sicherheit in der Softwareentwicklung, die mit ki-gestützten Code arbeitet, erhöhen?

Die Sicherheit in der Softwareentwicklung, die mit ki-gestützten Code arbeitet, ist ein wichtiges Thema, das immer mehr Aufmerksamkeit erfordert. Künstliche Intelligenz (KI) kann die Produktivität und Effizienz von Softwareentwicklern erhöhen, indem sie ihnen hilft, schneller und besser zu programmieren. Aber wie kann man sicherstellen, dass der von KI generierte oder vorgeschlagene Code keine Sicherheitslücken oder Fehler enthält?

In diesem Beitrag werden wir einige Tipps und Best Practices vorstellen, die Ihnen helfen können, die Sicherheit in der Softwareentwicklung mit KI zu erhöhen. Dabei werden wir sowohl auf die Rolle der Softwareentwickler als auch auf die Rolle der KI-Systeme eingehen.

 

Die Rolle der Softwareentwickler

Softwareentwickler, die mit KI-gestützten Code arbeiten, sollten sich bewusst sein, dass sie immer noch die volle Verantwortung für das Endprodukt tragen. Das bedeutet, dass sie den von KI generierten oder vorgeschlagenen Code immer überprüfen, testen und validieren müssen, bevor sie ihn in ihre Projekte integrieren. Sie sollten auch darauf achten, dass sie die Quelle und die Qualität der KI-Systeme kennen, die sie verwenden, und dass sie deren Grenzen und Einschränkungen verstehen.

 

Einige Fragen, die sich Softwareentwickler stellen sollten, sind:

  • Woher kommt der KI-gestützte Code? Ist er aus einer vertrauenswürdigen und zuverlässigen Quelle?
  • Wie wurde der KI-gestützte Code trainiert und evaluiert? Welche Daten und Metriken wurden verwendet?
  • Wie transparent und nachvollziehbar ist der KI-gestützte Code? Kann man verstehen, wie er funktioniert und warum er bestimmte Entscheidungen trifft?
  • Wie robust und sicher ist der KI-gestützte Code? Kann er mit verschiedenen Eingaben und Szenarien umgehen? Kann er manipuliert oder angegriffen werden?

Softwareentwickler sollten auch darauf achten, dass sie ihre eigenen Fähigkeiten und Kenntnisse ständig weiterentwickeln und aktualisieren. Sie sollten sich mit den neuesten Trends und Entwicklungen in der Softwareentwicklung und in der KI vertraut machen und sich über die potenziellen Risiken und Herausforderungen informieren. Sie sollten auch bereit sein, von ihren Erfahrungen zu lernen und Feedback zu geben, um die Qualität und Sicherheit ihrer Softwareprojekte zu verbessern.

 

Die Rolle der KI-Systeme

KI-Systeme, die Softwareentwicklern helfen sollen, besseren Code zu schreiben, sollten ebenfalls hohe Standards an Sicherheit und Qualität erfüllen. Sie sollten so konzipiert sein, dass sie nicht nur funktionale Anforderungen erfüllen, sondern auch ethische und rechtliche Anforderungen berücksichtigen. Sie sollten auch transparent und nachvollziehbar sein, damit Softwareentwickler verstehen können, wie sie arbeiten und welche Auswirkungen sie haben.

Einige Aspekte, die bei der Entwicklung von KI-Systemen für die Softwareentwicklung beachtet werden sollten, sind:

  • Die Datenqualität: Die Daten, die zum Trainieren und Testen von KI-Systemen verwendet werden, sollten repräsentativ, relevant und verlässlich sein. Sie sollten auch frei von Voreingenommenheit oder Verzerrung sein.
  • Die Metadaten: Die Metadaten, die den KI-gestützten Code begleiten, sollten ausreichend Informationen enthalten, um seine Herkunft, seinen Zweck, seine Leistung und seine Einschränkungen zu beschreiben. Sie sollten auch Hinweise auf mögliche Fehler oder Schwachstellen enthalten.
  • Die Erklärbarkeit: Die Erklärbarkeit bezieht sich auf die Fähigkeit eines KI-Systems, seine Funktionsweise und seine Entscheidungen zu erklären oder zu rechtfertigen. Dies kann helfen, das Vertrauen und das Verständnis der Softwareentwickler zu erhöhen und mögliche Fehler oder Probleme zu identifizieren.
  • Die Robustheit: Die Robustheit bezieht sich auf die Fähigkeit eines KI-Systems, mit verschiedenen Eingaben und Szenarien umzugehen und angemessen auf unerwartete oder widrige Situationen zu reagieren. Dies kann helfen, die Sicherheit und die Zuverlässigkeit des KI-gestützten Codes zu gewährleisten.
  • Die Sicherheit: Die Sicherheit bezieht sich auf die Fähigkeit eines KI-Systems, sich vor externen Angriffen oder Manipulationen zu schützen und die Vertraulichkeit, Integrität und Verfügbarkeit der Daten und des Codes zu gewährleisten.

 

Fazit

Die Softwareentwicklung mit KI-gestützten Code bietet viele Vorteile und Möglichkeiten, aber auch einige Herausforderungen und Risiken. Um die Sicherheit in der Softwareentwicklung mit KI zu erhöhen, müssen sowohl Softwareentwickler als auch KI-Systeme verantwortungsvoll handeln und hohe Standards an Qualität und Ethik einhalten. Nur so kann man das volle Potenzial von KI für die Softwareentwicklung nutzen und gleichzeitig mögliche negative Auswirkungen vermeiden oder minimieren.

Genki Absmeier