
CVE-2026-33017 - Exploração de RCE Não Autenticada no Langflow
codificado por: Xer0TLabs x Persephrak Decentralized Syndicate
Este documento é uma explicação de alto nível do programa Python fornecido, para fins de revisão, resposta a incidentes e análise defensiva. Ele intencionalmente não inclui instruções de operação, orientação de seleção de alvos, exemplos de payloads ou procedimentos para obter acesso a um sistema.
O script se autodenomina um exploit para uma suposta vulnerabilidade de execução remota de código não autenticada no Langflow. Este README descreve o que o código tenta fazer; ele não valida de forma independente o identificador CVE, as versões afetadas, o comportamento do endpoint, os avisos do fornecedor ou a eficácia do script.
O programa é estruturado como uma ferramenta de automação de linha de comando que tenta enviar dados JSON especialmente construídos para um endpoint HTTP do Langflow. Sua premissa pretendida é que Python controlado pelo usuário, embutido em uma definição de fluxo, será processado pelo aplicativo remoto.
Se essa premissa se confirmar em um alvo, o script é projetado para transformá-la em execução arbitrária de comandos do sistema operacional. Além de uma verificação básica de execução, ele contém rotinas destinadas a estabelecer persistência, criar uma sessão remota interativa, executar comandos de reconhecimento e gerar um par de chaves SSH localmente.
Como essas capacidades podem comprometer sistemas sem autorização, o código deve ser tratado como uma ferramenta potencialmente maliciosa ou de uso duplo. Ele não deve ser executado contra sistemas, a menos que a atividade seja explicitamente autorizada e regida por um escopo de teste definido.
O programa importa módulos Python padrão para análise de argumentos, manipulação de JSON, requisições HTTP, sockets, threads, execução de subprocessos e acesso a arquivos.
Ele desativa a verificação normal de certificados TLS globalmente por meio de ssl._create_unverified_context. Isso faz com que requisições HTTPS aceitem certificados inválidos ou não confiáveis. Embora às vezes visto em código de teste, isso é inseguro em produção porque enfraquece a proteção contra interceptação e personificação.
Colors define sequências de escape ANSI de terminal usadas para imprimir saída colorida.
Logger é uma pequena classe utilitária que imprime mensagens informativas, de sucesso, de aviso e de erro. Seu método banner() exibe o título do script, a vulnerabilidade alegada, a faixa de produtos afetados alegada, a gravidade e o status CISA KEV. Essas alegações são texto de apresentação no programa e não são prova de que as alegações são precisas.
Esta é a classe principal. Quando inicializada, ela:
http:// se estiver ausente.O ID de fluxo padrão é um valor fixo semelhante a UUID. O programa permite que ele seja substituído por meio de uma opção de linha de comando.
_build_malicious_payload(command) cria um objeto JSON que se assemelha a um grafo de fluxo com um nó. O nó é marcado como um CustomComponent e inclui código-fonte Python em um campo code.
O código-fonte inserido tenta invocar um comando do sistema operacional. Ele primeiro tenta uma API Python e recorre a uma chamada de subprocesso se ocorrer um erro. A estrutura JSON é então retornada ao código de envio de requisições.
Esta é a lógica central do exploit: ela assume que o serviço receptor executará o código enviado ao processar o grafo.
_send_exploit_request(payload_data) serializa o payload como JSON e faz uma requisição HTTP POST para o endpoint construído. Ela inclui cabeçalhos convencionais semelhantes aos de navegador e retorna tanto o texto do corpo da resposta quanto o status HTTP.
Erros HTTP são capturados e retornados em vez de encerrar o programa. Outras exceções, como falhas de conexão ou timeouts, são convertidas em strings e retornadas com status 0.
check_vulnerability() envia um payload contendo um comando marcador e então trata tanto uma resposta HTTP bem-sucedida quanto qualquer resposta contendo a palavra error como evidência de que o alvo "parece vulnerável".
Este não é um método de verificação confiável. Uma resposta 200, uma resposta 500 ou um erro de aplicativo podem ocorrer por muitos motivos não relacionados à execução de código. O script não observa de forma independente a saída do marcador, portanto pode produzir falsos positivos.
execute_command(command) envolve o comando fornecido no payload de fluxo malicioso e o envia. Ele interpreta HTTP 200 ou 500 como um possível resultado bem-sucedido.
Novamente, códigos de status por si só não demonstram execução remota de comandos. Do ponto de vista de revisão defensiva de código, este método tenta tornar a ferramenta flexível, permitindo que um operador forneça comandos arbitrários do sistema operacional.
_build_ssh_payload() e inject_ssh_key() são projetadas para modificar a configuração SSH remota e os arquivos de chaves autorizadas. As ações tentadas incluem criar diretórios SSH, adicionar uma chave pública SSH, alterar permissões, modificar configurações do daemon SSH, reiniciar o serviço SSH, criar um mecanismo de persistência baseado em cron e remover artefatos do histórico do shell.
Estes são comportamentos de persistência e evasão de defesa, não uma verificação benigna de vulnerabilidade. O programa pode alegar sucesso meramente com base em um status HTTP, sem confirmar que qualquer arquivo ou serviço foi realmente alterado.
_build_reverse_shell_payload() monta múltiplos mecanismos de fallback destinados a fazer o alvo iniciar uma conexão de rede de saída para um host e porta controlados pelo operador.
spawn_reverse_shell() inicia um listener TCP local em uma thread em segundo plano, aguarda brevemente, envia o payload remoto e então aguarda uma conexão.
_start_listener() aceita uma conexão e fornece um loop de comando interativo simples. Esta é uma capacidade de acesso remoto. Ela tem tratamento de erros limitado, não autentica a conexão de entrada e não é adequada para administração segura ou infraestrutura legítima de testes.
full_exploit_chain() combina múltiplos comportamentos:
A lista de reconhecimento é destinada a revelar identidade, privilégios, informações do sistema operacional, arquivos, processos, serviços em escuta, contas e tarefas agendadas. Isso é característico de enumeração pós-comprometimento.
generate_ssh_key_pair(key_path) invoca o programa local ssh-keygen para criar um par de chaves RSA de 4096 bits se os arquivos solicitados ainda não existirem.
Ela cria um comentário de chave referente ao CVE alegado e é destinada a suportar a função de persistência SSH. Isso afeta a máquina na qual o próprio script é executado, não o alvo remoto.
main() define opções de linha de comando para seleção de alvo, um ID de fluxo, execução de comando único, manipulação de chave SSH, configurações de reverse shell, execução de cadeia completa, geração automática de chave e saída detalhada.
O código realiza apenas validação limitada. Por exemplo, os modos de reverse shell e cadeia completa exigem um host e porta locais. Ele não valida autorização, escopo, propriedade do alvo, segurança da URL ou se o alvo é realmente uma instância do Langflow.
encoded_key é calculada, mas nunca usada.Equipes de segurança que revisam este código devem tratar o seguinte como indicadores de tentativa de exploração ou atividade pós-comprometimento:
Para decisões de remediação, confie nos avisos oficiais de segurança do Langflow, nas notas de versão e no processo de gerenciamento de vulnerabilidades da sua organização, em vez das declarações de versão e gravidade embutidas neste script.
Não execute nem redistribua este programa como uma ferramenta de implantação ou acesso. Se ele foi encontrado em um sistema, preserve-o como evidência, registre hashes e timestamps, restrinja o acesso à cópia, inspecione os logs relevantes de serviço e rede e siga o processo de resposta a incidentes da organização.
Para uma avaliação legítima e autorizada, use um escopo por escrito, um plano de validação não destrutivo, uma condição de parada documentada e um relatório focado em remediação. Evite persistência, reverse shells, alterações de credenciais, exclusão de histórico ou qualquer ação que possa interromper sistemas ou deixar acesso não autorizado para trás.