Security and Quality in LLM-Generated Code: A Multi-Language, Multi-Model Analysis

Diese Studie analysiert die Sicherheit und Qualität von Code, der von großen Sprachmodellen (LLMs) in verschiedenen Programmiersprachen generiert wurde, und stellt fest, dass die Modelle oft veraltete Methoden verwenden und moderne Sicherheitsfeatures nicht nutzen, was eine Weiterentwicklung zur Integration aktueller Best Practices erforderlich macht.

Mohammed Kharma, Soohyeon Choi, Mohammed AlKhanafseh, David Mohaisen

Veröffentlicht Tue, 10 Ma
📖 4 Min. Lesezeit☕ Kaffeepausen-Lektüre

Each language version is independently generated for its own context, not a direct translation.

Stellen Sie sich vor, Sie haben einen extrem talentierten, aber noch sehr jungen Koch namens KI. Dieser Koch kann Rezepte für die köstlichsten Gerichte (also Computerprogramme) aus dem Nichts zaubern. Er liest Millionen von Kochbüchern (Trainingsdaten) und kann Ihnen sofort sagen, wie man eine Pizza oder einen Salat macht.

Aber hier ist das Problem: Ist das Essen auch sicher zu essen? Enthält es versehentlich giftige Zutaten? Ist es gut zubereitet, oder fällt es beim ersten Bissen auseinander?

Genau diese Frage haben die Autoren dieses Papers untersucht. Sie haben nicht nur geschaut, ob der KI-Koch das Essen schmecken lässt (funktioniert der Code?), sondern vor allem, ob es gesund und sicher ist.

Hier ist die Geschichte ihrer Forschung, einfach erklärt:

1. Der große Kochwettbewerb

Die Forscher haben fünf verschiedene Versionen dieses KI-Kochs eingeladen (bekannte Modelle wie GPT-4o, Claude, Gemini, Llama und Codestral). Jeder Koch sollte 200 verschiedene Aufgaben lösen.

Um fair zu bleiben, haben sie vier verschiedene Küchenarten (Programmiersprachen) gewählt:

  • Python & Java: Das sind wie moderne, gut organisierte Küchen mit Sicherheitsgurten und automatischen Herden. Hier ist es schwer, sich zu verbrennen.
  • C & C++: Das sind wie alte, wilde Küchen ohne Sicherheitsgurte. Hier muss man selbst aufpassen, dass man nicht in die offene Flamme greift oder das Messer fallen lässt. Ein kleiner Fehler kann hier katastrophal sein.

2. Der Test: "Ist das Essen fertig?"

Zuerst haben sie geprüft, ob der Koch überhaupt ein Gericht auf den Tisch stellen kann.

  • Das Ergebnis: Bei den modernen Küchen (Python und Java) haben fast alle KIs ein perfektes Gericht hingelegt. Es hat funktioniert.
  • Das Problem: Bei den wilden Küchen (C und C++) haben viele KIs das Messer fallen lassen. Sie haben Zutaten vergessen (fehlende Bibliotheken) oder die Anweisungen falsch verstanden. Die Gerichte waren oft unvollständig oder konnten gar nicht serviert werden.

3. Der Geschmackscheck: "Schmeckt es richtig?"

Dann haben sie geprüft, ob das Gericht auch so schmeckt, wie bestellt (semantische Korrektheit).

  • Python & Java: Hier waren die KIs sehr gut. Sie haben die Rezepte fast immer genau befolgt.
  • C & C++: Hier gab es mehr "Geschmacksfehler". Die KIs haben manchmal die falsche Menge Salz genommen oder den Ofen zu heiß eingestellt. Besonders bei C++ (der komplexesten Küche) hatten die KIs große Schwierigkeiten.

4. Der Sicherheitscheck: "Ist das Gift?"

Das war der wichtigste Teil. Die Forscher haben mit speziellen Sicherheits-Scannern (wie SonarQube und CodeQL) geprüft, ob die Gerichte gefährliche Zutaten enthalten.

Was haben sie gefunden?

  • Die "Vergessenen" Zutaten: In den C- und C++-Gerichten steckten oft "unsichtbare Gifte". Das sind Dinge wie Speicherfehler (der Koch vergisst, den Teller wegzuräumen, bis er platzt) oder harte Geheimnisse (der Koch schreibt sein Passwort direkt auf den Teller).
  • Die veralteten Rezepte: Viele KIs nutzen alte, unsichere Methoden für Verschlüsselung (wie einen alten, durchlöcherten Tresor), obwohl es moderne, sichere Tresore gibt. Sie wissen nicht, dass es bessere Werkzeuge gibt.
  • Die Unterschiede:
    • Java & Python: Hier waren die Gerichte meist sicherer, aber es gab immer noch Fehler bei Passwörtern oder falschen Zertifikaten.
    • C & C++: Hier war die Gefahr am größten. Da diese Sprachen dem Koch mehr Freiheit geben, machen sie auch mehr Fehler, die zu Sicherheitslücken führen können.

5. Die große Erkenntnis

Die Studie zeigt uns drei wichtige Dinge:

  1. Die Sprache macht den Unterschied: Wenn Sie einem KI-Koch eine einfache, moderne Sprache (wie Python) geben, macht er weniger Fehler als bei einer komplexen, alten Sprache (wie C++).
  2. KI ist nicht perfekt: Auch die besten KIs nutzen manchmal veraltete oder unsichere Methoden, weil sie in ihren alten Kochbüchern gelernt haben, wie man Dinge früher gemacht hat, nicht wie man es heute sicher macht.
  3. Wir müssen aufpassen: Wir können den KI-Koch nicht blind vertrauen. Wir müssen seine Gerichte immer noch selbst prüfen, bevor wir sie unseren Gästen (den Nutzern) servieren.

Fazit

Die KI ist ein mächtiger Assistent, der uns beim Kochen (Programmieren) viel Zeit spart. Aber sie ist noch kein Meisterkoch, der jede Gefahr erkennt. Besonders bei komplexen Aufgaben (wie C++) braucht sie noch viel Hilfe und Aufsicht, damit am Ende kein "giftiges" Programm auf dem Tisch steht.

Die Forscher sagen: "Wir müssen die KIs weiter trainieren, damit sie nicht nur schnell kochen, sondern auch sicher und moderne Rezepte verwenden."