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-2023-1430 — Divulgação responsável de vulnerabilidade não corrigida no FluentCRM por WPManageNinja | Kitploit
Ferramentas/GitHubGitHub/karlemilnikka/cve-2023-1430
Autenticação e AutorizaçãoAnálise de VulnerabilidadesSegurança WebPapers e PesquisaConfiguração IncorretaAprendizado e Educação
GitHubkarlemilnikka/cve-2023-1430

CVE-2023-1430

Divulgação responsável de vulnerabilidade não corrigida no FluentCRM por WPManageNinja

Ver Repositório
13há 2 anosAinda 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

Atualização 2023-06-12: Você não precisa mais do trecho. A WPManageNinja corrigiu a vulnerabilidade duas horas após a divulgação pública (93 dias após o relato).

Atualização 2024-01-27: O problema relacionado com com valores de hash eternos está agora totalmente resolvido.

Divulgação responsável de vulnerabilidade não corrigida CVE-2023-1430 no FluentCRM por WPManageNinja

tl;dr Atacantes podem visualizar e editar detalhes de contatos no FluentCRM. A WPManageNinja não corrigiu a vulnerabilidade dentro do prazo de 90 dias de divulgação responsável. Forneço um trecho de mitigação para evitar a exploração da vulnerabilidade enquanto se aguarda uma correção oficial.

  • Vulnerabilidade: CVE-2023-1430 Uso Insuficiente de Hash como Controle de Autorização
  • CVSS: 6.5 (Médio)
  • Software: FluentCRM
  • Versões afetadas: vulnerabilidade detectada na 2.7.40
  • Versão corrigida: 2.8.02
  • Desenvolvedor: WPManageNinja
  • Pesquisador: Karl Emil Nikka, Nikka Systems (relatado através do Wordfence)
  • Publicado publicamente: 2023-06-12
  • Última atualização: 2023-06-12

Visão Geral

Hoje, estou publicando informações sobre uma vulnerabilidade que encontrei no popular plugin WordPress FluentCRM da WPManageNinja. A vulnerabilidade, CVE-2023-1430, é causada pelo uso insuficiente de um hash de endereço de email como controle de autorização pelo FluentCRM. Divulguei a vulnerabilidade de forma responsável de acordo com a política de divulgação de vulnerabilidades do Google Zero. A WPManageNinja não forneceu uma correção dentro do prazo de 90 dias nem solicitou uma extensão de prazo.

Neste relatório, contact refere-se a um objeto de contato do FluentCRM, enquanto user refere-se a um objeto de usuário do WordPress. Um contato pode estar vinculado a um usuário, mas não é um requisito. Detalhes sobre a exploração da vulnerabilidade são omitidos até que uma correção oficial esteja disponível. Profissionais de segurança podem entrar em contato comigo para o relatório completo ([email protected]).

Impacto geral e ações necessárias

Em sites que executam o FluentCRM, um atacante pode visualizar e editar o nome, endereço de email e configuração de lista de um contato ao saber o endereço de email do contato. Como o nome do contato é frequentemente incluído em newsletters através de merge tags, um atacante pode substituir o nome do contato por linguagem obscena, fazendo com que o proprietário do site envie newsletters vulgares. Se o administrador do site ativou o shortcode do FluentCRM para gerenciar preferências e o adicionou a uma página web pública, um atacante pode visualizar e editar todas as informações pessoais expostas, ou seja, título, número de telefone, data de nascimento e endereço (dependendo da configuração do FluentCRM).

O FluentCRM está instalado em mais de 30.000 sites. Administradores de sites com FluentCRM podem evitar a exploração da vulnerabilidade adicionando meu trecho de mitigação ao arquivo functions.php do tema filho.

O trecho não corrige a vulnerabilidade. Ele substitui o conteúdo vulnerável na página de cancelamento de inscrição do FluentCRM (unsubscribe.php) e na página de gerenciamento de preferências (manage_subscription.php) por uma mensagem de erro informando ao contato para entrar em contato por email. O endereço de email na mensagem de erro é o endereço de email do administrador do site (pode ser alterado no trecho). O trecho de mitigação também garante que visitantes não logados não possam renderizar o shortcode vulnerável do FluentCRM para gerenciar preferências (fluentcrm_pref). Um visitante não logado verá uma mensagem de erro informando para fazer login. Todas as strings são traduzíveis com o arquivo POT fornecido.

Ações necessárias

Recomendo que os proprietários de sites implementem a mitigação que forneço ou sua própria mitigação correspondente. Os proprietários de sites também devem verificar a integridade de seus dados de contato do FluentCRM e, se possível, verificar seus logs em busca de possíveis vazamentos de dados. Verificar os logs é especialmente importante para os seguintes sites:

  • sites onde o nome registrado de um contato é informação sensível
  • sites onde o shortcode do FluentCRM para gerenciar preferências está ou esteve presente em páginas públicas para visitantes não logados
  • sites onde o gerenciamento de listas está ativado e o nome das listas às quais um contato se inscreve é informação sensível.

O controlador de dados designado do site deve lidar com possíveis vazamentos de dados de informações pessoais de acordo com as leis e regulamentos nas jurisdições afetadas.

Impacto potencial adicional

Se o FluentCRM estiver configurado para sincronizar as configurações de um contato com seu usuário correspondente, um atacante pode alterar o nome do usuário. Felizmente, o FluentCRM não sincroniza endereços de email de contatos para usuários. Se o fizesse, essa vulnerabilidade permitiria a tomada total do site. Um atacante poderia obter acesso privilegiado alterando o endereço de email do administrador do site e depois redefinindo a senha do administrador.

No entanto, outras soluções podem sincronizar todos os metadados de contatos para usuários, por exemplo, WP Fusion e a API do FluentCRM. O WP Fusion é provavelmente o plugin de terceiros mais popular para sincronizar metadados de contatos entre um CRM (por exemplo, FluentCRM) e o WordPress. Felizmente, a versão atual do WP Fusion não está conectada a alterações de metadados iniciadas a partir dos formulários vulneráveis. Informei os desenvolvedores do WP Fusion, e eles não abordarão essa limitação até que a WPManageNinja tenha corrigido a vulnerabilidade.

A API do FluentCRM também pode ser usada para atualizar dados de contato e usuário. Proprietários de sites que usam a API do FluentCRM para atualizar endereços de email de usuários devem desabilitar essa atualização quando iniciada a partir da página ou shortcode do FluentCRM para gerenciar preferências (ou adicionar meu trecho de mitigação para garantir que nenhuma configuração possa ser atualizada a partir dos formulários vulneráveis).

Explorando a vulnerabilidade

O FluentCRM permite que contatos cancelem a inscrição e gerenciem preferências a partir de páginas web públicas. Links para essas páginas são incluídos em cada newsletter. As alterações feitas nessas páginas são autorizadas por hashes MD5 dos endereços de email dos contatos, passados como parâmetros de URL. O hash MD5 de um endereço de email não é um segredo e pode ser calculado por qualquer pessoa. Um atacante pode explorar o uso incorreto de hashes para cancelar a inscrição de contatos específicos ou cancelar a inscrição de contatos com endereços de email conhecidos em massa.

Enquanto a página de cancelamento de inscrição depende exclusivamente do hash MD5 para autorização, a página de gerenciamento de preferências requer um parâmetro de URL adicional chamado ce_id. Neste caso, o ce_id refere-se ao ID do contato na tabela fc_subscribers. Este ID é um inteiro incremental. O valor do ce_id é, portanto, facilmente encontrado testando todos os valores possíveis (o espaço de busca é o número de contatos já registrados no site). Os usuários administradores provavelmente têm valores baixos.

A partir da página de gerenciamento de preferências, um atacante também pode exfiltrar o valor secure_hash do contato. Ao atualizar o endereço de email do contato, o valor “secure_hash” do contato é armazenado em um cookie chamado fc_hash_secure. Com esse cookie em vigor, o atacante pode exibir todas as informações de contato disponibilizadas pelo shortcode do formulário de preferências do FluentCRM.

Problema menor relacionado: valores de hash eternos

O “secure_hash” mencionado anteriormente é um valor no qual o FluentCRM (em algumas situações) depende em vez do hash MD5 do endereço de email ou como alternativa a ele. Desde o lançamento do FluentCRM 2.8.0, a página de cancelamento de inscrição depende exclusivamente do valor secure_hash para autorização. A página de gerenciamento de preferências aceita tanto o novo valor secure_hash quanto o antigo hash MD5 do endereço de email para autorização.

Embora o valor secure_hash não possa ser derivado do endereço de email, o uso do FluentCRM não segue boas práticas de segurança. O valor secure_hash é gerado uma vez por contato. Nunca é atualizado e nunca expira. Isso é problemático, pois o valor secure_hash é incluído em cada newsletter. Se um atacante obtiver acesso à caixa de entrada de um contato, o atacante pode alterar as configurações do contato indefinidamente. Se o contato afetado estiver vinculado a um usuário com privilégios de administrador, e as alterações de endereço de email forem sincronizadas do FluentCRM para o WordPress, cada newsletter enviada a esse contato conterá um token que nunca expira para assumir o controle do site.

Relatei esse problema relacionado à WPManageNinja em 15/03/2023. Dois meses depois (15/05/2023), a WPManageNinja respondeu que seus consultores de segurança não consideravam o valor estático secure_hash um problema. Os consultores de segurança da WPManageNinja disseram que “está tudo bem usar esse tipo de token gerado uma vez para identificar o contato” e que era “semelhante a tokens de API de serviços SaaS que não são entregues a nenhum outro contato, mas apenas enviados ao contato real que possui o endereço de email”.

A WPManageNinja estava aberta a sugestões e me disse para avisá-los se ainda achasse que era uma preocupação de segurança, o que fiz. Expliquei por que os valores secure_hash não poderiam ser comparados a tokens de API. (Os tokens de API podem ser garantidos de serem enviados apenas por conexões TLS, e o acesso a tokens de API pode ser restrito. Esse não é o caso de valores em texto claro em emails. Mais importante, tokens de API podem ser revogados, enquanto não há maneira de um contato revogar um valor secure_hash.)

No mesmo dia, a WPManageNinja me agradeceu e disse que consideraram combinar o ID do registro de email com o hash. Isso resolverá o problema se implementado em conjunto com a revogação automática de valores secure_hash antigos (expiração baseada em tempo) ou anteriores (expiração baseada em contador). Esse recurso ainda não foi implementado, mas não considero o uso de valores de hash estáticos como parte deste CVE.

Linha do tempo

  • 2023-03-11 Reportei a vulnerabilidade à WPManageNinja. Nesse ponto, eu só havia encontrado a vulnerabilidade na página de cancelamento de inscrição.
  • 2023-03-13 A WPManageNinja confirmou que recebeu meu relato.
  • 2023-03-14 Os desenvolvedores da WPManageNinja negaram o uso de hashes MD5 de endereços de email para autorização, afirmando que estavam usando tokens wp_generate_uuid4.
  • 2023-03-14 Expliquei e provei que eles dependiam de hashes MD5 de endereços de email.
  • 2023-03-15 Devido à resposta inicial da WPManageNinja, investiguei mais a fundo e encontrei a mesma vulnerabilidade na página de gerenciamento de preferências. Reportei minhas descobertas à WPManageNinja e expliquei por que isso tornava a vulnerabilidade mais grave. Também enviei um relato ao Wordfence e solicitei um CVE.
  • 2023-03-16 A WPManageNinja confirmou que recebeu meu relato atualizado.
  • 2023-03-16 O Wordfence confirmou a vulnerabilidade e atribuiu-lhe o CVE-2023-1430.
  • 2023-04-10 Enviei um lembrete de 30 dias à WPManageNinja.
  • 2023-04-14 A WPManageNinja lançou o FluentCRM 2.8.0 sem mencionar quaisquer correções de segurança (apenas “melhorias e correções de bugs”).
  • 2023-04-22 Informei à WPManageNinja que a atualização 2.8.0 só corrigiu a vulnerabilidade na página de cancelamento de inscrição e que ela persistia na página de gerenciamento de preferências.
  • 2023-04-24 A WPManageNinja confirmou que recebeu meu relato atualizado.
  • 2023-05-14 Enviei um lembrete de 60 dias à WPManageNinja.
  • 2023-05-15 A WPManageNinja disse que me enviaria uma versão beta corrigida na semana seguinte (o que nunca aconteceu).
  • 2023-06-01 Perguntei à WPManageNinja se eu deveria avisar o desenvolvedor do WP Fusion antes da divulgação pública. A WPManageNinja me disse que não era necessário, pois eles lançariam uma atualização na semana seguinte (o que não fizeram).
  • 2023-06-08 Disse à WPManageNinja que adiaria a divulgação pública para 2023-06-12, pois a data original de divulgação estava próxima do fim de semana.
  • 2023-06-09 Informei à WPManageNinja que eles haviam atingido 90 dias e que o próximo passo responsável seria publicar informações sobre a vulnerabilidade para que todos pudessem implementar mitigações enquanto aguardavam. Também pedi aos desenvolvedores do WP Fusion que não abordassem a limitação de sincronização até que a WPManageNinja tivesse corrigido a vulnerabilidade.
  • 2023-06-09 O Wordfence publicou detalhes iniciais sobre a vulnerabilidade, afirmando incorretamente que a vulnerabilidade havia sido corrigida. Isso se deveu a uma falha de comunicação entre mim e o Wordfence.
  • 2023-06-12 Publiquei este relato com os detalhes de exploração omitidos.
  • 2023-06-12 A WPManageNinja corrigiu a vulnerabilidade duas horas após a divulgação pública (93 dias após o relato) sem mencionar nada sobre a vulnerabilidade no changelog (apenas “Use Secure Hash instead of MD5 for subscription preference page”).

Nikka Systems Academy (Project Opal) NÃO é afetada

No primeiro trimestre de 2023, começamos a migrar de nossa ferramenta de newsletter anterior (Sendy) para o FluentCRM. Encontrei a vulnerabilidade ao integrar o FluentCRM com a Nikka Systems Academy (Project Opal). Como substituímos o sistema de gerenciamento de inscrições do FluentCRM pelo nosso plugin personalizado, os formulários vulneráveis do FluentCRM nunca afetaram nosso site ou os dados de nossos clientes.

Recomendações para a WPManageNinja

O FluentCRM é um ótimo plugin, mas o tratamento da divulgação de vulnerabilidades pela WPManageNinja deixa muito a desejar. A lista a seguir é minha sugestão de como a WPManageNinja poderia melhorar a situação.

  • Eles deveriam consultar um auditor terceirizado para auditar a base de código atual. A vulnerabilidade CVE-2023-1430 é um exemplo clássico de como não usar hashes. Em conjunto com a negação inicial da WPManageNinja de que usavam hashes MD5 de endereços de email para autorização, isso me diz que provavelmente é hora de uma auditoria terceirizada da base de código.
  • Eles deveriam publicar um arquivo security.txt (RFC 9116) para que pesquisadores de segurança possam contatar seus desenvolvedores diretamente. Eles perderam dias importantes de mitigação, pois tive que relatar a vulnerabilidade através do departamento de suporte ao cliente, que inicialmente descartou incorretamente o relato de vulnerabilidade.
  • Eles deveriam estabelecer um procedimento melhor para corrigir vulnerabilidades em tempo hábil. Uma vulnerabilidade facilmente corrigível como esta deveria ser resolvida dentro de 30 dias. Não ter uma correção pronta dentro da janela de 90 dias de divulgação responsável é inaceitável.
  • Eles deveriam sempre divulgar as vulnerabilidades abordadas e as melhorias de segurança implementadas em seus changelogs para que seus clientes saibam o quão importantes são as atualizações.

Dito isso, ainda confio na WPManageNinja. Existem bugs em todos os softwares, e um único relato de vulnerabilidade mal gerenciado não é motivo para parar de usar seus plugins.

Atualização 2023-06-12: O fato de ainda tentarem esconder a vulnerabilidade no changelog me preocupa genuinamente. (Eles agora adicionaram o CVE.)

Changelog

  • 2023-06-12 Publicação inicial.
  • 2023-06-12 Atualizado com informações sobre a disponibilidade da correção e detalhes de exploração anteriormente omitidos.
  • 2023-06-12 Adicionado à linha do tempo: WPManageNinja adiciona informações sobre o CVE ao changelog do plugin.
  • 2023-06-12 Corrigidos erros de ortografia. CVSS aumentado para 6.5 pelo Wordfence.
  • 2024-01-27 Adicionada informação sobre como o FluentCRM 2.8.40 e 2.8.41 resolveram o problema menor relacionado com valores de hash eternos.
Baixar ferramenta
  • 2023-06-12 Atualizei este relato com informações sobre a correção e os detalhes anteriormente omitidos.
  • 2023-06-12 A WPManageNinja adicionou informações sobre o CVE ao changelog do plugin.
  • 2024-01-17 A WPManageNinja entrou em contato comigo para saber minha opinião sobre a solução para o problema dos valores de hash eternos.
  • 2024-01-27 A WPManageNinja lançou o FluentCRM 2.8.40, resolvendo o problema dos valores de hash eternos com as melhorias que sugeri implementadas.
  • 2024-01-27 A WPManageNinja lançou o FluentCRM 2.8.41, garantindo que o hash de autenticação antigo de um contato seja invalidado quando o usuário WordPress conectado alterar a senha.
  • 2024-01-27 Considerei o problema menor relacionado com valores de hash eternos como resolvido.