CVE-2026-26209

cbor2 provides encoding and decoding for the Concise Binary Object Representation (CBOR) serialization format. Versions prior to 5.9.0 are vulnerable to a Denial of Service (DoS) attack caused by uncontrolled recursion when decoding deeply nested CBOR structures. This vulnerability affects both the pure Python implementation and the C extension `_cbor2`. The C extension relies on Python's internal recursion limits `Py_EnterRecursiveCall` rather than a data-driven depth limit, meaning it still raises `RecursionError` and crashes the worker process when the limit is hit. While the library handles moderate nesting levels, it lacks a hard depth limit. An attacker can supply a crafted CBOR payload containing approximately 100,000 nested arrays `0x81`. When `cbor2.loads()` attempts to parse this, it hits the Python interpreter's maximum recursion depth or exhausts the stack, causing the process to crash with a `RecursionError`. Because the library does not enforce its own limits, it allows an external attacker to exhaust the host application's stack resource. In many web application servers (e.g., Gunicorn, Uvicorn) or task queues (Celery), an unhandled `RecursionError` terminates the worker process immediately. By sending a stream of these small (<100KB) malicious packets, an attacker can repeatedly crash worker processes, resulting in a complete Denial of Service for the application. Version 5.9.0 patches the issue.
Configurations

Configuration 1 (hide)

cpe:2.3:a:agronholm:cbor2:*:*:*:*:*:python:*:*

History

25 Mar 2026, 17:56

Type Values Removed Values Added
Summary
  • (es) cbor2 proporciona codificación y decodificación para el formato de serialización Concise Binary Object Representation (CBOR). Las versiones anteriores a la 5.9.0 son vulnerables a un ataque de denegación de servicio (DoS) causado por recursión incontrolada al decodificar estructuras CBOR profundamente anidadas. Esta vulnerabilidad afecta tanto a la implementación pura de Python como a la extensión C '_cbor2'. La extensión C se basa en los límites de recursión internos de Python 'Py_EnterRecursiveCall' en lugar de un límite de profundidad basado en datos, lo que significa que aún genera 'RecursionError' y bloquea el proceso de trabajo cuando se alcanza el límite. Aunque la biblioteca maneja niveles de anidamiento moderados, carece de un límite de profundidad estricto. Un atacante puede proporcionar una carga útil CBOR manipulada que contenga aproximadamente 100.000 arrays anidados '0x81'. Cuando 'cbor2.loads()' intenta analizar esto, alcanza la profundidad máxima de recursión del intérprete de Python o agota la pila, lo que provoca que el proceso falle con un 'RecursionError'. Debido a que la biblioteca no impone sus propios límites, permite que un atacante externo agote el recurso de pila de la aplicación anfitriona. En muchos servidores de aplicaciones web (p. ej., Gunicorn, Uvicorn) o colas de tareas (Celery), un 'RecursionError' no manejado termina el proceso de trabajo inmediatamente. Al enviar un flujo de estos pequeños paquetes maliciosos (&lt;100KB), un atacante puede bloquear repetidamente los procesos de trabajo, lo que resulta en una denegación de servicio completa para la aplicación. La versión 5.9.0 corrige el problema.
References () https://github.com/agronholm/cbor2/commit/e61a5f365ba610d5907a0ae1bc72769bba34294b - () https://github.com/agronholm/cbor2/commit/e61a5f365ba610d5907a0ae1bc72769bba34294b - Patch
References () https://github.com/agronholm/cbor2/pull/275 - () https://github.com/agronholm/cbor2/pull/275 - Issue Tracking, Patch
References () https://github.com/agronholm/cbor2/releases/tag/5.9.0 - () https://github.com/agronholm/cbor2/releases/tag/5.9.0 - Product, Release Notes
References () https://github.com/agronholm/cbor2/security/advisories/GHSA-3c37-wwvx-h642 - () https://github.com/agronholm/cbor2/security/advisories/GHSA-3c37-wwvx-h642 - Exploit, Vendor Advisory
CPE cpe:2.3:a:agronholm:cbor2:*:*:*:*:*:python:*:*
First Time Agronholm cbor2
Agronholm

23 Mar 2026, 19:16

Type Values Removed Values Added
New CVE

Information

Published : 2026-03-23 19:16

Updated : 2026-03-25 17:56


NVD link : CVE-2026-26209

Mitre link : CVE-2026-26209

CVE.ORG link : CVE-2026-26209


JSON object : View

Products Affected

agronholm

  • cbor2
CWE
CWE-674

Uncontrolled Recursion