← back
CVE-2025-34291criticalunder attackCWE-346

Langflow <= 1.6.9 CORS Misconfiguration to Token Hijack & RCE

100Vexday Risk Score

Patch now. It under exploitation confirmed by CISA and has a working public exploit.

ssvc Actcvss 9.4epss 84%
from disclosure to weapon164 days
Published on NVDDec 5
1st PoC+164d
CISA KEV+167d
exploitation probability
84%top 1% of all CVEs
observed exploitation
yesCISA + VulnCheck
2 public exploit(s)
Action required by CISAfederal deadline: 2026-06-04

Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.

Summary

Falha de encadeamento em Langflow, plataforma open-source de agentes e workflows de IA com mais de 140 mil estrelas no GitHub: uma configuração de CORS que reflete qualquer origem com credenciais habilitadas, somada a um cookie de refresh token configurado como SameSite=None, permite que uma página maliciosa capture tokens de sessão de uma vítima logada. Como o Langflow expõe endpoints autenticados que executam código Python arbitrário por design, o roubo de token vira RCE completo no servidor. O CVSS 4.0 de 9.4 reflete corretamente a severidade final, mas o vetor real depende de engenharia social (a vítima precisa clicar em um link) e de uma configuração padrão vulnerável que passou a ser corrigida a partir da versão 1.7.

Technical detail

A cadeia tem três componentes, cada um documentado pela Obsidian Security. Primeiro, o middleware CORS do Langflow (baseado em FastAPI) responde com allow_origins='*' e allow_credentials=True — combinação que navegadores modernos normalmente bloqueiam, mas que frameworks web mal configurados às vezes permitem via reflexão dinâmica da origem recebida. Segundo, o cookie que guarda o refresh token é emitido com SameSite=None, o atributo que existe justamente para permitir envio cross-site — sem ele, o navegador não enviaria o cookie em uma requisição originada de outro domínio. Terceiro, o endpoint de refresh de token não tem proteção CSRF própria (token anti-CSRF, verificação de origem server-side, etc.), então aceita qualquer requisição que chegue com o cookie válido, independentemente de onde ela partiu. Isso é classificado como CWE-346 (Origin Validation Error).

How it’s exploited

A exploração exige que a vítima tenha uma sessão ativa no Langflow (cookie de refresh válido no navegador) e seja induzida a visitar uma página controlada pelo atacante enquanto essa sessão está viva — é o UI:P do vetor CVSS. A página maliciosa executa uma requisição cross-origin com credentials:'include' contra o endpoint de refresh do Langflow; como o CORS reflete a origem do atacante e aceita credenciais, o navegador da vítima entrega o cookie, e a resposta — legível pela página maliciosa por causa do CORS permissivo — contém um par access_token/refresh_token novo e válido. A partir daí o atacante já não precisa mais do navegador da vítima nem de acesso à mesma rede: ele usa os tokens diretamente para chamar endpoints autenticados da API do Langflow, incluindo o endpoint de validação/execução de código que já foi alvo de outra CVE anterior (CVE-2025-3248) e que, por design, executa Python arbitrário no processo do servidor.

A CrowdSec confirmou exploração ativa em ambiente real a partir de 23 de janeiro de 2026, descrevendo operação provavelmente orquestrada em escala profissional. Um detalhe relevante para quem monitora: como o vetor depende do navegador da vítima fazendo a requisição, os IPs observados em logs de acesso são os das vítimas (em faixas residenciais), não da infraestrutura do atacante — o que dificulta medir o alcance real da campanha e dificulta bloqueio por IP.

Versions

Affected
Langflow em versões até 1.6.9 (conforme o título oficial da CVE). O catálogo KEV da CISA e a CrowdSec citam pontos de correção em versões posteriores (1.7 e 1.9.3), sugerindo que a mitigação foi aplicada em etapas — recomenda-se não assumir que apenas 'sair da 1.6.9' resolve sem confirmar a configuração de CORS e cookie na versão instalada.
Fixed in
A partir da versão 1.7, a configuração padrão de CORS do Langflow deixa de ser vulnerável ao vetor primário (CORS + credenciais), segundo a CrowdSec. O catálogo KEV da CISA referencia especificamente o release v1.9.3 (github.com/langflow-ai/langflow/releases/tag/v1.9.3) como a correção associada à CVE. Não há informação apurada sobre backport para ramos anteriores ao 1.7.

How to protect

A correção definitiva é atualizar o Langflow. A CrowdSec indica que a partir da versão 1.7 a configuração padrão de CORS já não é vulnerável a este vetor. O catálogo KEV da CISA referencia a release v1.9.3 como o ponto de correção associado à CVE. Há uma inconsistência de granularidade entre fontes sobre exatamente onde a cadeia foi fechada por completo — recomenda-se, além de atualizar, verificar manualmente a configuração de CORS e do cookie após o upgrade, em vez de confiar apenas no número de versão.

Se a atualização imediata não for possível, o paliativo real é de configuração, não de rede: definir a variável de ambiente LANGFLOW_CORS_ALLOW_CREDENTIALS=False desativa o envio de credenciais em requisições cross-origin, quebrando o elo central da cadeia. Onde isso não for viável (por exemplo, se alguma integração legítima depender de credenciais cross-origin), restringir LANGFLOW_CORS_ORIGINS a uma lista explícita de hosts confiáveis reduz a superfície, embora não elimine o risco caso um desses hosts confiáveis seja comprometido. Um WAF genérico não mitiga isso de forma confiável, porque o ataque ocorre no navegador da vítima contra um endpoint legítimo com credenciais legítimas — não há payload malformado para uma assinatura de WAF detectar.

How to detect

O sinal mais direto seria requisições cross-origin ao endpoint de refresh token do Langflow com cabeçalho Origin apontando para domínios fora da lista de origens confiáveis do ambiente, seguidas em curto intervalo por chamadas ao endpoint de validação/execução de código usando o token recém-emitido — esse padrão (refresh a partir de origem estranha + uso imediato do token em endpoint de execução) é o indicador de comprometimento mais confiável disponível. Vale notar a limitação apontada pela CrowdSec: como a requisição maliciosa parte do navegador da vítima, os endereços IP registrados nos logs do servidor são das vítimas, tipicamente em faixas residenciais, e não da infraestrutura do atacante — bloqueio ou triagem por IP de origem não identifica o atacante e pode até penalizar usuários legítimos enganados.

Researched and written with AI from the vendor advisory and public analysis, with the sources above. Always confirm the fixed version in the official advisory before acting.
Langflow versions up to and including 1.6.9 contain a chained vulnerability that enables account takeover and remote code execution. An overly permissive CORS configuration (allow_origins='*' with allow_credentials=True) combined with a refresh token cookie configured as SameSite=None allows a malicious webpage to perform cross-origin requests that include credentials and successfully call the refresh endpoint. An attacker-controlled origin can therefore obtain fresh access_token / refresh_token pairs for a victim session. Obtained tokens permit access to authenticated endpoints — including built-in code-execution functionality — allowing the attacker to execute arbitrary code and achieve full system compromise.
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
Affected products
Langflow · Langflow
⚠ Public resources, to assess the exposure of systems you control or are authorized to test. Test only with authorization.