Vulnerability Details CVE-2021-32677
FastAPI is a web framework for building APIs with Python 3.6+ based on standard Python type hints. FastAPI versions lower than 0.65.2 that used cookies for authentication in path operations that received JSON payloads sent by browsers were vulnerable to a Cross-Site Request Forgery (CSRF) attack. In versions lower than 0.65.2, FastAPI would try to read the request payload as JSON even if the content-type header sent was not set to application/json or a compatible JSON media type (e.g. application/geo+json). A request with a content type of text/plain containing JSON data would be accepted and the JSON data would be extracted. Requests with content type text/plain are exempt from CORS preflights, for being considered Simple requests. The browser will execute them right away including cookies, and the text content could be a JSON string that would be parsed and accepted by the FastAPI application. This is fixed in FastAPI 0.65.2. The request data is now parsed as JSON only if the content-type header is application/json or another JSON compatible media type like application/geo+json. It's best to upgrade to the latest FastAPI, but if updating is not possible then a middleware or a dependency that checks the content-type header and aborts the request if it is not application/json or another JSON compatible content type can act as a mitigating workaround.
Exploit prediction scoring system (EPSS) score
EPSS Score 0.001
EPSS Ranking 31.6%
CVSS Severity
CVSS v3 Score 8.2
CVSS v2 Score 5.8
Products affected by CVE-2021-32677
-
cpe:2.3:a:tiangolo:fastapi:-
-
cpe:2.3:a:tiangolo:fastapi:0.1.11
-
cpe:2.3:a:tiangolo:fastapi:0.1.12
-
cpe:2.3:a:tiangolo:fastapi:0.1.13
-
cpe:2.3:a:tiangolo:fastapi:0.1.14
-
cpe:2.3:a:tiangolo:fastapi:0.1.15
-
cpe:2.3:a:tiangolo:fastapi:0.1.16
-
cpe:2.3:a:tiangolo:fastapi:0.1.17
-
cpe:2.3:a:tiangolo:fastapi:0.1.19
-
cpe:2.3:a:tiangolo:fastapi:0.10.0
-
cpe:2.3:a:tiangolo:fastapi:0.10.1
-
cpe:2.3:a:tiangolo:fastapi:0.10.2
-
cpe:2.3:a:tiangolo:fastapi:0.10.3
-
cpe:2.3:a:tiangolo:fastapi:0.11.0
-
cpe:2.3:a:tiangolo:fastapi:0.12.0
-
cpe:2.3:a:tiangolo:fastapi:0.12.1
-
cpe:2.3:a:tiangolo:fastapi:0.13.0
-
cpe:2.3:a:tiangolo:fastapi:0.14.0
-
cpe:2.3:a:tiangolo:fastapi:0.15.0
-
cpe:2.3:a:tiangolo:fastapi:0.16.0
-
cpe:2.3:a:tiangolo:fastapi:0.17.0
-
cpe:2.3:a:tiangolo:fastapi:0.18.0
-
cpe:2.3:a:tiangolo:fastapi:0.19.0
-
cpe:2.3:a:tiangolo:fastapi:0.2.0
-
cpe:2.3:a:tiangolo:fastapi:0.2.1
-
cpe:2.3:a:tiangolo:fastapi:0.20.0
-
cpe:2.3:a:tiangolo:fastapi:0.20.1
-
cpe:2.3:a:tiangolo:fastapi:0.21.0
-
cpe:2.3:a:tiangolo:fastapi:0.22.0
-
cpe:2.3:a:tiangolo:fastapi:0.23.0
-
cpe:2.3:a:tiangolo:fastapi:0.24.0
-
cpe:2.3:a:tiangolo:fastapi:0.25.0
-
cpe:2.3:a:tiangolo:fastapi:0.26.0
-
cpe:2.3:a:tiangolo:fastapi:0.27.0
-
cpe:2.3:a:tiangolo:fastapi:0.27.1
-
cpe:2.3:a:tiangolo:fastapi:0.27.2
-
cpe:2.3:a:tiangolo:fastapi:0.28.0
-
cpe:2.3:a:tiangolo:fastapi:0.29.0
-
cpe:2.3:a:tiangolo:fastapi:0.29.1
-
cpe:2.3:a:tiangolo:fastapi:0.3.0
-
cpe:2.3:a:tiangolo:fastapi:0.30.0
-
cpe:2.3:a:tiangolo:fastapi:0.30.1
-
cpe:2.3:a:tiangolo:fastapi:0.31.0
-
cpe:2.3:a:tiangolo:fastapi:0.32.0
-
cpe:2.3:a:tiangolo:fastapi:0.33.0
-
cpe:2.3:a:tiangolo:fastapi:0.34.0
-
cpe:2.3:a:tiangolo:fastapi:0.35.0
-
cpe:2.3:a:tiangolo:fastapi:0.36.0
-
cpe:2.3:a:tiangolo:fastapi:0.37.0
-
cpe:2.3:a:tiangolo:fastapi:0.38.0
-
cpe:2.3:a:tiangolo:fastapi:0.38.1
-
cpe:2.3:a:tiangolo:fastapi:0.39.0
-
cpe:2.3:a:tiangolo:fastapi:0.4.0
-
cpe:2.3:a:tiangolo:fastapi:0.40.0
-
cpe:2.3:a:tiangolo:fastapi:0.41.0
-
cpe:2.3:a:tiangolo:fastapi:0.42.0
-
cpe:2.3:a:tiangolo:fastapi:0.43.0
-
cpe:2.3:a:tiangolo:fastapi:0.44.0
-
cpe:2.3:a:tiangolo:fastapi:0.44.1
-
cpe:2.3:a:tiangolo:fastapi:0.45.0
-
cpe:2.3:a:tiangolo:fastapi:0.46.0
-
cpe:2.3:a:tiangolo:fastapi:0.47.0
-
cpe:2.3:a:tiangolo:fastapi:0.47.1
-
cpe:2.3:a:tiangolo:fastapi:0.48.0
-
cpe:2.3:a:tiangolo:fastapi:0.49.0
-
cpe:2.3:a:tiangolo:fastapi:0.49.1
-
cpe:2.3:a:tiangolo:fastapi:0.49.2
-
cpe:2.3:a:tiangolo:fastapi:0.5.0
-
cpe:2.3:a:tiangolo:fastapi:0.5.1
-
cpe:2.3:a:tiangolo:fastapi:0.50.0
-
cpe:2.3:a:tiangolo:fastapi:0.51.0
-
cpe:2.3:a:tiangolo:fastapi:0.52.0
-
cpe:2.3:a:tiangolo:fastapi:0.53.0
-
cpe:2.3:a:tiangolo:fastapi:0.53.1
-
cpe:2.3:a:tiangolo:fastapi:0.53.2
-
cpe:2.3:a:tiangolo:fastapi:0.54.0
-
cpe:2.3:a:tiangolo:fastapi:0.54.1
-
cpe:2.3:a:tiangolo:fastapi:0.54.2
-
cpe:2.3:a:tiangolo:fastapi:0.55.0
-
cpe:2.3:a:tiangolo:fastapi:0.55.1
-
cpe:2.3:a:tiangolo:fastapi:0.56.0
-
cpe:2.3:a:tiangolo:fastapi:0.56.1
-
cpe:2.3:a:tiangolo:fastapi:0.57.0
-
cpe:2.3:a:tiangolo:fastapi:0.58.0
-
cpe:2.3:a:tiangolo:fastapi:0.58.1
-
cpe:2.3:a:tiangolo:fastapi:0.59.0
-
cpe:2.3:a:tiangolo:fastapi:0.6.0
-
cpe:2.3:a:tiangolo:fastapi:0.6.1
-
cpe:2.3:a:tiangolo:fastapi:0.6.2
-
cpe:2.3:a:tiangolo:fastapi:0.6.3
-
cpe:2.3:a:tiangolo:fastapi:0.6.4
-
cpe:2.3:a:tiangolo:fastapi:0.60.0
-
cpe:2.3:a:tiangolo:fastapi:0.60.1
-
cpe:2.3:a:tiangolo:fastapi:0.60.2
-
cpe:2.3:a:tiangolo:fastapi:0.61.0
-
cpe:2.3:a:tiangolo:fastapi:0.61.1
-
cpe:2.3:a:tiangolo:fastapi:0.61.2
-
cpe:2.3:a:tiangolo:fastapi:0.62.0
-
cpe:2.3:a:tiangolo:fastapi:0.63.0
-
cpe:2.3:a:tiangolo:fastapi:0.64.0
-
cpe:2.3:a:tiangolo:fastapi:0.65.0
-
cpe:2.3:a:tiangolo:fastapi:0.65.1
-
cpe:2.3:a:tiangolo:fastapi:0.7.0
-
cpe:2.3:a:tiangolo:fastapi:0.7.1
-
cpe:2.3:a:tiangolo:fastapi:0.8.0
-
cpe:2.3:a:tiangolo:fastapi:0.9.0
-
cpe:2.3:a:tiangolo:fastapi:0.9.1
-
cpe:2.3:o:fedoraproject:fedora:34