Anwendungssicherheit in Zeiten von Large Language Models
Die Softwareentwicklung ist ein sehr dynamischer Bereich. Das Aufkommen von Large Language Models wie GPT-4 von OpenAI und Llama von Meta hat die Phantasie von Produktentwicklern weltweit beflügelt. Unser Autor befasst sich in diesem Artikel mit den Herausforderungen, die diese neue Technologie mit sich bringt, wie Industrie und Behörden darauf reagieren und welche Richtlinien für eine sichere Anwendungsentwicklung hilfreich sind.
Large Language Models (LLMs) zeichnen sich durch ihre enorme Komplexität aus. Im Gegensatz zu herkömmlichen Softwarekomponenten bestehen diese Modelle aus Milliarden von Parametern. Der Grad der Komplexität verdeckt die Art und Weise, wie diese Modelle Eingaben verarbeiten und Ausgaben generieren. Das erschwert es wiederum, ihr Verhalten zuverlässig zu prognostizieren und zu kontrollieren. Traditionelle Sicherheitstests wie die statische Codeanalyse und die Analyse der Softwarezusammensetzung (Software Composition Analysis, SCA) haben Schwierigkeiten, die nicht-deterministischen und oft unvorhersehbaren Ausgaben von LLMs zu bewältigen.
LLMs generieren ihre Ergebnisse auf der Grundlage riesiger Mengen an Trainingsdaten und in Verbindung mit Daten, die während der Laufzeit gesammelt werden. Dieser datengesteuerte Ansatz unterscheidet sich erheblich von herkömmlichen, deterministischen Programmiermodellen. Leider kommt es vor, dass LLMs versehentlich sensible Informationen aus ihren Trainingsdaten preisgeben – und schlimmer noch, LLMs lernen auch, schädliche Inhalte zu erzeugen. Herkömmliche Sicherheitsmaßnahmen wie die „Einführung von Variablen-Binding, um eine SQL-Injection zu verhindern“ oder die „Einführung von NIST-zugelassenen kryptografischen Chiffren“ sind im Kontext dessen, was LLMs ihren Benutzern präsentierten, nutzlos.
Oft setzt man LLMs so ein, dass sie kontinuierlich lernen. Für die Relevanz und Genauigkeit der Ausgaben ist das von Vorteil. Sicherheit und Datenschutz werden dadurch allerdings zu beweglichen Zielen. Da sich das Verhalten eines Modells verändert, kann das, was heute sicher ist, es schon morgen nicht mehr sein. Wir haben weder Einblick noch Kontrolle darüber, wie die Eingaben verarbeitet und die Ausgaben erzeugt werden.
Welche weitreichenden Folgen das für die praktische Anwendung haben kann, davon haben wir bereits einen Vorgeschmack bekommen: Mitarbeiter hatten beispielsweise versehentlich sensible Geschäftsdaten an LLMs wie ChatGPT weitergegeben, was zu grundlegenden Diskussionen hinsichtlich der Sicherheit führte. Darüber hinaus weckte eine Datenpanne bei ChatGPT ernsthafte Bedenken zu Datenschutzrisiken von KI-gestützten Tools im Allgemeinen. All das sind Anzeichen dafür, dass man in der Ära der Large Language Models die Anwendungssicherheit neu überdenken sollte.
Leitlinien für die Entwicklung sicherer KI-Systeme
Wie der Rest der Welt haben auch die Bundesbehörden das Potenzial von LLMs zur Kenntnis genommen und entsprechende Leitlinien erarbeitet. Kürzlich haben die US Cybersecurity and Infrastructure Agency (CISA) und das britische National Cyber Security Centre (NCSC) gemeinsam ein Whitepaper unter dem Titel „Guidelines for Secure AI System Development“ veröffentlicht. Gegenstand des Papiers ist der Versuch, die Richtlinien für sicheres Programmieren, wie sie etwa das Secure Software Development Framework (SSDF) des NIST festschreibt, für das Zeitalter der LLMs zu überdenken und neu zu positionieren. Das Whitepaper umreißt vier Schwerpunktbereiche:
- Ein sicheres Design ist der Eckpfeiler einer robusten Anwendungsentwicklung. Dazu zählt ein grundlegendes Verständnis der spezifischen Risiken, die mit LLMs verbunden sind, wie z. B. das Potenzial für Prompt Injections oder Training Data Poisoning. Entwicklungsteams sollten unbedingt eine gründliche Bedrohungsmodellierung und Risikobewertung durchführen und die einzigartigen Aspekte von LLMs in ihren Designstrategien berücksichtigen.
- Eine sichere Entwicklung muss über die traditionellen Sicherheitspraktiken hinausgehen. Sie erfordert ein genaues Verständnis des LLM-Ökosystems, einschließlich der Lieferkette von Daten und Modellen. Entwicklersteams müssen sicherstellen, dass die Komponenten, die sie integrieren, einschließlich vorab trainierter Modelle und Datensätze, frei von Schwachstellen sind.
- Eine sichere Bereitstellung erfordert einen zusätzlichen Schutz der Infrastruktur und der zugrunde liegenden Modelle vor potenziellen Bedrohungen wie Denial-of-Service, Excessive Agency oder Prompt Injection. Incident Management-Prozesse sollten nicht nur robust sein, sondern auch auf die dynamische Natur von Bedrohungen im Zusammenhang mit LLMs reagieren können.
- Sicherer Betrieb und Wartung sind unabdingbar, wenn Large Language Models zum Einsatz kommen. Dazu zählen die regelmäßige Überwachung, Aktualisierung und das Patchen ebenso wie die Protokollierung und der Informationsaustausch, um neue Bedrohungen aufzuspüren und darauf zu reagieren. Der Clou dabei ist, dass wir jetzt die Ergebnisse des LLM direkt überwachen müssen.
Die nächsten Schritte auf dem Weg zur sicheren Anwendungsentwicklung
Neben den grundsätzlichen Herausforderungen von Large-Language-Modellen bei der Anwendungsentwicklung und den daraus resultierenden Sicherheitsbestrebungen, ist jetzt noch die Frage der praktischen Implementierung offen.
Welche konkreten Schritte zu einer sicheren LLM-basierten Entwicklung führen, dazu bieten anerkannte Brancheneinrichtungen wie das National Institute of Standards and Technology (NIST), die Cybersecurity and Infrastructure Security Agency (CISA) und das Open Worldwide Application Security Project (OWASP) Hilfestellung. Im Wesentlichen sind es drei Schritte, die eine sichere LLM-basierte Entwicklung anstoßen.
Schritt 1: Ein robustes Sicherheitsrahmenwerk speziell für LLMs
Als Erstes sollten Unternehmen einen Sicherheitsrahmen entwickeln und implementieren, der auf die besonderen Herausforderungen von LLMs zugeschnitten ist und der die branchenanerkannten Richtlinien abbildet. Das NIST hebt ausdrücklich die Bedeutung des Risikomanagements hervor, das auf die verwendeten Technologien zugeschnitten sein sollte.
Dazu braucht man ein grundlegendes Verständnis der besonderen Schwachstellen, die mit LLMs verbunden sind, wie beispielsweise Data Poisoning und der Diebstahl von Modellen. Das bekannte NIST-Rahmenwerk zur Verbesserung der Cybersicherheit bei kritischen Infrastrukturen lässt sich im Sinne eines umfassenden Ansatzes anpassen – also hinsichtlich der Identifizierung von Schwachstellen, der Aufdeckung von Bedrohungen sowie der Vorfallsreaktion und Wiederherstellung in Bezug auf LLMs.
Darüber hinaus entwickelt die CISA aktiv ihre CISA Roadmap for Artificial Intelligence. Sie dient als Leitfaden für die eigenen KI-bezogenen Anstrengungen der CISA. Noch stehen diese Bemühungen ganz am Anfang. Es sind aber schon fünf sogenannte „Lines of Effort“ definiert, die sich zum einen auf die sichere Implementierung und Übernahme von KI beziehen, zum anderen darauf, wie sich kritische Infrastrukturen vor der KI-Nutzung durch Cyberkriminelle und vor nationalstaatlich geförderten Angriffen schützen lassen.
Schritt 2: Umfassende Schulung und Sensibilisierung
Hat man ein Sicherheitsrahmenwerk erfolgreich eingeführt, setzt das voraus, dass die jeweiligen Nutzer über die erforderlichen Fähigkeiten verfügen, es anzuwenden. Unternehmen sollten deshalb umfassende Schulungen zur sicheren KI-Entwicklung als Teil der Gesamtplanung implementieren. Diese Trainings richten sich speziell an Software-Engineering-Teams und konzentrieren sich auf die sichere Entwicklung, Bereitstellung und Wartung von LLMs.
Während sowohl NIST als auch CISA aktiv solche Awareness-Maßnahmen fördern, hat die OWASP mit den OWASP Top 10 for Large Language Model Applications gezielt Materialien bereitgestellt, die sich als Starthilfe nutzen lassen. Wie beim Umgang mit traditionellen AppSec-Schwachstellen auch, sollte man sich zunächst auf spezifische Risiken und Schwachstellen bei der Verwendung von LLMs konzentrieren, wobei eine Taxonomie der Top Ten ausgesprochen hilfreich ist.
Schritt 3: Sicherheitstests einführen und LLM–Output validieren
Ein Großteil der herkömmlichen Sicherheitstests für Anwendungen legt den Fokus auf die Eingaben bei einer Anwendung und auf das, was sie tut. Mit LLMs sollte man sich jetzt stärker als bisher auf die Ergebnisse einer KI-gestützten Anwendung konzentrieren.
An dieser Stelle ist es sinnvoll, die mit offensiven Aufgaben betrauten Sicherheitsfachleute mit ins Boot zu nehmen. Dazu zählen beispielsweise „Red Teams“ und Mitarbeitende, die mit Fuzzing-basierten Sicherheitstools wie dem Dynamic Application Security Testing (DAST) arbeiten. Sie alle sollten ein klares Verständnis erworben haben, welche Daten und Outputs, einem Unternehmen ernsthaft schaden können, wenn sie bei der Verwendung von LLMs offengelegt werden. Daraus sollten Firmen einen LLM-basierenden Plan für Sicherheitstests erstellen und umsetzen. Prompt Injection, Datenlecks und eine Überprüfung des Trainingsprozesses selbst auf das Risiko von Training Data Poisoning sollten unbedingt berücksichtigt werden.
Fazit
Jede Sicherheitsinitiative kann zur Mammutaufgabe werden. Die Applikationsentwicklung in Zeiten von LLMs verschärft die Situation. Die Modelle verändern sich und in der Folge werden die sichere Anwendungsentwicklung und der Datenschutz zu „beweglichen Zielen“. Neben einem entsprechend angepassten Rahmenwerk sind auf Entwickler, aber auch auf weniger technisch versierte Mitarbeitende zugeschnittene Schulungen ein wichtiger Baustein, um häufige Sicherheitsschwachstellen in Anwendungen und im gesamten Software Development Lifecycle (SDLC) zu erkennen, zu entschärfen und zu vermeiden.
John Trest ist Chief Learning Officer bei der VIPRE Security Group.