High, CVSS 7.1PyPIAmendedPublished
Flexible GraphRAG: Cypher/Graph Injection via broken string-escaping in FalkorDB adapter (_escape()) - full graph wipe from ingested-document content
CVE-2026-114510 · GHSA-vqrg-773h-4wxc
- Affected
- PyPI flexible-graphrag >= 0.6.0, < 0.8.2
- Fixed in
- 0.8.2· Vendor fix available
- Issue
- def _escape(v: str) -> str: return str(v).replace("'", "\\'").replace("\\", "\\\\") The escaping order is backwards, exactly like the classic HTML double-escape bug: step 1 inserts a literal backslash in front of every ', then step 2 re-matches that just-inserted backslash and doubles it. For an input ending in a single quote, the two steps combined produce \\' (two backslashes followed by the quote) in the output — which, under the standard backslash-escape convention used by Cypher/openCypher single-quoted string literals, is parsed as one escaped backslash followed by an unescaped, string-terminating quote. The quote is not neutralized; the string breaks open. This escaped value is interpolated directly into Cypher query strings built by string formatting (not parameters) at 5 call sites in the same method: self.lc_graph.query( f"MERGE (n:`{node.type}` {{id: '{_escape(node.id)}'}}) " f"{props}" f"RETURN distinct 'done' AS result" ) ... self.lc_graph.query( f"MATCH…
Recommended action: Upgrade to 0.8.2 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.