FlawOpen

flawopen.com/AI Security/langroid-neo4j-cypher-injection-cve-2026-55615

● CVE-2026-55615 · CVSS v4 9.2[1] · Kritisch
Sicherheitsforschung · FlawOpen

Langroid CVE-2026-55615: Prompt-to-Cypher-Injection

Langroid leitete modellgeneriertes Cypher ungeprüft an Neo4j weiter. Aktualisieren Sie auf 0.65.5; Datenbankrechte bleiben die Sicherheitsgrenze.[1], [2], [4]

CVSS-VektorCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N[1]
💡 Einfache Erklärung (ELI5)

Eine Bibliothekarin nimmt eine Frage in Alltagssprache entgegen und gibt die daraus entstehenden Datenbankanweisungen direkt an einen mächtigen Mitarbeiter weiter. Verändert ein feindlicher Zettel die Frage, führt der Mitarbeiter die Anweisungen trotzdem aus. CVE-2026-55615 erlaubte nicht vertrauenswürdigen Inhalten, das von Langroid an Neo4j gesendete Cypher zu beeinflussen.[1]

Kernkonzepte & Begriffe

Cypher
Neo4js Abfragesprache zum Lesen und Ändern von Graphdaten. Weitere Prozeduren hängen von Serverkonfiguration und Kontorechten ab.[1]
Neo4jChatAgent
Langroid-Agent, der natürlichsprachliche Aufgaben in Cypher umwandelt und über Lese- oder Erstellungstools an Neo4j sendet.[1], [3]
Prompt injection
Nicht vertrauenswürdige Eingaben beeinflussen das Modell. Vom Modell erzeugte Abfragen sind als nicht vertrauenswürdige Eingabe zu behandeln.[1]
Least-privilege database role
Datenbankidentität mit Zugriff nur auf benötigte Daten und Aktionen. Diese Grenze ist auch bei Anwendungsvalidierung unverzichtbar.[1], [5]
Cypher-Abfragevalidator
Der Validator von Langroid 0.65.5 prüft Schlüsselwörter und Muster. Laut Dokumentation sind diese Prüfungen grundsätzlich umgehbar; sie dienen der Tiefenverteidigung und bilden keine Autorisierungsgrenze. Den Zugriff müssen Neo4j-Rollenrechte durchsetzen.[6], [3]

Framework-Zuordnungen

  • CWE-Referenz für die in diesem Leitfaden beschriebene Schwachstelle: CWE-74

Schritt-für-Schritt Angriffsablauf

Schritt 1

Ein anfälliger Graph-Agent akzeptiert Modellabfragen

Betroffen sind Langroid-Versionen bis 0.65.4. Der dokumentierte Pfad setzt voraus, dass Angreifer den Prompt direkt oder über abgerufene Inhalte beeinflussen und das Modell ein Neo4jChatAgent-Tool verwendet. Das Advisory nennt CWE-74 und CVSS 4.0 9,2 (kritisch).[1], [2]

Schritt 2

Inhalte beeinflussen das weitergeleitete Cypher

Im anfälligen Pfad leitete cypher_retrieval_tool msg.cypher_query an read_query und cypher_creation_tool die Abfrage an write_query weiter. Das Advisory verfolgt diese Werte bis session.run(query, parameters) und tx.run(query, parameters), ohne vorherige Prüfung.[1], [3]

Schritt 3

Datenbankrechte bestimmen die unmittelbare Auswirkung

Das Lesetool kann Daten offenlegen, die dem verbundenen Konto zugänglich sind; das Erstellungstool kann Daten im Rahmen dieser Rechte ändern oder löschen. Das Advisory nennt auch den Remote-Abruf über LOAD CSV. Host-Datei- oder Befehlszugriff hängt von aktivierten Prozeduren und gewährten Rechten ab.[1]

Schritt 4

Version 0.65.5 ergänzt Prüfungen an den Tools

Laut Maintainer behebt Version 0.65.5 dies mit standardmäßig deaktiviertem allow_dangerous_operations, schränkt Leseabfragen ein und prüft ausgewählte Primitive in den Tools. Das ist zusätzliche Absicherung, keine Autorisierung. Die Maintainer-Lösung und Langroids SQL-Agent-Leitfaden verweisen auf Datenbankrollen mit minimalen Rechten als Sicherheitsgrenze.[1], [3], [4], [5]

Schritt 5

Aktualisieren und Datenbankzugriff beschränken

Aktualisieren Sie Langroid auf 0.65.5 oder neuer und prüfen Sie die Version in bereitgestellten Images. Lassen Sie die gefährliche Option aus, verwenden Sie minimale Neo4j-Rechte und beschränken Sie Prozeduren und Agent-Host.[4], [5]

Quellcode: Verwundbar vs. Sicher

Der anfällige Ausschnitt folgt dem Advisory; das korrigierte Beispiel stellt das Verhalten von 0.65.5 dar, nicht den wörtlichen Patch. Die Korrektur prüft an der Tool-Grenze, beschränkt Lesen und steuert gefährliche Aktionen. Behandeln Sie Abfrageprüfungen als zusätzliche Absicherung, nicht als Autorisierung. Maintainer-Lösung und Langroids SQL-Agent-Leitfaden verweisen auf Neo4j-Rollen mit minimalen Rechten als Sicherheitsgrenze; isolieren Sie außerdem den Agent-Prozess. Laut Langroid-Dokumentation sind diese Schlüsselwort- und Musterprüfungen umgehbar; die Neo4j-Rechte bleiben die maßgebliche Zugriffskontrolle.[1], [3], [4], [6]

VERWUNDBARE IMPLEMENTIERUNG
# Verwundbarer Neo4jChatAgent-Pfad (Langroid <= 0.65.4).
def cypher_retrieval_tool(self, msg: CypherRetrievalTool):
    query = msg.cypher_query
    return self.read_query(query)

def read_query(self, query: str):
    with self.driver.session() as session:
        return session.run(query, parameters=None)
GEHÄRTETER SICHERHEITS-PATCH
# Verhalten ab 0.65.5: an der LLM-seitigen Tool-Grenze validieren.
def cypher_retrieval_tool(self, msg: CypherRetrievalTool):
    query = msg.cypher_query
    rejection = validate_cypher_query(
        query, is_write=False,
        allow_dangerous=self.config.allow_dangerous_operations,
    )
    if rejection is not None:
        return rejection
    return self.read_query(query)

Checkliste für Engineering & Systemsicherheit

Quellen

← AI Security Directory →