Share
Beitragsbild zu KI auf Abwegen: Wenn der Code Gespenster sieht

KI auf Abwegen: Wenn der Code Gespenster sieht

Wir haben ein Paket für Sie! Eine umfassende Analyse von Paket-Halluzinationen durch Code generierende LLMs + Was einst als treuer Helfer für Entwickler galt, entwickelt sich zunehmend zur Sicherheitsbedrohung: Generative KI-Modelle, die Code schreiben, bringen Risiken für die Software-Lieferkette mit sich. Rund 97 Prozent der Entwickler nutzen mittlerweile Künstliche Intelligenz zur Code-Erstellung – eine Entwicklung, die nicht nur die Arbeit erleichtert, sondern auch neue Angriffsflächen für Cyberkriminelle schafft.

Eine Studie von Forschern der University of Texas at San Antonio, der University of Oklahoma und der Virginia Tech warnt: Wer KI zur Programmierung einsetzt, sollte das mit größter Vorsicht tun. Denn durch die Kombination von zentralisierten Paketquellen wie dem Python Package Index (PyPI), populären Programmiersprachen wie Python oder JavaScript und KI-gestützter Codegenerierung entstehen neue, bislang wenig beachtete Risiken.

Im Zentrum steht dabei ein Phänomen, das die Wissenschaftler als „Paket-Halluzinationen“ bezeichnen:

KI-Modelle erfinden beim Schreiben von Code mitunter Softwarepakete, die gar nicht existieren – oder verweisen auf scheinbar legitime Bibliotheken, die in Wahrheit von Angreifern kontrolliert werden könnten. Damit wird der Code zur Einfallstür für potenzielle Attacken auf die gesamte Lieferkette.

Die Abhängigkeit beliebter Programmiersprachen wie Python und JavaScript von zentralisierten Paket-Repositorys und Open-Source-Software in Verbindung mit dem Aufkommen von Code generierenden Large Language Models (LLMs) hat eine neue Art von Bedrohung für die Software-Lieferkette geschaffen: Paket-Halluzinationen. Diese Halluzinationen, die durch widersprüchliche Fehler bei der Codegenerierung mit LLMs entstehen, stellen eine neuartige Form von Paketverwirrungsangriffen dar, die eine erhebliche Gefahr für die Integrität der Software-Lieferkette darstellen.

In diesem Artikel wird eine strenge und umfassende Bewertung von Paket-Halluzinationen in verschiedenen Programmiersprachen, Umgebungen und Parametern durchgeführt, um zu untersuchen, wie sich verschiedene Modelle und Konfigurationen auf die Wahrscheinlichkeit der Generierung fehlerhafter Paketempfehlungen auswirken, und um die Ursachen dieses Phänomens zu identifizieren. Unter Verwendung von 16 gängigen LLMs für die Codegenerierung und zwei einzigartigen Prompt-Datensätzen generieren wir 576.000 Code-Beispiele in zwei Programmiersprachen, die wir auf Paket-Halluzinationen analysieren. Unsere Ergebnisse zeigen, dass der durchschnittliche Prozentsatz an halluzinierten Paketen bei kommerziellen Modellen mindestens 5,2 % und bei Open-Source-Modellen 21,7 % beträgt, darunter 205.474 einzigartige Beispiele für halluzinierte Paketnamen, was die Schwere und Verbreitung dieser Bedrohung weiter unterstreicht.

Um dieses Problem zu lösen, implementieren wir mehrere Strategien zur Halluzinationsminderung und zeigen, dass diese die Anzahl der Paket-Halluzinationen bei gleichbleibender Codequalität deutlich reduzieren können. Unsere Experimente und Ergebnisse zeigen, dass Paket-Halluzinationen ein anhaltendes und systemisches Phänomen bei der Verwendung modernster LLMs für die Codegenerierung sind und eine bedeutende Herausforderung darstellen, die die dringende Aufmerksamkeit der Forschungsgemeinschaft verdient.

Die jüngsten Fortschritte in der generativen KI, die auf Large Language Models (LLMs) wie GPT-4 und LlaMA [60] basieren, haben die KI-Fähigkeiten in verschiedenen Bereichen revolutioniert und zeichnen sich in einer Vielzahl von Aufgaben wie Bildsynthese, Textgenerierung und Verständnis natürlicher Sprache aus. Eine solche Anwendung ist die Codegenerierung, die in der Regel durch das Training oder die Feinabstimmung eines LLM unter Verwendung riesiger Mengen von Programmierdaten aus Online-Repositorien (z. B. GitHub), technischen Foren und Dokumentationen erfolgt. Sowohl kommerzielle/Black-Box-Varianten (z. B. GPT-4, Claude) als auch Open-Source-Varianten (z. B. CodeLlama, DeepSeek Coder) solcher codegenerierender LLMs sind leicht verfügbar und werden sowohl von unerfahrenen als auch von erfahrenen Programmierern in ihren Codierungs-Workflows zur Steigerung der Produktivität intensiv genutzt.

Jüngste Studien zeigen, dass bis zu 97 % der Entwickler generative KI in gewissem Umfang einsetzen und dass etwa 30 % des heute geschriebenen Codes KI-generiert ist, was auf erhebliche Effizienz- und Komfortgewinne hindeutet. Ein kritischer Nachteil von LLMs ist ein Phänomen, das als Halluzination bezeichnet wird.

Halluzinationen sind von LLMs erzeugte Ergebnisse, die sachlich falsch, unsinnig oder völlig unabhängig von der Eingabeaufgabe sind.

Halluzinationen stellen ein erhebliches Hindernis für den effektiven und sicheren Einsatz von LLMs in öffentlich zugänglichen Anwendungen dar, da sie potenziell ungenaue oder irreführende Informationen generieren können. Daher wurden verstärkt Anstrengungen unternommen, um die Erkennung und Minderung von Halluzinationen in LLMs zu erforschen. Die meisten bisherigen Forschungsarbeiten konzentrierten sich jedoch nur auf Halluzinationen in klassischen Aufgaben der natürlichen Sprachgenerierung und -vorhersage, wie maschinelle Übersetzung, Zusammenfassung und dialogorientierte KI. Das Auftreten und die Auswirkungen von Halluzinationen während der Codegenerierung, insbesondere hinsichtlich der Art der halluzinierten Inhalte und ihrer Auswirkungen auf die Codesicherheit, befinden sich noch in einem frühen Forschungsstadium. Kürzlich haben Liu et al. gezeigt, dass beliebte LLMs (z. B. ChatGPT, CodeRL und CodeGen) während der Codegenerierung erheblich halluzinieren, und eine Taxonomie von Halluzinationen in LLM-generiertem Code erstellt.

In dieser Arbeit konzentrieren wir uns auf eine bestimmte Art von Halluzinationen während der Codegenerierung, die als „Paket-Halluzinationen” bezeichnet werden. Paket-Halluzinationen treten auf, wenn ein LLM Code generiert, der ein Paket empfiehlt oder einen Verweis auf ein Paket enthält, das tatsächlich nicht existiert. Ein Angreifer kann Paket-Halluzinationen ausnutzen, insbesondere wenn sie sich wiederholen, indem er ein Paket mit dem gleichen Namen wie das halluzinierte oder fiktive Paket in einem Open-Source-Repository veröffentlicht, das bösartigen Code/Funktionen enthält. Da anderen ahnungslosen und vertrauensvollen LLM-Nutzern anschließend dasselbe fiktive Paket in ihrem generierten Code empfohlen wird, laden sie schließlich das vom Angreifer erstellte bösartige Paket herunter, was zu einer erfolgreichen Kompromittierung führt. Diese Kompromittierung kann sich dann über eine gesamte Codebasis oder Software-Abhängigkeitskette ausbreiten und jeden Code infizieren, der auf das bösartige Paket angewiesen ist. Dies ist eine Variante des klassischen Paketverwechslungsangriffs, der durch code-generierende LLMs ermöglicht wurde.

Paketverwirrungsangriffe durch Techniken wie Typosquatting (d. h. das Erstellen von Paketen mit Namen, die denen beliebter Pakete ähneln, um Benutzer zu täuschen) und Namensähnlichkeiten sind seit langem ein Problem in der Open-Source-Software-Community. Paket-Halluzinationen durch codeerzeugende LLMs drohen, das Problem zu verschärfen, indem sie eine zusätzliche Angriffsfläche für solche Angriffe bieten. Triviale Querverweisverfahren (d. h. der Vergleich eines generierten Paketnamens mit einer Liste bekannter Pakete) sind zur Erkennung von Paket-Halluzinationsangriffen unwirksam, da ein Angreifer das halluzinierte Paket möglicherweise bereits mit bösartigem Code veröffentlicht hat. Open-Source-Repositorys geben keine Garantie für die Sicherheit der gehosteten Inhalte; die bloße Präsenz eines Pakets in einem Open-Source-Repository bestätigt nicht dessen Glaubwürdigkeit. Ein kürzlich veröffentlichter Blogbeitrag [29] legt nahe, dass LLMs anfällig für Paket-Halluzinationen sind, und liefert eine erste Annäherung an deren Verbreitung. Das Ausmaß, in dem dieses Phänomen in kommerziellen und Open-Source-LLMs auf dem neuesten Stand der Technik (SOTA) auftritt, die Art dieser Halluzinationen und die Wirksamkeit potenzieller Abhilfemaßnahmen wurden jedoch bisher nicht gründlich untersucht.

In diesem Artikel führen wir die erste systematische Untersuchung der Häufigkeit und Art von Paket-Halluzinationen in einer Vielzahl von codeerzeugenden LLMs durch, die unter verschiedenen Modelleinstellungen und Parametern arbeiten. Wir leisten insbesondere die folgenden neuen Beiträge:

  • Charakterisierung der Verbreitung von Paket-Halluzinationen durch Code generierende LLMs und damit verbundene funktionale Attribute: Wir analysieren zunächst umfassend die Verbreitung von Paket-Halluzinationen in Python- und JavaScript-Code, der von gängigen kommerziellen und Open-Source-LLMs generiert wurde. Außerdem untersuchen und charakterisieren wir häufig beobachtete LLM-Verhaltensweisen im Zusammenhang mit Paket-Halluzinationen, darunter die Wiederholung von Halluzinationen, die Ausführlichkeit der Ausgabe und die Fähigkeit dieser Modelle, ihre eigenen Halluzinationen zu erkennen.
  • Analyse der Auswirkungen feiner Änderungen an den Modelleinstellungen auf Paket-Halluzinationen: Wir untersuchen weiter, wie bestimmte Modelleinstellungen, wie z. B. die Aktualität der Trainingsdaten, die Modelltemperatur und die Dekodierungsstrategien, das Auftreten und die Art von Paket-Halluzinationen beeinflussen.
    • Charakterisierung gemeinsamer Merkmale der generierten halluzinierten Pakete: Wir untersuchen sorgfältig mehrere wichtige Eigenschaften der halluzinierten Pakete, darunter ihre semantische Ähnlichkeit mit beliebten Paketen, ihre Neigung, in verschiedenen Modellen aufzutreten, und den Einfluss von Paketen, die kürzlich (aus den entsprechenden Repositorys) entfernt/gelöscht wurden, auf die Halluzinationsrate.
  • Testen von Strategien zur Risikominderung: Wir schlagen mehrere Techniken vor, um Paket-Halluzinationen in LLM-generiertem Code wirksam zu reduzieren und gleichzeitig die Fähigkeit zur Erstellung effektiven Codes zu erhalten, und bewerten diese umfassend.
  • Öffentlich zugängliche Datensätze zur Förderung der Forschung: Wir stellen zwei neuartige Datensätze (einen Python- und einen JavaScript-Datensatz) mit 19.500 Codierungsaufforderungen für eine Vielzahl von Codierungsaufgaben und 586.000 generierten Codierungsbeispielen zur Feinabstimmung/Analyse öffentlich zur Verfügung.

Diejenigen, die LLMs vertrauen und immer wieder dasselbe halluzinierte Paket empfohlen bekommen, könnten es schließlich herunterladen, was zu einer Kompromittierung führen würde.
Auch wenn dies für unabhängige Projekte vielleicht nicht das Ende der Welt bedeutet, kann sich diese Kompromittierung „über die gesamte Codebasis oder Software-Abhängigkeitskette ausbreiten und jeden Code infizieren, der auf das bösartige Paket angewiesen ist“, warnen die Forscher.

Diskussion und Schlussfolgerung

Seit der Erstellung dieses Artikels sind mehrere fortschrittlichere Modelle für die Codegenerierung entstanden. Diese neueren Modelle bieten möglicherweise eine verbesserte Leistung und andere Halluzinationstendenzen und -merkmale, die wir in unserer Studie möglicherweise nicht erfassen konnten. [Submitted on 12 Jun 2024 (v1), last revised 2 Mar 2025 (this version, v3)] Aufgrund von finanziellen Einschränkungen umfasst die Studie auch weniger kommerzielle Modelle, sodass die Ergebnisse möglicherweise nicht vollständig die Leistung und Halluzinationstendenzen der neuesten kommerziellen LLMs widerspiegeln.

Was die zukünftige Arbeit betrifft, so ist die genaue Ursache für Paket-Halluzinationen noch ungeklärt. Dazu gehört die Untersuchung der Architektur und der Komponenten von LLMs, die zu diesen Fehlern beitragen können, die Überprüfung der Eignung von Tokenizern und die Bewertung, wie sich die Zusammensetzung der Trainingsdaten und die Vorverarbeitung auf die Halluzinationstendenzen auswirken. Die Identifizierung und Behebung dieser zugrunde liegenden Probleme könnte zu robusteren und zuverlässigeren Modellen für die Codegenerierung führen. Zukünftige Arbeiten könnten sich auch auf die Entwicklung und Erprobung ausgefeilterer Strategien zur Minderung konzentrieren, die speziell auf Codegenerierungsaufgaben zugeschnitten sind.

Dies könnte fortgeschrittene Techniken im Bereich Prompt Engineering, die Verwendung komplexer Wissensgraphen, die Verfeinerung von Verlustfunktionen und die Erforschung neuer Feinabstimmungsmethoden umfassen. Die Integration von Echtzeit-Feedback-Mechanismen zur dynamischen Anpassung der Modellausgabe könnte die Halluzinationsraten weiter reduzieren. Es bleibt entscheidend, zu verstehen, wie Paket-Halluzinationen auf Token-Ebene systemisch und persistent sind.

Zusammenfassend haben wir Paket-Halluzinationen in code-generierenden LLMs, darunter sowohl kommerzielle als auch Open-Source-Modelle, systematisch untersucht. Unsere umfassende Analyse ergab, dass 19,7 % der generierten Pakete fiktiv sind, was durch Paketverwirrungsangriffe eine erhebliche Gefahr für die Softwaresicherheit darstellt. Wir haben wichtige Verhaltensmuster identifiziert, halluzinierte Pakete charakterisiert und wirksame Strategien zu ihrer Eindämmung vorgeschlagen. Unsere Ergebnisse unterstreichen, wie wichtig es ist, Paket-Halluzinationen zu bekämpfen, um die Zuverlässigkeit und Sicherheit der KI-gestützten Softwareentwicklung zu verbessern.

Quelle: Cornell University / Computer Science > Software Engineering

PDF-Ansicht (20 Seiten)


Teile diesen Beitrag: