Staging Environment: Content and features may be unstable or change without notice.
Search for packages
Package details: pkg:pypi/aiohttp@0.19.0
purl pkg:pypi/aiohttp@0.19.0
Next non-vulnerable version 3.12.14
Latest non-vulnerable version 4.0.0a0
Risk
Vulnerabilities affecting this package (13)
Vulnerability Summary Fixed by
VCID-5ukz-5dm2-5ygz
Aliases:
GHSA-pjjw-qhg8-p2p9
GMS-2023-5095
aiohttp has vulnerable dependency that is vulnerable to request smuggling ### Summary llhttp 8.1.1 is vulnerable to two request smuggling vulnerabilities. Details have not been disclosed yet, so refer to llhttp for future information. The issue is resolved by using llhttp 9+ (which is included in aiohttp 3.8.6+).
3.8.6
Affected by 8 other vulnerabilities.
VCID-7qfx-k5s8-6ua2
Aliases:
CVE-2024-27306
GHSA-7gpw-8wmc-pm8g
aiohttp Cross-site Scripting vulnerability on index pages for static file handling ### Summary A XSS vulnerability exists on index pages for static file handling. ### Details When using `web.static(..., show_index=True)`, the resulting index pages do not escape file names. If users can upload files with arbitrary filenames to the static directory, the server is vulnerable to XSS attacks. ### Workaround We have always recommended using a reverse proxy server (e.g. nginx) for serving static files. Users following the recommendation are unaffected. Other users can disable `show_index` if unable to upgrade. ----- Patch: https://github.com/aio-libs/aiohttp/pull/8319/files
3.9.4
Affected by 2 other vulnerabilities.
VCID-b6tu-y9f3-ebeh
Aliases:
CVE-2024-52304
GHSA-8495-4g3g-x7pr
aiohttp allows request smuggling due to incorrect parsing of chunk extensions ### Summary The Python parser parses newlines in chunk extensions incorrectly which can lead to request smuggling vulnerabilities under certain conditions. ### Impact If a pure Python version of aiohttp is installed (i.e. without the usual C extensions) or `AIOHTTP_NO_EXTENSIONS` is enabled, then an attacker may be able to execute a request smuggling attack to bypass certain firewalls or proxy protections. ----- Patch: https://github.com/aio-libs/aiohttp/commit/259edc369075de63e6f3a4eaade058c62af0df71
3.10.11
Affected by 1 other vulnerability.
VCID-e8da-2p23-2ua6
Aliases:
CVE-2023-47627
GHSA-gfw2-4jvh-wgfg
PYSEC-2023-246
aiohttp is an asynchronous HTTP client/server framework for asyncio and Python. The HTTP parser in AIOHTTP has numerous problems with header parsing, which could lead to request smuggling. This parser is only used when AIOHTTP_NO_EXTENSIONS is enabled (or not using a prebuilt wheel). These bugs have been addressed in commit `d5c12ba89` which has been included in release version 3.8.6. Users are advised to upgrade. There are no known workarounds for these issues.
3.8.6
Affected by 8 other vulnerabilities.
VCID-ek1n-2uc1-h7gf
Aliases:
CVE-2024-23829
GHSA-8qpw-xqxj-h4r2
PYSEC-2024-26
aiohttp's HTTP parser (the python one, not llhttp) still overly lenient about separators ### Summary Security-sensitive parts of the *Python HTTP parser* retained minor differences in allowable character sets, that must trigger error handling to robustly match frame boundaries of proxies in order to protect against injection of additional requests. Additionally, validation could trigger exceptions that were not handled consistently with processing of other malformed input. ### Details These problems are rooted in pattern matching protocol elements, previously improved by PR #3235 and GHSA-gfw2-4jvh-wgfg: 1. The expression `HTTP/(\d).(\d)` lacked another backslash to clarify that the separator should be a literal dot, not just *any* Unicode code point (result: `HTTP/(\d)\.(\d)`). 2. The HTTP version was permitting Unicode digits, where only ASCII digits are standards-compliant. 3. Distinct regular expressions for validating HTTP Method and Header field names were used - though both should (at least) apply the common restrictions of rfc9110 `token`. ### PoC `GET / HTTP/1ö1` `GET / HTTP/1.𝟙` `GET/: HTTP/1.1` `Content-Encoding?: chunked` ### Impact Primarily concerns running an aiohttp server without llhttp: 1. **behind a proxy**: Being more lenient than internet standards require could, depending on deployment environment, assist in request smuggling. 2. **directly accessible** or exposed behind proxies relaying malformed input: the unhandled exception could cause excessive resource consumption on the application server and/or its logging facilities. ----- Patch: https://github.com/aio-libs/aiohttp/pull/8074/files
3.9.2
Affected by 4 other vulnerabilities.
VCID-gu27-1n8a-cuft
Aliases:
CVE-2018-1000519
GHSA-fpwp-69xv-c67f
PYSEC-2018-80
aio-libs aiohttp-session contains a Session Fixation vulnerability in load_session function for RedisStorage (see: https://github.com/aio-libs/aiohttp-session/blob/master/aiohttp_session/redis_storage.py#L42) that can result in Session Hijacking. This attack appear to be exploitable via Any method that allows setting session cookies (?session=<>, or meta tags or script tags with Set-Cookie).
2.4.0
Affected by 0 other vulnerabilities.
3.0.0b0
Affected by 13 other vulnerabilities.
VCID-jtgf-td4z-2khx
Aliases:
CVE-2023-47641
GHSA-xx9p-xxvh-7g8j
PYSEC-2023-247
aiohttp is an asynchronous HTTP client/server framework for asyncio and Python. Affected versions of aiohttp have a security vulnerability regarding the inconsistent interpretation of the http protocol. HTTP/1.1 is a persistent protocol, if both Content-Length(CL) and Transfer-Encoding(TE) header values are present it can lead to incorrect interpretation of two entities that parse the HTTP and we can poison other sockets with this incorrect interpretation. A possible Proof-of-Concept (POC) would be a configuration with a reverse proxy(frontend) that accepts both CL and TE headers and aiohttp as backend. As aiohttp parses anything with chunked, we can pass a chunked123 as TE, the frontend entity will ignore this header and will parse Content-Length. The impact of this vulnerability is that it is possible to bypass any proxy rule, poisoning sockets to other users like passing Authentication Headers, also if it is present an Open Redirect an attacker could combine it to redirect random users to another website and log the request. This vulnerability has been addressed in release 3.8.0 of aiohttp. Users are advised to upgrade. There are no known workarounds for this vulnerability.
3.8.0
Affected by 11 other vulnerabilities.
VCID-mrmh-b7jy-hbey
Aliases:
CVE-2023-37276
GHSA-45c4-8wx5-qw6w
PYSEC-2023-120
aiohttp.web.Application vulnerable to HTTP request smuggling via llhttp HTTP request parser ### Impact aiohttp v3.8.4 and earlier are [bundled with llhttp v6.0.6](https://github.com/aio-libs/aiohttp/blob/v3.8.4/.gitmodules) which is vulnerable to CVE-2023-30589. The vulnerable code is used by aiohttp for its HTTP request parser when available which is the default case when installing from a wheel. This vulnerability only affects users of aiohttp as an HTTP server (ie `aiohttp.Application`), you are not affected by this vulnerability if you are using aiohttp as an HTTP client library (ie `aiohttp.ClientSession`). ### Reproducer ```python from aiohttp import web async def example(request: web.Request): headers = dict(request.headers) body = await request.content.read() return web.Response(text=f"headers: {headers} body: {body}") app = web.Application() app.add_routes([web.post('/', example)]) web.run_app(app) ``` Sending a crafted HTTP request will cause the server to misinterpret one of the HTTP header values leading to HTTP request smuggling. ```console $ printf "POST / HTTP/1.1\r\nHost: localhost:8080\r\nX-Abc: \rxTransfer-Encoding: chunked\r\n\r\n1\r\nA\r\n0\r\n\r\n" \ | nc localhost 8080 Expected output: headers: {'Host': 'localhost:8080', 'X-Abc': '\rxTransfer-Encoding: chunked'} body: b'' Actual output (note that 'Transfer-Encoding: chunked' is an HTTP header now and body is treated differently) headers: {'Host': 'localhost:8080', 'X-Abc': '', 'Transfer-Encoding': 'chunked'} body: b'A' ``` ### Patches Upgrade to the latest version of aiohttp to resolve this vulnerability. It has been fixed in v3.8.5: [`pip install aiohttp >= 3.8.5`](https://pypi.org/project/aiohttp/3.8.5/) ### Workarounds If you aren't able to upgrade you can reinstall aiohttp using `AIOHTTP_NO_EXTENSIONS=1` as an environment variable to disable the llhttp HTTP request parser implementation. The pure Python implementation isn't vulnerable to request smuggling: ```console $ python -m pip uninstall --yes aiohttp $ AIOHTTP_NO_EXTENSIONS=1 python -m pip install --no-binary=aiohttp --no-cache aiohttp ``` ### References * https://nvd.nist.gov/vuln/detail/CVE-2023-30589 * https://hackerone.com/reports/2001873
3.8.5
Affected by 10 other vulnerabilities.
4.0.0a0
Affected by 0 other vulnerabilities.
VCID-uwwz-t2fj-4udk
Aliases:
CVE-2021-21330
GHSA-v6wp-4m6f-gcjg
PYSEC-2021-76
aiohttp is an asynchronous HTTP client/server framework for asyncio and Python. In aiohttp before version 3.7.4 there is an open redirect vulnerability. A maliciously crafted link to an aiohttp-based web-server could redirect the browser to a different website. It is caused by a bug in the `aiohttp.web_middlewares.normalize_path_middleware` middleware. This security problem has been fixed in 3.7.4. Upgrade your dependency using pip as follows "pip install aiohttp >= 3.7.4". If upgrading is not an option for you, a workaround can be to avoid using `aiohttp.web_middlewares.normalize_path_middleware` in your applications.
3.7.4
Affected by 12 other vulnerabilities.
VCID-w3pu-rzxk-wbe5
Aliases:
CVE-2023-49082
GHSA-qvrw-v9rv-5rjx
PYSEC-2023-251
aiohttp is an asynchronous HTTP client/server framework for asyncio and Python. Improper validation makes it possible for an attacker to modify the HTTP request (e.g. insert a new header) or even create a new HTTP request if the attacker controls the HTTP method. The vulnerability occurs only if the attacker can control the HTTP method (GET, POST etc.) of the request. If the attacker can control the HTTP version of the request it will be able to modify the request (request smuggling). This issue has been patched in version 3.9.0.
3.9.0
Affected by 6 other vulnerabilities.
VCID-yakb-wzk1-p3h5
Aliases:
CVE-2024-30251
GHSA-5m98-qgg9-wh84
aiohttp vulnerable to Denial of Service when trying to parse malformed POST requests ### Summary An attacker can send a specially crafted POST (multipart/form-data) request. When the aiohttp server processes it, the server will enter an infinite loop and be unable to process any further requests. ### Impact An attacker can stop the application from serving requests after sending a single request. ------- For anyone needing to patch older versions of aiohttp, the minimum diff needed to resolve the issue is (located in `_read_chunk_from_length()`): ```diff diff --git a/aiohttp/multipart.py b/aiohttp/multipart.py index 227be605c..71fc2654a 100644 --- a/aiohttp/multipart.py +++ b/aiohttp/multipart.py @@ -338,6 +338,8 @@ class BodyPartReader: assert self._length is not None, "Content-Length required for chunked read" chunk_size = min(size, self._length - self._read_bytes) chunk = await self._content.read(chunk_size) + if self._content.at_eof(): + self._at_eof = True return chunk async def _read_chunk_from_stream(self, size: int) -> bytes: ``` This does however introduce some very minor issues with handling form data. So, if possible, it would be recommended to also backport the changes in: https://github.com/aio-libs/aiohttp/commit/cebe526b9c34dc3a3da9140409db63014bc4cf19 https://github.com/aio-libs/aiohttp/commit/7eecdff163ccf029fbb1ddc9de4169d4aaeb6597 https://github.com/aio-libs/aiohttp/commit/f21c6f2ca512a026ce7f0f6c6311f62d6a638866
3.9.4
Affected by 2 other vulnerabilities.
VCID-z8bc-pxrm-a3f6
Aliases:
CVE-2023-49081
GHSA-q3qx-c6g2-7pw2
PYSEC-2023-250
aiohttp is an asynchronous HTTP client/server framework for asyncio and Python. Improper validation made it possible for an attacker to modify the HTTP request (e.g. to insert a new header) or create a new HTTP request if the attacker controls the HTTP version. The vulnerability only occurs if the attacker can control the HTTP version of the request. This issue has been patched in version 3.9.0.
3.9.0
Affected by 6 other vulnerabilities.
VCID-zb3s-vuz2-6qca
Aliases:
CVE-2025-53643
GHSA-9548-qrrj-x5pj
aiohttp: AIOHTTP HTTP Request/Response Smuggling
3.12.14
Affected by 0 other vulnerabilities.
Vulnerabilities fixed by this package (0)
Vulnerability Summary Aliases
This package is not known to fix vulnerabilities.

Date Actor Action Vulnerability Source VulnerableCode Version
2026-05-30T07:32:37.043977+00:00 GitLab Importer Affected by VCID-zb3s-vuz2-6qca https://gitlab.com/gitlab-org/advisories-community/-/blob/main/pypi/aiohttp/CVE-2025-53643.yml 38.6.0
2026-05-30T07:07:46.996083+00:00 GitLab Importer Affected by VCID-b6tu-y9f3-ebeh https://gitlab.com/gitlab-org/advisories-community/-/blob/main/pypi/aiohttp/CVE-2024-52304.yml 38.6.0
2026-05-30T06:44:12.139364+00:00 GitLab Importer Affected by VCID-yakb-wzk1-p3h5 https://gitlab.com/gitlab-org/advisories-community/-/blob/main/pypi/aiohttp/CVE-2024-30251.yml 38.6.0
2026-05-30T06:43:18.999538+00:00 GitLab Importer Affected by VCID-7qfx-k5s8-6ua2 https://gitlab.com/gitlab-org/advisories-community/-/blob/main/pypi/aiohttp/CVE-2024-27306.yml 38.6.0
2026-05-30T06:34:44.987648+00:00 GitLab Importer Affected by VCID-ek1n-2uc1-h7gf https://gitlab.com/gitlab-org/advisories-community/-/blob/main/pypi/aiohttp/CVE-2024-23829.yml 38.6.0
2026-05-30T06:28:01.528856+00:00 GitLab Importer Affected by VCID-z8bc-pxrm-a3f6 https://gitlab.com/gitlab-org/advisories-community/-/blob/main/pypi/aiohttp/CVE-2023-49081.yml 38.6.0
2026-05-30T06:27:54.939665+00:00 GitLab Importer Affected by VCID-w3pu-rzxk-wbe5 https://gitlab.com/gitlab-org/advisories-community/-/blob/main/pypi/aiohttp/CVE-2023-49082.yml 38.6.0
2026-05-30T06:27:53.255357+00:00 GitLab Importer Affected by VCID-5ukz-5dm2-5ygz https://gitlab.com/gitlab-org/advisories-community/-/blob/main/pypi/aiohttp/GMS-2023-5095.yml 38.6.0
2026-05-30T06:26:59.836683+00:00 GitLab Importer Affected by VCID-jtgf-td4z-2khx https://gitlab.com/gitlab-org/advisories-community/-/blob/main/pypi/aiohttp/CVE-2023-47641.yml 38.6.0
2026-05-30T06:26:53.220414+00:00 GitLab Importer Affected by VCID-e8da-2p23-2ua6 https://gitlab.com/gitlab-org/advisories-community/-/blob/main/pypi/aiohttp/CVE-2023-47627.yml 38.6.0
2026-05-30T06:14:53.353187+00:00 GitLab Importer Affected by VCID-mrmh-b7jy-hbey https://gitlab.com/gitlab-org/advisories-community/-/blob/main/pypi/aiohttp/CVE-2023-37276.yml 38.6.0
2026-05-30T04:34:36.267086+00:00 GitLab Importer Affected by VCID-uwwz-t2fj-4udk https://gitlab.com/gitlab-org/advisories-community/-/blob/main/pypi/aiohttp/CVE-2021-21330.yml 38.6.0
2026-05-30T03:53:55.610098+00:00 GitLab Importer Affected by VCID-gu27-1n8a-cuft https://gitlab.com/gitlab-org/advisories-community/-/blob/main/pypi/aiohttp/CVE-2018-1000519.yml 38.6.0
2026-05-29T16:41:35.302602+00:00 PyPI Importer Affected by VCID-ek1n-2uc1-h7gf https://osv-vulnerabilities.storage.googleapis.com/PyPI/all.zip 38.6.0
2026-05-29T16:41:24.119846+00:00 PyPI Importer Affected by VCID-z8bc-pxrm-a3f6 https://osv-vulnerabilities.storage.googleapis.com/PyPI/all.zip 38.6.0
2026-05-29T16:41:23.742592+00:00 PyPI Importer Affected by VCID-w3pu-rzxk-wbe5 https://osv-vulnerabilities.storage.googleapis.com/PyPI/all.zip 38.6.0
2026-05-29T16:41:22.155523+00:00 PyPI Importer Affected by VCID-e8da-2p23-2ua6 https://osv-vulnerabilities.storage.googleapis.com/PyPI/all.zip 38.6.0
2026-05-29T16:41:21.777023+00:00 PyPI Importer Affected by VCID-jtgf-td4z-2khx https://osv-vulnerabilities.storage.googleapis.com/PyPI/all.zip 38.6.0
2026-05-29T16:40:57.280242+00:00 PyPI Importer Affected by VCID-mrmh-b7jy-hbey https://osv-vulnerabilities.storage.googleapis.com/PyPI/all.zip 38.6.0
2026-05-29T16:35:58.025817+00:00 PyPI Importer Affected by VCID-uwwz-t2fj-4udk https://osv-vulnerabilities.storage.googleapis.com/PyPI/all.zip 38.6.0
2026-05-29T08:46:05.314868+00:00 Pypa Importer Affected by VCID-ek1n-2uc1-h7gf https://github.com/pypa/advisory-database/blob/main/vulns/aiohttp/PYSEC-2024-26.yaml 38.6.0
2026-05-29T08:45:38.048652+00:00 Pypa Importer Affected by VCID-z8bc-pxrm-a3f6 https://github.com/pypa/advisory-database/blob/main/vulns/aiohttp/PYSEC-2023-250.yaml 38.6.0
2026-05-29T08:45:37.077999+00:00 Pypa Importer Affected by VCID-w3pu-rzxk-wbe5 https://github.com/pypa/advisory-database/blob/main/vulns/aiohttp/PYSEC-2023-251.yaml 38.6.0
2026-05-29T08:45:34.072295+00:00 Pypa Importer Affected by VCID-e8da-2p23-2ua6 https://github.com/pypa/advisory-database/blob/main/vulns/aiohttp/PYSEC-2023-246.yaml 38.6.0
2026-05-29T08:45:33.178539+00:00 Pypa Importer Affected by VCID-jtgf-td4z-2khx https://github.com/pypa/advisory-database/blob/main/vulns/aiohttp/PYSEC-2023-247.yaml 38.6.0
2026-05-29T08:44:42.757363+00:00 Pypa Importer Affected by VCID-mrmh-b7jy-hbey https://github.com/pypa/advisory-database/blob/main/vulns/aiohttp/PYSEC-2023-120.yaml 38.6.0
2026-05-29T08:36:00.079682+00:00 Pypa Importer Affected by VCID-uwwz-t2fj-4udk https://github.com/pypa/advisory-database/blob/main/vulns/aiohttp/PYSEC-2021-76.yaml 38.6.0