CVE-2023-6875: Bypass de autorização no POST SMTP Mailer até tomada de conta admin
Meu achado de bypass de autorização no POST SMTP Mailer, o fluxo do proof of concept e por que o impacto era alto.
Esse foi meu primeiro grande acerto em bug bounty: CVE-2023-6875, um bypass de autorização no plugin POST SMTP Mailer para WordPress.
O proof of concept público está aqui:
Enviei o proof of concept para a Wordfence durante o Holiday Bug Bonanza. O PoC recebeu um prêmio extra, o que fez esse achado parecer um marco real para mim.
O bug
A vulnerabilidade afetava o plugin POST SMTP Mailer para WordPress, especificamente o fluxo de conexão do aplicativo móvel.
Os avisos públicos a descrevem como um bypass de autorização causado por um problema de type juggling no endpoint REST connect-app. Na prática, um atacante não autenticado podia resetar a API key usada pelo app do mailer e depois usar esse acesso para ler logs de email.
Isso fica sério rapidamente porque logs de email do WordPress frequentemente contêm emails de redefinição de senha.
Escala
Como referência de escala, a página do plugin no WordPress.org atualmente lista o POST SMTP Mailer com 300,000+ instalações ativas.
Esse não é o número histórico exato de sites vulneráveis. É o número atual de instalações ativas mostrado pelo WordPress.org. Ainda assim, mostra por que o bug importava: não era um plugin minúsculo instalado em alguns sites de teste.
A BleepingComputer cobriu o caso em 11 de janeiro de 2024, descrevendo o POST SMTP Mailer como um plugin de entrega de email usado por 300,000 sites e reportando que mais de 150k sites WordPress estavam em risco de tomada de controle.
Por que importava
O caminho vulnerável podia permitir que um atacante não autenticado:
- Resetasse ou controlasse o token de acesso da API do mailer.
- Lesse metadados e conteúdo dos logs de email.
- Localizasse emails de redefinição de senha.
- Usasse o fluxo de reset para tomar uma conta.
Para um site WordPress, expor emails de redefinição de senha pode transformar um bug em plugin de email em tomada de conta.
Forma do proof of concept
Não estou incorporando o script completo aqui porque o repositório público já contém tudo. A parte importante para este writeup é a cadeia:
O PoC fazia quatro coisas:
- Configurava um token de app controlado por meio do endpoint de conexão vulnerável.
- Disparava um email de redefinição de senha no ambiente de teste.
- Usava o token controlado para recuperar logs do mailer.
- Selecionava o log de email relevante e exibia seu conteúdo.
Isso deixou o impacto fácil de revisar. O relatório não dependia de linguagem vaga de risco; ele mostrava um caminho de acesso não autenticado até exposição sensível de emails de reset.