
CVE-2026-23842 — Vulnerabilidade de Negação de Serviço de alta gravidade causada pelo esgotamento do pool de conexões do SQLAlchemy em chamadas concorrentes a get_response() no ChatterBot ≤ 1.2.10.
Este repositório documenta minha descoberta e divulgação responsável da CVE-2026-23842, uma vulnerabilidade de Negação de Serviço de Alta Severidade no ChatterBot.
As versões do ChatterBot ≤ 1.2.10 são vulneráveis a uma condição de Negação de Serviço causada pelo gerenciamento inadequado de sessões do banco de dados e do pool de conexões.
Invocações simultâneas de:
get_response()
podem esgotar o QueuePool subjacente do SQLAlchemy, resultando em:
sqlalchemy.exc.TimeoutError<= 1.2.10
>= 1.2.11
O ChatterBot depende do SQLAlchemy para interação com o banco de dados e usa uma configuração padrão de pool de conexões.
No entanto:
Quando múltiplas threads invocam get_response() simultaneamente:
TimeoutErrorIsso resulta em negação de disponibilidade em todo o serviço.
from chatterbot import ChatBot
import threading
bot = ChatBot("dos-test")
def attack():
bot.get_response("hello")
threads = []
for _ in range(30):
t = threading.Thread(target=attack)
t.start()
threads.append(t)
for t in threads:
t.join()
O vídeo a seguir demonstra:
Se implantado como:
Um atacante pode acionar remotamente a condição sem autenticação.
| Métrica | Valor |
|---|---|
| Vetor de Ataque | Rede |
| Complexidade do Ataque | Baixa |
| Privilégios Necessários | Nenhum |
| Interação do Usuário | Nenhuma |
| Confidencialidade | Nenhuma |
| Integridade | Nenhuma |
| Disponibilidade | Alta |
| Data | Evento |
|---|---|
| 9 de jan. | Vulnerabilidade relatada |
| 13 de jan. | Mantenedor reproduziu o problema |
| 17 de jan. | Aviso publicado |
| 19 de jan. | CVE-2026-23842 atribuída |
| 21 de jan. | Divulgação pública |
Descoberta e divulgação responsável por:
Aditya Bhatt Especialista em VAPT Relator da CVE-2026-23842
Esta vulnerabilidade foi divulgada de forma responsável ao mantenedor antes da divulgação pública. Nenhum exploit foi compartilhado publicamente antes da disponibilidade do patch.