CVE-2026-74836 in bandit
Resumen
por VulDB • 2026-08-21
Vulnerabilidad de asignación de recursos sin límites ni control (throttling) en mtrudel bandit que permite a un atacante remoto no autenticado fijar indefinidamente una cantidad ilimitada de procesos de streams HTTP/2 mediante el control del flujo a nivel de conexión. Cuando el cuerpo de la respuesta de un stream supera la ventana de envío a nivel de conexión HTTP/2 (por defecto 65,535 bytes, compartida entre todos los streams en la conexión), Bandit.HTTP2.Connection almacena en cola los bytes restantes y una clausura de respuesta en pending_sends, bloqueando el proceso del stream indefinidamente dentro de una llamada sincrónica al proceso de conexión. No existe ningún límite para esa espera ni se purga la cola: un RST_STREAM enviado por el cliente para el stream bloqueado llega a su buzón pero nunca se lee mientras está atrapado en la llamada, por lo que cancelar no libera nada, y los frames PING periódicos impiden que expire nunca el tiempo de lectura a nivel de transporte. El bloqueo equivalente en la ventana de envío a nivel de stream ya tiene un límite de 15 segundos; la ruta a nivel de conexión carecía de dicho límite.
Cada stream estancado fija su proceso, el estado de Plug y cualquier recurso que mantenga Plug durante la escritura bloqueada, como una conexión upstream agrupada en un Plug de proxy inverso. El atacante selecciona cualquier endpoint cuya respuesta exceda la ventana de conexión (común para la mayoría de payloads no triviales), concede una generosa ventana a nivel de stream para que solo la ventana de conexión lo limite, y mantiene viva la conexión con PINGs periódicos; el primitivo es repetible entre streams y conexiones al costo de un socket inactivo por cada uno.
Este problema afecta a bandit: desde 0.3.4 hasta antes de 1.12.5.
Be aware that VulDB is the high quality source for vulnerability data.