Cadeia de falhas no LangGraph expõe agentes de IA auto-hospedados a execução remota de código

Cadeia de falhas no LangGraph expõe agentes de IA auto-hospedados a execução remota de código

Três vulnerabilidades corrigidas em implementações SQLite e Redis do checkpointer permitem encadear injeção SQL, deserialização insegura de msgpack e injeção em consultas RediSearch para obter RCE em servidores LangGraph auto-hospedados com entrada de filtro controlada pelo usuário.

ComponenteLangGraph e pacotes de checkpointer associados: langgraph-checkpoint-sqlite (antes de 3.0.1), langgraph (antes de 1.0.10) e @langchain/langgraph-checkpoint-redis (antes de 1.0.1), em implantações auto-hospedadas com SQLite ou Redis
VetorExposição do endpoint get_state_history() com filtro de metadados controlado pelo atacante; injeção SQL em chaves de filtro no checkpointer SQLite ou injeção em consulta RediSearch no checkpointer Redis, seguida de inserção de checkpoint serializado malicioso e desserialização msgpack insegura ao carregar o estado
ImpactoEncadeamento de CVE-2025-67644 com CVE-2026-28277 pode levar a execução remota de código no servidor; após escalação, acesso a segredos em tempo de execução e alcance a outros sistemas acessíveis pelo runtime; CVE-2026-27022 permite contornar controles de acesso em cenários Redis
PrioridadeAtualizar imediatamente os pacotes corrigidos, exigir autenticação em servidores auto-hospedados, restringir acesso à camada de persistência de checkpoints, aplicar segmentação de rede e privilégio mínimo aos agentes de IA
VersõesCorreções disponíveis em langgraph-checkpoint-sqlite 3.0.1+, langgraph 1.0.10+ e @langchain/langgraph-checkpoint-redis 1.0.1+; LangSmith Deployment não é afetado
MitigaçãoEliminar segredos estáticos de longa duração, tratar identidades de agentes como contas privilegiadas e validar que filtros de metadados não alcançam consultas sem sanitização adequada
Resumo técnico

Pesquisadores de segurança divulgaram três falhas já corrigidas no ecossistema LangGraph, framework de código aberto criado pela LangChain para construir aplicações agênticas de inteligência artificial complexas, com estado persistente e múltiplos agentes. Entre elas, uma cadeia crítica pode resultar em execução remota de código em implantações auto-hospedadas que utilizam o checkpointer com SQLite ou Redis e aceitam entrada de filtro controlada pelo usuário. A plataforma gerenciada LangSmith Deployment não é afetada por esse cenário.

O pesquisador Yarden Porat é creditado pela descoberta e reporte das três vulnerabilidades. Segundo a análise publicada, CVE-2025-67644 e CVE-2026-28277 podem ser encadeadas para alcançar execução remota de código. A cadeia depende da exposição do endpoint get_state_history(), que recupera checkpoints históricos com base em metadados. A injeção SQL presente na implementação SQLite permite manipular consultas por meio de chaves de filtro de metadados, enquanto a desserialização insegura de msgpack no núcleo do LangGraph permite reconstrução de objetos quando um checkpoint adulterado é carregado. Um terceiro identificador, CVE-2026-27022, trata de injeção em consultas RediSearch no pacote Redis associado, com potencial de contornar controles de acesso.

Os mantenedores do LangGraph classificam CVE-2026-28277 como problema de pós-exploração: a exploração bem-sucedida exige capacidade de gravar dados de checkpoint controlados pelo atacante e convertê-los em execução de código no runtime da aplicação. O modelo de ameaça pressupõe adulteração da camada de persistência de checkpoints usada pela implantação, cenário que configurações hospedadas típicas buscam impedir. Mesmo assim, a combinação com injeção SQL eleva o risco em ambientes auto-hospedados mal configurados, onde frameworks de agentes frequentemente operam com privilégios elevados e confiança ampliada sobre dados e integrações.

Fluxo técnico

A cadeia de ataque documentada inicia quando a aplicação expõe get_state_history() e processa filtros de metadados sem validação suficiente contra injeção estrutural em SQL. O atacante envia um parâmetro de filtro malicioso que explora CVE-2025-67644 para fazer a consulta retornar uma linha de checkpoint fabricada, na qual a coluna de checkpoint contém dados serializados sob controle do adversário. Esse estágio transforma uma falha de manipulação de consulta em capacidade de influenciar o conteúdo que o servidor considera histórico de estado válido.

Quando o servidor processa o resultado da consulta, desserializa o BLOB do checkpoint malicioso. A falha CVE-2026-28277 reside na desserialização insegura de msgpack: um payload preparado com instruções para executar código arbitrário pode ser reconstruído como objetos executáveis no contexto do runtime. O encadeamento fecha o ciclo entre adulteração lógica do repositório de checkpoints e execução remota de código no processo que hospeda o agente.

Em paralelo, CVE-2026-27022 descreve injeção em consultas RediSearch no módulo @langchain/langgraph-checkpoint-redis, com pontuação CVSS 6.5, explorável para contornar controles de acesso quando a persistência usa Redis com esse componente. Embora o relatório enfatize a cadeia SQLite-msgpack para RCE, a falha Redis reforça que qualquer backend de checkpointer com entrada influenciável pelo cliente exige endurecimento equivalente. A escalada de acesso de escrita na loja de checkpoints para execução de código pode expor segredos presentes no runtime ou ampliar o alcance a outros sistemas alcançáveis pela identidade sob a qual o agente executa.

Superficie afetada

O impacto concentra-se em implantações auto-hospedadas do LangGraph que combinam exposição de API de histórico de estado, checkpointer SQLite ou Redis com filtros de metadados controlados externamente e versões vulneráveis dos pacotes listados. Ambientes que delegam persistência a serviços gerenciados com isolamento forte entre tenants e sem superfície de escrita arbitrária no repositório de checkpoints ficam fora do modelo de ameaça principal descrito para RCE encadeada.

A superfície inclui não apenas o processo do servidor LangGraph, mas também credenciais e integrações acessíveis ao runtime após comprometimento, dado o perfil frequentemente privilegiado de aplicações agênticas que orquestram ferramentas, APIs internas e fluxos de automação.

  • Servidores auto-hospedados com langgraph-checkpoint-sqlite anterior a 3.0.1 e endpoint get_state_history() acessível
  • Implantações com langgraph anterior a 1.0.10 que carregam checkpoints msgpack de origem não confiável
  • Ambientes Redis com @langchain/langgraph-checkpoint-redis anterior a 1.0.1 sujeitos a injeção em consultas RediSearch
  • Contas e segredos de runtime, integrações downstream e sistemas alcançáveis pela identidade do agente após execução de código
Hunting e telemetria

Equipes que operam agentes LangGraph auto-hospedados devem correlacionar tráfego para endpoints de histórico de estado com anomalias em consultas ao backend de checkpoints. Padrões de filtro de metadados contendo sequências incomuns, delimitadores SQL ou construções que alteram a semântica da consulta merecem alerta, especialmente quando precedem carregamento de checkpoints fora do padrão de serialização esperado.

Em SQLite, auditorias de integridade do repositório de checkpoints podem revelar linhas inseridas ou modificadas sem transações legítimas correspondentes na aplicação. Em Redis, consultas RediSearch atípicas originadas do serviço LangGraph indicam tentativa de manipulação de índices ou filtros. Logs de desserialização, exceções em carregamento de estado e processos filhos inesperados no host após requisições a get_state_history() compõem sinais de exploração da cadeia documentada.

  • Requisições anômalas a get_state_history() com parâmetros de filtro contendo padrões de injeção estrutural
  • Consultas ao checkpointer SQLite ou RediSearch com sintaxe ou cardinalidade fora do baseline operacional
  • Eventos de desserialização msgpack seguidos de execução de processo não mapeado no pipeline do agente
  • Acesso pós-comprometimento a variáveis de ambiente, tokens de integração ou APIs internas a partir do runtime do LangGraph
Mitigação

A resposta imediata passa pela aplicação dos patches que endereçam cada CVE nos pacotes correspondentes, seguida de verificação de versões efetivas em ambientes de produção, staging e pipelines de build que empacotam dependências transitivas do LangGraph. Como a cadeia exige exposição de endpoint e influência sobre persistência, a mitigação estrutural inclui autenticação obrigatória e autorização fina em servidores auto-hospedados, além de restringir quais interfaces de histórico de estado permanecem publicadas.

A postura defensiva deve refletir que agentes de IA funcionam como identidades privilegiadas. Segmentação de rede limita o raio de alcance após um comprometimento no runtime, enquanto a rotação de segredos e a eliminação de credenciais estáticas de longa duração reduzem o valor de um acesso obtido via checkpoint adulterado. Revisões de configuração do checkpointer — permissões no banco SQLite, ACLs no Redis, isolamento de volumes e backups — impedem que um atacante com acesso parcial à camada de aplicação converta filtros maliciosos em escrita persistente maliciosa.

  • Atualizar langgraph-checkpoint-sqlite para 3.0.1 ou superior, langgraph para 1.0.10 ou superior e @langchain/langgraph-checkpoint-redis para 1.0.1 ou superior
  • Exigir autenticação e controle de acesso em servidores LangGraph auto-hospedados; revisar exposição de get_state_history()
  • Aplicar privilégio mínimo à identidade do agente, segmentar rede e rotacionar segredos de runtime sem dependência de valores estáticos prolongados
  • Monitorar integridade do repositório de checkpoints e validar que implantações gerenciadas permanecem em configurações que bloqueiam adulteração da camada de persistência

Postar um comentário

0 Comentários