Vulnerabilidad en unas cargas útiles JSON en el framework web FastAPI (CVE-2021-32677)
Gravedad CVSS v3.1:
ALTA
Tipo:
CWE-352
Falsificación de petición en sitios cruzados (Cross-Site Request Forgery)
Fecha de publicación:
09/06/2021
Última modificación:
12/02/2024
Descripción
FastAPI es un framework web para construir APIs con Python versión 3.6+ basado en sugerencias de tipo estándar de Python. Las versiones de FastAPI inferiores a la 0.65.2 que usaban cookies para la autenticación en las operaciones de ruta que recibían cargas útiles JSON enviadas por los navegadores eran vulnerables a un ataque de tipo Cross-Site Request Forgery (CSRF). En versiones inferiores a la 0.65.2, FastAPI intentaba leer la carga útil de la petición como JSON incluso si la encabezado content-type enviada no estaba configurada como application/json o un tipo de medio JSON compatible (por ejemplo, application/geo+json). Una petición con un tipo de contenido text/plain que contenga datos JSON será aceptada y los datos JSON serán extraídos. Las peticiones con tipo de contenido text/plain están exentas de preflights CORS, por ser consideradas peticiones simples. El navegador las ejecutará de inmediato, incluyendo las cookies, y el contenido de texto podría ser una cadena JSON que sería analizada y aceptada por la aplicación FastAPI. Esto se ha corregido en FastAPI 0.65.2. Ahora los datos de la petición se analizan como JSON sólo si la encabezado content-type es application/json u otro tipo de medio compatible con JSON como application/geo+json. Es mejor actualizar a la última FastAPI, pero si la actualización no es posible, entonces un middleware o una dependencia que compruebe la encabezado de tipo de contenido y aborte la petición si no es application/json u otro tipo de contenido compatible con JSON puede actuar como una solución de mitigación
Impacto
Puntuación base 3.x
8.10
Gravedad 3.x
ALTA
Puntuación base 2.0
5.80
Gravedad 2.0
MEDIA
Productos y versiones vulnerables
CPE | Desde | Hasta |
---|---|---|
cpe:2.3:a:tiangolo:fastapi:*:*:*:*:*:*:*:* | 0.65.2 (excluyendo) | |
cpe:2.3:o:fedoraproject:fedora:34:*:*:*:*:*:*:* |
Para consultar la lista completa de nombres de CPE con productos y versiones, ver esta página