Vulnerabilidades do Chatwoot em 05/05/2026

O login por OAuth podia confirmar um cadastro sem invalidar a senha escolhida por um invasor. Nos filtros de atendimento, atributos personalizados permitiam consultar conversas e credenciais de outros espaços de atendimento por injeção SQL. Para revisar sua instalação, confira tanto a autenticação quanto as definições desses atributos e os registros de requisições aos filtros.

AplicativoChatwoot
Data do compilado
Vulnerabilidades2

As faixas afetadas reproduzem literalmente a API, que informa somente o limite inferior nos dois avisos. As versões corrigidas aparecem separadamente, conforme a mesma fonte. A correção disponível no Chatwoot precisa ser aplicada à sua instalação.

Gravidade altaCVSS: 8,5/10Correção disponível

Atributos personalizados permitem injeção SQL nos filtros de atendimento

Os filtros de conversas e contatos inseriam diretamente na consulta SQL os valores enviados no campo values ao comparar atributos date ou number com is_greater_than ou is_less_than. Um invasor autenticado podia extrair informações por consultas que alteravam o tempo de resposta, inclusive de outros espaços de atendimento. Havia também um segundo caminho: uma chave attribute_key malformada, gravada na definição do atributo, entrava na expressão de consulta ao JSON sem parametrização. Esse vetor funcionava independentemente do tipo do atributo.

Casos de uso afetados

  • Você mantém espaços de atendimento de diferentes clientes na mesma instalação. Um invasor com acesso autenticado a um deles pode consultar conversas e informações pessoais de contatos pertencentes aos demais.
  • A instalação utiliza filtros por atributos de data ou número. Mesmo sem esses atributos previamente definidos, o invasor pode criar um pelo endpoint de definições e acionar as comparações vulneráveis.
  • Um atributo personalizado possui uma chave preparada para alterar a consulta. Ao filtrar por essa chave, o invasor pode alcançar a tabela global users e extrair emails, hashes bcrypt de senhas e tokens de acesso, além de credenciais de integração armazenadas no banco.

Confira na sua instância

Confirme a versão que está atendendo às requisições e revise os registros de POST /api/v1/accounts/{account_id}/conversations/filter e POST /api/v1/accounts/{account_id}/contacts/filter. Nos corpos registrados, examine values nas comparações is_greater_than e is_less_than de atributos date ou number. Consulte também custom_attribute_definitions.attribute_key e procure chaves com aspas, parênteses, espaços ou outros caracteres de sintaxe SQL. Relacione essas chaves às requisições de criação em POST /api/v1/accounts/{account_id}/custom_attribute_definitions e aos filtros que as utilizaram. A ausência desses sinais nos registros disponíveis não comprova que houve ausência de exploração.

Versões afetadas e correções

Faixas declaradas no comunicado oficial, por linha de manutenção
LinhaAfetadasCorrigidas
Chatwoot>= 2.2.04.11.2

A correção usa consultas parametrizadas e restringe o formato de attribute_key. O aviso orienta atualizar para 4.11.2 e informa que não existe alternativa confiável à atualização. Restringir os endpoints de filtro no proxy reverso ou no firewall de aplicação pode reduzir a exposição. Remover atributos date e number e impedir novas definições também é uma medida parcial, pois o vetor pela chave independe do tipo. Havendo suspeita de exploração, revise e substitua os tokens e as senhas possivelmente expostos. O comunicado confirma leitura por injeção SQL cega, mas informa que a combinação ActiveRecord/PostgreSQL não permite executar comandos UPDATE ou DELETE por consultas encadeadas nesse caminho. Identificador adicional: CVE-2026-44706.

Gravidade moderadaCVSS: 6,8/10Correção disponível

Login por OAuth mantém a senha de um cadastro feito pelo invasor

O Chatwoot permitia utilizar um cadastro sem exigir a confirmação do email. Um invasor podia registrar o endereço da vítima e escolher uma senha antes do primeiro acesso dela. Quando a vítima entrava pelo Google ou por outro provedor OmniAuth, o sistema confirmava o cadastro existente e preservava essa senha. Assim, o invasor continuava conseguindo entrar e consultar as informações pessoais e as chaves de API que a vítima acrescentasse ao painel.

Casos de uso afetados

  • Sua instalação oferece cadastro por email e senha junto com login por OAuth para os mesmos usuários. O ataque exige que o invasor cadastre o email da vítima antes do primeiro login dela pelo provedor.
  • Um atendente entra pelo Google usando um endereço previamente cadastrado pelo invasor. A confirmação automática mantém o acesso pela senha antiga e expõe as informações que esse atendente inserir no painel.

Confira na sua instância

Confira a versão em execução e se o cadastro por email e senha convive com algum provedor OAuth. Na revisão dos cadastros, procure registros com confirmed_at preenchido cuja criação por email e senha anteceda o primeiro login pelo provedor. Para esses registros, exija a redefinição da senha. Como conferência funcional proposta, em homologação e com um email sob seu controle, crie um cadastro sem confirmá-lo, entre pelo OAuth e verifique se a senha inicial é recusada depois desse acesso. Esse resultado corresponde ao comportamento descrito para a correção.

Versões afetadas e correções

Faixas declaradas no comunicado oficial, por linha de manutenção
LinhaAfetadasCorrigidas
Chatwoot>= 2.14.04.13.0

A versão 4.13.0 substitui a senha armazenada por um valor aleatório quando o login OAuth encontra um cadastro novo ou ainda não confirmado. Caso a atualização precise aguardar, o aviso orienta desativar os provedores OAuth e revisar os cadastros já confirmados. Também recomenda exigir a redefinição das senhas como precaução. O titular pode recuperar o acesso por senha pelo recurso de recuperação. Identificador adicional: CVE-2026-44707.

Voltar aos compilados de vulnerabilidades
Luiz Eduardo Oliveira Fonseca

Luiz Eduardo Oliveira Fonseca

Fundador e Mentor

Programador há mais de 20 anos, fundador da Powertic e da Promovaweb. Embaixador do n8n no Brasil e da Baserow, Chatwoot, Miro e Kestra. Membro do Product Team do Mautic.

Área pública disponível

Participe da comunidade no Discord

Entre pelo convite oficial, apresente-se à comunidade e acompanhe os avisos e projetos compartilhados entre os encontros.