{"answers":{"affected":"3 open source packages ship an affected version, including langroid.","exploited":"It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-55615 exists.","fix":"Upgrade langroid to 0.65.5 or later.","what":"CVE-2026-55615 is a critical code injection vulnerability in langroid, published on 9 Jul 2026. An attacker can exploit it over the internet without logging in, with no action from the victim."},"fix_prompt":"Check this codebase for CVE-2026-55615 and fix it if it is affected.\n\nWhat it is: CVE-2026-55615 is a critical code injection vulnerability in langroid, published on 9 Jul 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.\nExploitation: It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-55615 exists.\n\nAffected packages and fixed versions:\n- langroid (PyPI): affected all versions; fixed in 0.65.5\n- langroid (PyPI): affected all versions; fixed in 0.65.5\n- langroid (PyPI): affected all versions; fixed in 0.65.5\n\nTask:\n1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.\n2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.\n3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.\n4. Run the tests and summarise what changed and why.\n5. If nothing in the project is affected, say so and change nothing.\n\nReference: https://insights.sbomify.com/CVE-2026-55615/ (Markdown: https://insights.sbomify.com/CVE-2026-55615/index.md)","id":"CVE-2026-55615","markdown":"https://insights.sbomify.com/CVE-2026-55615/index.md","name":"CVE-2026-55615","record":{"aliases":["GHSA-2pq5-3q89-j7cc","PYSEC-2026-2576"],"analysis":{"component_type":"library","fix_type":"upgrade","impacts":["code_execution","data_read","data_modify"],"network_reachable":"yes","non_default_config":true,"product_category":"Langroid LLM framework","requires_auth":"none","summary":"Attackers can inject malicious Cypher queries via prompt injection to read/destroy graph data or execute OS commands if specific Neo4j procedures are enabled.","user_interaction":"not_required","vuln_class":"code_injection"},"analysis_generated_by":"qwen3.8-flash-next","assigner":"GitHub_M","cpe":[],"cvss":{"score":9.2,"severity":"critical","source":"cna","vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","version":"4.0"},"cwes":[{"id":"CWE-74","name":"Improper Neutralization of Special Elements in Output Used by a Downstream Component"}],"description":"Langroid is a framework for building large-language-model-powered applications. Prior to version 0.65.5, Neo4jChatAgent passes LLM-generated Cypher queries straight to the Neo4j driver with no validation, no statement-type allowlist, and no opt-out gate. The query text is influenceable by prompt injection (direct user input or indirect content the agent reads back via RAG), so an attacker who can influence the prompt can read or destroy all graph data and, when APOC or dbms.security procedures are enabled on the server, achieve OS-command and filesystem access. This is the same defect class and threat model as the SQLChatAgent prompt-to-SQL-to-RCE issue fixed in version 0.63.0 (CVE-2026-25879); that fix did not extend to the neo4j module. Version 0.65.5 contains a fix for the neo4j module.","ecosystems":["PyPI"],"exploits":{"exploitdb":0,"first_seen":null,"github_poc":0,"max_poc_stars":null,"metasploit":0,"nuclei":0,"refs":[],"tier":"weaponised"},"has_fix":true,"headline":"Langroid: Neo4jChatAgent executes LLM-generated Cypher without validation (prompt-to-Cypher injection; config-conditional RCE), mirroring the SQLChatAgent bug fixed in CVE-2026-25879","id":"CVE-2026-55615","indexable":true,"kev":null,"kind":"cve","links":{"ecosystem":"PyPI","product":null,"products":[],"type":"code_injection","year":"2026"},"n_packages":3,"n_references":2,"next":{"headline":"Hydro: Insufficient session expiration when recreating sessions","id":"CVE-2026-55617"},"packages":[{"ecosystem":"PyPI","fixed":["0.65.5"],"introduced":["0"],"last_affected":[],"package":"langroid","purl":null,"source":"GHSA-2pq5-3q89-j7cc"},{"ecosystem":"PyPI","fixed":["0.65.5"],"introduced":["0"],"last_affected":[],"package":"langroid","purl":"pkg:pypi/langroid","source":"GHSA-2pq5-3q89-j7cc"},{"ecosystem":"PyPI","fixed":["0.65.5"],"introduced":["0"],"last_affected":[],"package":"langroid","purl":"pkg:pypi/langroid","source":"PYSEC-2026-2576"}],"prev":{"headline":"Missing authorization in anything-llm","id":"CVE-2026-55611"},"products":["langroid"],"published":"2026-07-09","related":[],"sources":[{"class":"attribution","licence":"CVE Terms of Use (MITRE)","name":"CVE List","prefix":"CVE"},{"class":"attribution","licence":"CC BY 4.0","name":"GitHub Advisory Database","prefix":"GHSA"},{"class":"attribution","licence":"CC BY 4.0","name":"PyPA Advisory Database","prefix":"PYSEC"},{"class":"attribution","licence":"CWE Terms of Use","name":"CWE (MITRE)"},{"class":"attribution","licence":"FIRST CVSS licence","name":"CVSS (FIRST)"}],"ssvc":{"automatable":"yes","exploitation":"poc","technical_impact":"total"},"state":"PUBLISHED","updated":"2026-07-10","vendors":["langroid"]},"summary":"Attackers can inject malicious Cypher queries via prompt injection to read/destroy graph data or execute OS commands if specific Neo4j procedures are enabled.","url":"https://insights.sbomify.com/CVE-2026-55615/"}