Python/aiohttp/3.7.0b0


Async http client/server framework (asyncio)

https://pypi.org/project/aiohttp
Apache-2.0

32 Security Vulnerabilities

AIOHTTP has CRLF injection through multipart part content type header construction

Published date: 2026-04-01T21:20:06Z
CVE: CVE-2026-34514
Links:

Summary

An attacker who controls the content_type parameter in aiohttp could use this to inject extra headers or similar exploits.

Impact

If an application allows untrusted data to be used for the multipart content_type parameter when constructing a request, an attacker may be able to manipulate the request to send something other than what the developer intended.


Patch: https://github.com/aio-libs/aiohttp/commit/9a6ada97e2c6cf1ce31727c6c9fcea17c21f6f06

Affected versions: ["3.13.3", "3.13.2", "3.13.1", "3.13.0", "3.12.15", "3.12.14", "3.12.13", "3.12.12", "3.12.11", "3.12.10", "3.12.9", "3.12.8", "3.12.7", "3.12.6", "3.12.4", "3.12.3", "3.12.2", "3.12.1", "3.12.0", "3.12.0rc1", "3.12.0rc0", "3.12.1rc0", "3.12.7rc0", "3.12.0b3", "3.12.0b2", "3.12.0b1", "3.12.0b0", "3.11.18", "3.11.17", "3.11.16", "3.11.15", "3.11.14", "3.11.13", "3.11.12", "3.11.11", "3.11.10", "3.11.9", "3.11.8", "3.11.7", "3.11.6", "3.11.5", "3.11.4", "3.11.3", "3.11.2", "3.11.1", "3.11.0", "3.11.0rc2", "3.11.0rc1", "3.11.0rc0", "3.11.0b5", "3.11.0b4", "3.11.0b3", "3.11.0b2", "3.11.0b1", "3.11.0b0", "3.10.11", "3.10.10", "3.10.9", "3.10.8", "3.10.7", "3.10.6", "3.10.5", "3.10.4", "3.10.3", "3.10.2", "3.10.1", "3.10.0", "3.10.6rc2", "3.10.6rc1", "3.10.0rc0", "3.10.6rc0", "3.10.11rc0", "3.10.0b1", "3.9.5", "3.9.4", "3.9.3", "3.9.2", "3.9.1", "3.9.0", "3.9.0rc0", "3.9.4rc0", "3.9.0b1", "3.9.0b0", "3.8.6", "3.8.5", "3.8.4", "3.8.3", "3.8.2", "3.8.1", "3.8.0", "3.8.0b0", "3.8.0a7", "3.7.4", "3.7.4.post0", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.7.0b1", "3.7.0b0", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.6.1b4", "3.6.1b3", "3.6.0b0", "3.6.0a12", "3.6.0a11", "3.6.0a9", "3.6.0a8", "3.6.0a7", "3.6.0a6", "3.6.0a5", "3.6.0a4", "3.6.0a3", "3.6.0a2", "3.6.2a2", "3.6.0a1", "3.6.2a1", "3.6.0a0", "3.6.2a0", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.5.0b3", "3.5.0b2", "3.5.0b1", "3.5.0a1", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.4.0b2", "3.4.0b1", "3.4.0a3", "3.4.0a0", "3.3.2", "3.3.1", "3.3.0", "3.3.2a0", "3.3.0a0", "3.2.1", "3.2.0", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.9", "3.0.8", "3.0.7", "3.0.6", "3.0.5", "3.0.4", "3.0.3", "3.0.2", "3.0.1", "3.0.0", "3.0.0b4", "3.0.0b3", "3.0.0b2", "3.0.0b1", "3.0.0b0", "2.3.10", "2.3.9", "2.3.8", "2.3.7", "2.3.6", "2.3.5", "2.3.4", "2.3.3", "2.3.2", "2.3.1", "2.3.0", "2.3.2b3", "2.3.2b2", "2.3.0a4", "2.3.0a3", "2.3.0a2", "2.3.0a1", "2.3.1a1", "2.2.5", "2.2.4", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.0", "2.0.7", "2.0.6", "2.0.5", "2.0.4", "2.0.3", "2.0.2", "2.0.1", "2.0.0", "2.0.0rc1", "1.3.5", "1.3.4", "1.3.3", "1.3.2", "1.3.1", "1.3.0", "1.2.0", "1.1.6", "1.1.5", "1.1.4", "1.1.3", "1.1.2", "1.1.1", "1.1.0", "1.0.5", "1.0.3", "1.0.2", "1.0.1", "1.0.0", "0.22.5", "0.22.4", "0.22.3", "0.22.2", "0.22.1", "0.22.0", "0.22.0b6", "0.22.0b5", "0.22.0b4", "0.22.0b3", "0.22.0b2", "0.22.0b1", "0.22.0b0", "0.22.0a0", "0.21.6", "0.21.5", "0.21.4", "0.21.2", "0.21.1", "0.21.0", "0.20.2", "0.20.1", "0.20.0", "0.19.0", "0.18.4", "0.18.3", "0.18.2", "0.18.1", "0.18.0", "0.17.4", "0.17.3", "0.17.2", "0.17.1", "0.17.0", "0.16.6", "0.16.5", "0.16.4", "0.16.3", "0.16.2", "0.16.1", "0.16.0", "0.15.3", "0.15.2", "0.15.1", "0.15.0", "0.14.4", "0.14.3", "0.14.2", "0.14.1", "0.14.0", "0.13.1", "0.13.0", "0.12.0", "0.11.0", "0.10.2", "0.10.1", "0.10.0", "0.9.3", "0.9.2", "0.9.1", "0.9.0", "0.8.4", "0.8.3", "0.8.2", "0.8.1", "0.8.0", "0.7.3", "0.7.2", "0.7.1", "0.7.0", "0.6.5", "0.6.4", "0.6.3", "0.6.2", "0.6.1", "0.6.0", "0.5.0", "0.4.4", "0.4.3", "0.4.2", "0.4.1", "0.4", "0.3", "0.2", "0.1"]
Secure versions: [3.13.4, 3.13.5, 4.0.0a0, 4.0.0a1]
Recommendation: Update to version 3.13.5.

AIOHTTP has late size enforcement for non-file multipart fields causes memory DoS

Published date: 2026-04-01T21:47:07Z
CVE: CVE-2026-34517
Links:

Summary

For some multipart form fields, aiohttp read the entire field into memory before checking clientmaxsize.

Impact

If an application uses Request.post() an attacker can send a specially crafted multipart request to force significant temporary memory allocation even when the request is ultimately rejected.


Patch: https://github.com/aio-libs/aiohttp/commit/cbb774f38330563422ca0c413a71021d7b944145

Affected versions: ["3.13.3", "3.13.2", "3.13.1", "3.13.0", "3.12.15", "3.12.14", "3.12.13", "3.12.12", "3.12.11", "3.12.10", "3.12.9", "3.12.8", "3.12.7", "3.12.6", "3.12.4", "3.12.3", "3.12.2", "3.12.1", "3.12.0", "3.12.0rc1", "3.12.0rc0", "3.12.1rc0", "3.12.7rc0", "3.12.0b3", "3.12.0b2", "3.12.0b1", "3.12.0b0", "3.11.18", "3.11.17", "3.11.16", "3.11.15", "3.11.14", "3.11.13", "3.11.12", "3.11.11", "3.11.10", "3.11.9", "3.11.8", "3.11.7", "3.11.6", "3.11.5", "3.11.4", "3.11.3", "3.11.2", "3.11.1", "3.11.0", "3.11.0rc2", "3.11.0rc1", "3.11.0rc0", "3.11.0b5", "3.11.0b4", "3.11.0b3", "3.11.0b2", "3.11.0b1", "3.11.0b0", "3.10.11", "3.10.10", "3.10.9", "3.10.8", "3.10.7", "3.10.6", "3.10.5", "3.10.4", "3.10.3", "3.10.2", "3.10.1", "3.10.0", "3.10.6rc2", "3.10.6rc1", "3.10.0rc0", "3.10.6rc0", "3.10.11rc0", "3.10.0b1", "3.9.5", "3.9.4", "3.9.3", "3.9.2", "3.9.1", "3.9.0", "3.9.0rc0", "3.9.4rc0", "3.9.0b1", "3.9.0b0", "3.8.6", "3.8.5", "3.8.4", "3.8.3", "3.8.2", "3.8.1", "3.8.0", "3.8.0b0", "3.8.0a7", "3.7.4", "3.7.4.post0", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.7.0b1", "3.7.0b0", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.6.1b4", "3.6.1b3", "3.6.0b0", "3.6.0a12", "3.6.0a11", "3.6.0a9", "3.6.0a8", "3.6.0a7", "3.6.0a6", "3.6.0a5", "3.6.0a4", "3.6.0a3", "3.6.0a2", "3.6.2a2", "3.6.0a1", "3.6.2a1", "3.6.0a0", "3.6.2a0", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.5.0b3", "3.5.0b2", "3.5.0b1", "3.5.0a1", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.4.0b2", "3.4.0b1", "3.4.0a3", "3.4.0a0", "3.3.2", "3.3.1", "3.3.0", "3.3.2a0", "3.3.0a0", "3.2.1", "3.2.0", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.9", "3.0.8", "3.0.7", "3.0.6", "3.0.5", "3.0.4", "3.0.3", "3.0.2", "3.0.1", "3.0.0", "3.0.0b4", "3.0.0b3", "3.0.0b2", "3.0.0b1", "3.0.0b0", "2.3.10", "2.3.9", "2.3.8", "2.3.7", "2.3.6", "2.3.5", "2.3.4", "2.3.3", "2.3.2", "2.3.1", "2.3.0", "2.3.2b3", "2.3.2b2", "2.3.0a4", "2.3.0a3", "2.3.0a2", "2.3.0a1", "2.3.1a1", "2.2.5", "2.2.4", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.0", "2.0.7", "2.0.6", "2.0.5", "2.0.4", "2.0.3", "2.0.2", "2.0.1", "2.0.0", "2.0.0rc1", "1.3.5", "1.3.4", "1.3.3", "1.3.2", "1.3.1", "1.3.0", "1.2.0", "1.1.6", "1.1.5", "1.1.4", "1.1.3", "1.1.2", "1.1.1", "1.1.0", "1.0.5", "1.0.3", "1.0.2", "1.0.1", "1.0.0", "0.22.5", "0.22.4", "0.22.3", "0.22.2", "0.22.1", "0.22.0", "0.22.0b6", "0.22.0b5", "0.22.0b4", "0.22.0b3", "0.22.0b2", "0.22.0b1", "0.22.0b0", "0.22.0a0", "0.21.6", "0.21.5", "0.21.4", "0.21.2", "0.21.1", "0.21.0", "0.20.2", "0.20.1", "0.20.0", "0.19.0", "0.18.4", "0.18.3", "0.18.2", "0.18.1", "0.18.0", "0.17.4", "0.17.3", "0.17.2", "0.17.1", "0.17.0", "0.16.6", "0.16.5", "0.16.4", "0.16.3", "0.16.2", "0.16.1", "0.16.0", "0.15.3", "0.15.2", "0.15.1", "0.15.0", "0.14.4", "0.14.3", "0.14.2", "0.14.1", "0.14.0", "0.13.1", "0.13.0", "0.12.0", "0.11.0", "0.10.2", "0.10.1", "0.10.0", "0.9.3", "0.9.2", "0.9.1", "0.9.0", "0.8.4", "0.8.3", "0.8.2", "0.8.1", "0.8.0", "0.7.3", "0.7.2", "0.7.1", "0.7.0", "0.6.5", "0.6.4", "0.6.3", "0.6.2", "0.6.1", "0.6.0", "0.5.0", "0.4.4", "0.4.3", "0.4.2", "0.4.1", "0.4", "0.3", "0.2", "0.1"]
Secure versions: [3.13.4, 3.13.5, 4.0.0a0, 4.0.0a1]
Recommendation: Update to version 3.13.5.

aiohttp.web.Application vulnerable to HTTP request smuggling via llhttp HTTP request parser

Published date: 2023-07-20T14:52:00Z
CVE: CVE-2023-37276
Links:

Impact

aiohttp v3.8.4 and earlier are bundled with llhttp v6.0.6 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

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.

$ 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

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:

$ python -m pip uninstall --yes aiohttp
$ AIOHTTP_NO_EXTENSIONS=1 python -m pip install --no-binary=aiohttp --no-cache aiohttp

References

Affected versions: ["3.8.4", "3.8.3", "3.8.2", "3.8.1", "3.8.0", "3.8.0b0", "3.8.0a7", "3.7.4", "3.7.4.post0", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.7.0b1", "3.7.0b0", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.6.1b4", "3.6.1b3", "3.6.0b0", "3.6.0a12", "3.6.0a11", "3.6.0a9", "3.6.0a8", "3.6.0a7", "3.6.0a6", "3.6.0a5", "3.6.0a4", "3.6.0a3", "3.6.0a2", "3.6.2a2", "3.6.0a1", "3.6.2a1", "3.6.0a0", "3.6.2a0", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.5.0b3", "3.5.0b2", "3.5.0b1", "3.5.0a1", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.4.0b2", "3.4.0b1", "3.4.0a3", "3.4.0a0", "3.3.2", "3.3.1", "3.3.0", "3.3.2a0", "3.3.0a0", "3.2.1", "3.2.0", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.9", "3.0.8", "3.0.7", "3.0.6", "3.0.5", "3.0.4", "3.0.3", "3.0.2", "3.0.1", "3.0.0", "3.0.0b4", "3.0.0b3", "3.0.0b2", "3.0.0b1", "3.0.0b0", "2.3.10", "2.3.9", "2.3.8", "2.3.7", "2.3.6", "2.3.5", "2.3.4", "2.3.3", "2.3.2", "2.3.1", "2.3.0", "2.3.2b3", "2.3.2b2", "2.3.0a4", "2.3.0a3", "2.3.0a2", "2.3.0a1", "2.3.1a1", "2.2.5", "2.2.4", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.0", "2.0.7", "2.0.6", "2.0.5", "2.0.4", "2.0.3", "2.0.2", "2.0.1", "2.0.0", "2.0.0rc1", "1.3.5", "1.3.4", "1.3.3", "1.3.2", "1.3.1", "1.3.0", "1.2.0", "1.1.6", "1.1.5", "1.1.4", "1.1.3", "1.1.2", "1.1.1", "1.1.0", "1.0.5", "1.0.3", "1.0.2", "1.0.1", "1.0.0", "0.22.5", "0.22.4", "0.22.3", "0.22.2", "0.22.1", "0.22.0", "0.22.0b6", "0.22.0b5", "0.22.0b4", "0.22.0b3", "0.22.0b2", "0.22.0b1", "0.22.0b0", "0.22.0a0", "0.21.6", "0.21.5", "0.21.4", "0.21.2", "0.21.1", "0.21.0", "0.20.2", "0.20.1", "0.20.0", "0.19.0", "0.18.4", "0.18.3", "0.18.2", "0.18.1", "0.18.0", "0.17.4", "0.17.3", "0.17.2", "0.17.1", "0.17.0", "0.16.6", "0.16.5", "0.16.4", "0.16.3", "0.16.2", "0.16.1", "0.16.0", "0.15.3", "0.15.2", "0.15.1", "0.15.0", "0.14.4", "0.14.3", "0.14.2", "0.14.1", "0.14.0", "0.13.1", "0.13.0", "0.12.0", "0.11.0", "0.10.2", "0.10.1", "0.10.0", "0.9.3", "0.9.2", "0.9.1", "0.9.0", "0.8.4", "0.8.3", "0.8.2", "0.8.1", "0.8.0", "0.7.3", "0.7.2", "0.7.1", "0.7.0", "0.6.5", "0.6.4", "0.6.3", "0.6.2", "0.6.1", "0.6.0", "0.5.0", "0.4.4", "0.4.3", "0.4.2", "0.4.1", "0.4", "0.3", "0.2", "0.1"]
Secure versions: [3.13.4, 3.13.5, 4.0.0a0, 4.0.0a1]
Recommendation: Update to version 3.13.5.

AIOHTTP vulnerable to brute-force leak of internal static file path components

Published date: 2026-01-05T23:09:51Z
CVE: CVE-2025-69226
Links:

Summary

Path normalization for static files prevents path traversal, but opens up the ability for an attacker to ascertain the existence of absolute path components.

Impact

If an application uses web.static() (not recommended for production deployments), it may be possible for an attacker to ascertain the existence of path components.


Patch: https://github.com/aio-libs/aiohttp/commit/f2a86fd5ac0383000d1715afddfa704413f0711e

Affected versions: ["3.13.2", "3.13.1", "3.13.0", "3.12.15", "3.12.14", "3.12.13", "3.12.12", "3.12.11", "3.12.10", "3.12.9", "3.12.8", "3.12.7", "3.12.6", "3.12.4", "3.12.3", "3.12.2", "3.12.1", "3.12.0", "3.12.0rc1", "3.12.0rc0", "3.12.1rc0", "3.12.7rc0", "3.12.0b3", "3.12.0b2", "3.12.0b1", "3.12.0b0", "3.11.18", "3.11.17", "3.11.16", "3.11.15", "3.11.14", "3.11.13", "3.11.12", "3.11.11", "3.11.10", "3.11.9", "3.11.8", "3.11.7", "3.11.6", "3.11.5", "3.11.4", "3.11.3", "3.11.2", "3.11.1", "3.11.0", "3.11.0rc2", "3.11.0rc1", "3.11.0rc0", "3.11.0b5", "3.11.0b4", "3.11.0b3", "3.11.0b2", "3.11.0b1", "3.11.0b0", "3.10.11", "3.10.10", "3.10.9", "3.10.8", "3.10.7", "3.10.6", "3.10.5", "3.10.4", "3.10.3", "3.10.2", "3.10.1", "3.10.0", "3.10.6rc2", "3.10.6rc1", "3.10.0rc0", "3.10.6rc0", "3.10.11rc0", "3.10.0b1", "3.9.5", "3.9.4", "3.9.3", "3.9.2", "3.9.1", "3.9.0", "3.9.0rc0", "3.9.4rc0", "3.9.0b1", "3.9.0b0", "3.8.6", "3.8.5", "3.8.4", "3.8.3", "3.8.2", "3.8.1", "3.8.0", "3.8.0b0", "3.8.0a7", "3.7.4", "3.7.4.post0", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.7.0b1", "3.7.0b0", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.6.1b4", "3.6.1b3", "3.6.0b0", "3.6.0a12", "3.6.0a11", "3.6.0a9", "3.6.0a8", "3.6.0a7", "3.6.0a6", "3.6.0a5", "3.6.0a4", "3.6.0a3", "3.6.0a2", "3.6.2a2", "3.6.0a1", "3.6.2a1", "3.6.0a0", "3.6.2a0", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.5.0b3", "3.5.0b2", "3.5.0b1", "3.5.0a1", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.4.0b2", "3.4.0b1", "3.4.0a3", "3.4.0a0", "3.3.2", "3.3.1", "3.3.0", "3.3.2a0", "3.3.0a0", "3.2.1", "3.2.0", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.9", "3.0.8", "3.0.7", "3.0.6", "3.0.5", "3.0.4", "3.0.3", "3.0.2", "3.0.1", "3.0.0", "3.0.0b4", "3.0.0b3", "3.0.0b2", "3.0.0b1", "3.0.0b0", "2.3.10", "2.3.9", "2.3.8", "2.3.7", "2.3.6", "2.3.5", "2.3.4", "2.3.3", "2.3.2", "2.3.1", "2.3.0", "2.3.2b3", "2.3.2b2", "2.3.0a4", "2.3.0a3", "2.3.0a2", "2.3.0a1", "2.3.1a1", "2.2.5", "2.2.4", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.0", "2.0.7", "2.0.6", "2.0.5", "2.0.4", "2.0.3", "2.0.2", "2.0.1", "2.0.0", "2.0.0rc1", "1.3.5", "1.3.4", "1.3.3", "1.3.2", "1.3.1", "1.3.0", "1.2.0", "1.1.6", "1.1.5", "1.1.4", "1.1.3", "1.1.2", "1.1.1", "1.1.0", "1.0.5", "1.0.3", "1.0.2", "1.0.1", "1.0.0", "0.22.5", "0.22.4", "0.22.3", "0.22.2", "0.22.1", "0.22.0", "0.22.0b6", "0.22.0b5", "0.22.0b4", "0.22.0b3", "0.22.0b2", "0.22.0b1", "0.22.0b0", "0.22.0a0", "0.21.6", "0.21.5", "0.21.4", "0.21.2", "0.21.1", "0.21.0", "0.20.2", "0.20.1", "0.20.0", "0.19.0", "0.18.4", "0.18.3", "0.18.2", "0.18.1", "0.18.0", "0.17.4", "0.17.3", "0.17.2", "0.17.1", "0.17.0", "0.16.6", "0.16.5", "0.16.4", "0.16.3", "0.16.2", "0.16.1", "0.16.0", "0.15.3", "0.15.2", "0.15.1", "0.15.0", "0.14.4", "0.14.3", "0.14.2", "0.14.1", "0.14.0", "0.13.1", "0.13.0", "0.12.0", "0.11.0", "0.10.2", "0.10.1", "0.10.0", "0.9.3", "0.9.2", "0.9.1", "0.9.0", "0.8.4", "0.8.3", "0.8.2", "0.8.1", "0.8.0", "0.7.3", "0.7.2", "0.7.1", "0.7.0", "0.6.5", "0.6.4", "0.6.3", "0.6.2", "0.6.1", "0.6.0", "0.5.0", "0.4.4", "0.4.3", "0.4.2", "0.4.1", "0.4", "0.3", "0.2", "0.1"]
Secure versions: [3.13.4, 3.13.5, 4.0.0a0, 4.0.0a1]
Recommendation: Update to version 3.13.5.

aiohttp is vulnerable to directory traversal

Published date: 2024-01-29T22:31:03Z
CVE: CVE-2024-23334
Links:

Summary

Improperly configuring static resource resolution in aiohttp when used as a web server can result in the unauthorized reading of arbitrary files on the system.

Details

When using aiohttp as a web server and configuring static routes, it is necessary to specify the root path for static files. Additionally, the option 'followsymlinks' can be used to determine whether to follow symbolic links outside the static root directory. When 'followsymlinks' is set to True, there is no validation to check if a given file path is within the root directory.This can lead to directory traversal vulnerabilities, resulting in unauthorized access to arbitrary files on the system, even when symlinks are not present.

i.e. An application is only vulnerable with setup code like: app.router.add_routes([ web.static("/static", "static/", follow_symlinks=True), # Remove follow_symlinks to avoid the vulnerability ])

Impact

This is a directory traversal vulnerability with CWE ID 22. When using aiohttp as a web server and enabling static resource resolution with follow_symlinks set to True, it can lead to this vulnerability. This vulnerability has been present since the introduction of the follow_symlinks parameter.

Workaround

Even if upgrading to a patched version of aiohttp, we recommend following these steps regardless.

If using follow_symlinks=True outside of a restricted local development environment, disable the option immediately. This option is NOT needed to follow symlinks which point to a location within the static root directory, it is only intended to allow a symlink to break out of the static directory. Even with this CVE fixed, there is still a substantial risk of misconfiguration when using this option on a server that accepts requests from remote users.

Additionally, aiohttp has always recommended using a reverse proxy server (such as nginx) to handle static resources and not to use these static resources in aiohttp for production environments. Doing so also protects against this vulnerability, and is why we expect the number of affected users to be very low.


Patch: https://github.com/aio-libs/aiohttp/pull/8079/files

Affected versions: ["3.9.1", "3.9.0", "3.9.0rc0", "3.9.4rc0", "3.9.0b1", "3.9.0b0", "3.8.6", "3.8.5", "3.8.4", "3.8.3", "3.8.2", "3.8.1", "3.8.0", "3.8.0b0", "3.8.0a7", "3.7.4", "3.7.4.post0", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.7.0b1", "3.7.0b0", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.6.1b4", "3.6.1b3", "3.6.0b0", "3.6.0a12", "3.6.0a11", "3.6.0a9", "3.6.0a8", "3.6.0a7", "3.6.0a6", "3.6.0a5", "3.6.0a4", "3.6.0a3", "3.6.0a2", "3.6.2a2", "3.6.0a1", "3.6.2a1", "3.6.0a0", "3.6.2a0", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.5.0b3", "3.5.0b2", "3.5.0b1", "3.5.0a1", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.4.0b2", "3.4.0b1", "3.4.0a3", "3.4.0a0", "3.3.2", "3.3.1", "3.3.0", "3.3.2a0", "3.3.0a0", "3.2.1", "3.2.0", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.9", "3.0.8", "3.0.7", "3.0.6", "3.0.5", "3.0.4", "3.0.3", "3.0.2", "3.0.1", "3.0.0", "3.0.0b4", "3.0.0b3", "3.0.0b2", "3.0.0b1", "3.0.0b0", "2.3.10", "2.3.9", "2.3.8", "2.3.7", "2.3.6", "2.3.5", "2.3.4", "2.3.3", "2.3.2", "2.3.1", "2.3.0", "2.3.2b3", "2.3.2b2", "2.3.0a4", "2.3.0a3", "2.3.0a2", "2.3.0a1", "2.3.1a1", "2.2.5", "2.2.4", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.0", "2.0.7", "2.0.6", "2.0.5", "2.0.4", "2.0.3", "2.0.2", "2.0.1", "2.0.0", "2.0.0rc1", "1.3.5", "1.3.4", "1.3.3", "1.3.2", "1.3.1", "1.3.0", "1.2.0", "1.1.6", "1.1.5", "1.1.4", "1.1.3", "1.1.2", "1.1.1", "1.1.0", "1.0.5"]
Secure versions: [3.13.4, 3.13.5, 4.0.0a0, 4.0.0a1]
Recommendation: Update to version 3.13.5.

aiohttp vulnerable to Denial of Service when trying to parse malformed POST requests

Published date: 2024-05-03T17:29:54Z
CVE: CVE-2024-30251
Links:

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 --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

Affected versions: ["3.9.3", "3.9.2", "3.9.1", "3.9.0", "3.9.0rc0", "3.9.4rc0", "3.9.0b1", "3.9.0b0", "3.8.6", "3.8.5", "3.8.4", "3.8.3", "3.8.2", "3.8.1", "3.8.0", "3.8.0b0", "3.8.0a7", "3.7.4", "3.7.4.post0", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.7.0b1", "3.7.0b0", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.6.1b4", "3.6.1b3", "3.6.0b0", "3.6.0a12", "3.6.0a11", "3.6.0a9", "3.6.0a8", "3.6.0a7", "3.6.0a6", "3.6.0a5", "3.6.0a4", "3.6.0a3", "3.6.0a2", "3.6.2a2", "3.6.0a1", "3.6.2a1", "3.6.0a0", "3.6.2a0", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.5.0b3", "3.5.0b2", "3.5.0b1", "3.5.0a1", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.4.0b2", "3.4.0b1", "3.4.0a3", "3.4.0a0", "3.3.2", "3.3.1", "3.3.0", "3.3.2a0", "3.3.0a0", "3.2.1", "3.2.0", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.9", "3.0.8", "3.0.7", "3.0.6", "3.0.5", "3.0.4", "3.0.3", "3.0.2", "3.0.1", "3.0.0", "3.0.0b4", "3.0.0b3", "3.0.0b2", "3.0.0b1", "3.0.0b0", "2.3.10", "2.3.9", "2.3.8", "2.3.7", "2.3.6", "2.3.5", "2.3.4", "2.3.3", "2.3.2", "2.3.1", "2.3.0", "2.3.2b3", "2.3.2b2", "2.3.0a4", "2.3.0a3", "2.3.0a2", "2.3.0a1", "2.3.1a1", "2.2.5", "2.2.4", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.0", "2.0.7", "2.0.6", "2.0.5", "2.0.4", "2.0.3", "2.0.2", "2.0.1", "2.0.0", "2.0.0rc1", "1.3.5", "1.3.4", "1.3.3", "1.3.2", "1.3.1", "1.3.0", "1.2.0", "1.1.6", "1.1.5", "1.1.4", "1.1.3", "1.1.2", "1.1.1", "1.1.0", "1.0.5", "1.0.3", "1.0.2", "1.0.1", "1.0.0", "0.22.5", "0.22.4", "0.22.3", "0.22.2", "0.22.1", "0.22.0", "0.22.0b6", "0.22.0b5", "0.22.0b4", "0.22.0b3", "0.22.0b2", "0.22.0b1", "0.22.0b0", "0.22.0a0", "0.21.6", "0.21.5", "0.21.4", "0.21.2", "0.21.1", "0.21.0", "0.20.2", "0.20.1", "0.20.0", "0.19.0", "0.18.4", "0.18.3", "0.18.2", "0.18.1", "0.18.0", "0.17.4", "0.17.3", "0.17.2", "0.17.1", "0.17.0", "0.16.6", "0.16.5", "0.16.4", "0.16.3", "0.16.2", "0.16.1", "0.16.0", "0.15.3", "0.15.2", "0.15.1", "0.15.0", "0.14.4", "0.14.3", "0.14.2", "0.14.1", "0.14.0", "0.13.1", "0.13.0", "0.12.0", "0.11.0", "0.10.2", "0.10.1", "0.10.0", "0.9.3", "0.9.2", "0.9.1", "0.9.0", "0.8.4", "0.8.3", "0.8.2", "0.8.1", "0.8.0", "0.7.3", "0.7.2", "0.7.1", "0.7.0", "0.6.5", "0.6.4", "0.6.3", "0.6.2", "0.6.1", "0.6.0", "0.5.0", "0.4.4", "0.4.3", "0.4.2", "0.4.1", "0.4", "0.3", "0.2", "0.1"]
Secure versions: [3.13.4, 3.13.5, 4.0.0a0, 4.0.0a1]
Recommendation: Update to version 3.13.5.

AIOHTTP's C parser (llhttp) accepts null bytes and control characters in response header values - header injection/security bypass

Published date: 2026-04-01T21:49:06Z
CVE: CVE-2026-34520
Links:

Summary

The C parser (the default for most installs) accepted null bytes and control characters is response headers.

Impact

An attacker could send header values that are interpreted differently than expected due to the presence of control characters. For example, request.url.origin() may return a different value than the raw Host header, or what a reverse proxy interpreted it as., potentially resulting in some kind of security bypass.


Patch: https://github.com/aio-libs/aiohttp/commit/9370b9714a7a56003cacd31a9b4ae16eab109ba4

Affected versions: ["3.13.3", "3.13.2", "3.13.1", "3.13.0", "3.12.15", "3.12.14", "3.12.13", "3.12.12", "3.12.11", "3.12.10", "3.12.9", "3.12.8", "3.12.7", "3.12.6", "3.12.4", "3.12.3", "3.12.2", "3.12.1", "3.12.0", "3.12.0rc1", "3.12.0rc0", "3.12.1rc0", "3.12.7rc0", "3.12.0b3", "3.12.0b2", "3.12.0b1", "3.12.0b0", "3.11.18", "3.11.17", "3.11.16", "3.11.15", "3.11.14", "3.11.13", "3.11.12", "3.11.11", "3.11.10", "3.11.9", "3.11.8", "3.11.7", "3.11.6", "3.11.5", "3.11.4", "3.11.3", "3.11.2", "3.11.1", "3.11.0", "3.11.0rc2", "3.11.0rc1", "3.11.0rc0", "3.11.0b5", "3.11.0b4", "3.11.0b3", "3.11.0b2", "3.11.0b1", "3.11.0b0", "3.10.11", "3.10.10", "3.10.9", "3.10.8", "3.10.7", "3.10.6", "3.10.5", "3.10.4", "3.10.3", "3.10.2", "3.10.1", "3.10.0", "3.10.6rc2", "3.10.6rc1", "3.10.0rc0", "3.10.6rc0", "3.10.11rc0", "3.10.0b1", "3.9.5", "3.9.4", "3.9.3", "3.9.2", "3.9.1", "3.9.0", "3.9.0rc0", "3.9.4rc0", "3.9.0b1", "3.9.0b0", "3.8.6", "3.8.5", "3.8.4", "3.8.3", "3.8.2", "3.8.1", "3.8.0", "3.8.0b0", "3.8.0a7", "3.7.4", "3.7.4.post0", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.7.0b1", "3.7.0b0", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.6.1b4", "3.6.1b3", "3.6.0b0", "3.6.0a12", "3.6.0a11", "3.6.0a9", "3.6.0a8", "3.6.0a7", "3.6.0a6", "3.6.0a5", "3.6.0a4", "3.6.0a3", "3.6.0a2", "3.6.2a2", "3.6.0a1", "3.6.2a1", "3.6.0a0", "3.6.2a0", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.5.0b3", "3.5.0b2", "3.5.0b1", "3.5.0a1", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.4.0b2", "3.4.0b1", "3.4.0a3", "3.4.0a0", "3.3.2", "3.3.1", "3.3.0", "3.3.2a0", "3.3.0a0", "3.2.1", "3.2.0", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.9", "3.0.8", "3.0.7", "3.0.6", "3.0.5", "3.0.4", "3.0.3", "3.0.2", "3.0.1", "3.0.0", "3.0.0b4", "3.0.0b3", "3.0.0b2", "3.0.0b1", "3.0.0b0", "2.3.10", "2.3.9", "2.3.8", "2.3.7", "2.3.6", "2.3.5", "2.3.4", "2.3.3", "2.3.2", "2.3.1", "2.3.0", "2.3.2b3", "2.3.2b2", "2.3.0a4", "2.3.0a3", "2.3.0a2", "2.3.0a1", "2.3.1a1", "2.2.5", "2.2.4", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.0", "2.0.7", "2.0.6", "2.0.5", "2.0.4", "2.0.3", "2.0.2", "2.0.1", "2.0.0", "2.0.0rc1", "1.3.5", "1.3.4", "1.3.3", "1.3.2", "1.3.1", "1.3.0", "1.2.0", "1.1.6", "1.1.5", "1.1.4", "1.1.3", "1.1.2", "1.1.1", "1.1.0", "1.0.5", "1.0.3", "1.0.2", "1.0.1", "1.0.0", "0.22.5", "0.22.4", "0.22.3", "0.22.2", "0.22.1", "0.22.0", "0.22.0b6", "0.22.0b5", "0.22.0b4", "0.22.0b3", "0.22.0b2", "0.22.0b1", "0.22.0b0", "0.22.0a0", "0.21.6", "0.21.5", "0.21.4", "0.21.2", "0.21.1", "0.21.0", "0.20.2", "0.20.1", "0.20.0", "0.19.0", "0.18.4", "0.18.3", "0.18.2", "0.18.1", "0.18.0", "0.17.4", "0.17.3", "0.17.2", "0.17.1", "0.17.0", "0.16.6", "0.16.5", "0.16.4", "0.16.3", "0.16.2", "0.16.1", "0.16.0", "0.15.3", "0.15.2", "0.15.1", "0.15.0", "0.14.4", "0.14.3", "0.14.2", "0.14.1", "0.14.0", "0.13.1", "0.13.0", "0.12.0", "0.11.0", "0.10.2", "0.10.1", "0.10.0", "0.9.3", "0.9.2", "0.9.1", "0.9.0", "0.8.4", "0.8.3", "0.8.2", "0.8.1", "0.8.0", "0.7.3", "0.7.2", "0.7.1", "0.7.0", "0.6.5", "0.6.4", "0.6.3", "0.6.2", "0.6.1", "0.6.0", "0.5.0", "0.4.4", "0.4.3", "0.4.2", "0.4.1", "0.4", "0.3", "0.2", "0.1"]
Secure versions: [3.13.4, 3.13.5, 4.0.0a0, 4.0.0a1]
Recommendation: Update to version 3.13.5.

AIOHTTP's unicode processing of header values could cause parsing discrepancies

Published date: 2026-01-05T22:58:57Z
CVE: CVE-2025-69224
Links:

Summary

The Python HTTP parser may allow a request smuggling attack with the presence of non-ASCII characters.

Impact

If a pure Python version of aiohttp is installed (i.e. without the usual C extensions) or AIOHTTPNOEXTENSIONS 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/32677f2adfd907420c078dda6b79225c6f4ebce0

Affected versions: ["3.13.2", "3.13.1", "3.13.0", "3.12.15", "3.12.14", "3.12.13", "3.12.12", "3.12.11", "3.12.10", "3.12.9", "3.12.8", "3.12.7", "3.12.6", "3.12.4", "3.12.3", "3.12.2", "3.12.1", "3.12.0", "3.12.0rc1", "3.12.0rc0", "3.12.1rc0", "3.12.7rc0", "3.12.0b3", "3.12.0b2", "3.12.0b1", "3.12.0b0", "3.11.18", "3.11.17", "3.11.16", "3.11.15", "3.11.14", "3.11.13", "3.11.12", "3.11.11", "3.11.10", "3.11.9", "3.11.8", "3.11.7", "3.11.6", "3.11.5", "3.11.4", "3.11.3", "3.11.2", "3.11.1", "3.11.0", "3.11.0rc2", "3.11.0rc1", "3.11.0rc0", "3.11.0b5", "3.11.0b4", "3.11.0b3", "3.11.0b2", "3.11.0b1", "3.11.0b0", "3.10.11", "3.10.10", "3.10.9", "3.10.8", "3.10.7", "3.10.6", "3.10.5", "3.10.4", "3.10.3", "3.10.2", "3.10.1", "3.10.0", "3.10.6rc2", "3.10.6rc1", "3.10.0rc0", "3.10.6rc0", "3.10.11rc0", "3.10.0b1", "3.9.5", "3.9.4", "3.9.3", "3.9.2", "3.9.1", "3.9.0", "3.9.0rc0", "3.9.4rc0", "3.9.0b1", "3.9.0b0", "3.8.6", "3.8.5", "3.8.4", "3.8.3", "3.8.2", "3.8.1", "3.8.0", "3.8.0b0", "3.8.0a7", "3.7.4", "3.7.4.post0", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.7.0b1", "3.7.0b0", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.6.1b4", "3.6.1b3", "3.6.0b0", "3.6.0a12", "3.6.0a11", "3.6.0a9", "3.6.0a8", "3.6.0a7", "3.6.0a6", "3.6.0a5", "3.6.0a4", "3.6.0a3", "3.6.0a2", "3.6.2a2", "3.6.0a1", "3.6.2a1", "3.6.0a0", "3.6.2a0", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.5.0b3", "3.5.0b2", "3.5.0b1", "3.5.0a1", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.4.0b2", "3.4.0b1", "3.4.0a3", "3.4.0a0", "3.3.2", "3.3.1", "3.3.0", "3.3.2a0", "3.3.0a0", "3.2.1", "3.2.0", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.9", "3.0.8", "3.0.7", "3.0.6", "3.0.5", "3.0.4", "3.0.3", "3.0.2", "3.0.1", "3.0.0", "3.0.0b4", "3.0.0b3", "3.0.0b2", "3.0.0b1", "3.0.0b0", "2.3.10", "2.3.9", "2.3.8", "2.3.7", "2.3.6", "2.3.5", "2.3.4", "2.3.3", "2.3.2", "2.3.1", "2.3.0", "2.3.2b3", "2.3.2b2", "2.3.0a4", "2.3.0a3", "2.3.0a2", "2.3.0a1", "2.3.1a1", "2.2.5", "2.2.4", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.0", "2.0.7", "2.0.6", "2.0.5", "2.0.4", "2.0.3", "2.0.2", "2.0.1", "2.0.0", "2.0.0rc1", "1.3.5", "1.3.4", "1.3.3", "1.3.2", "1.3.1", "1.3.0", "1.2.0", "1.1.6", "1.1.5", "1.1.4", "1.1.3", "1.1.2", "1.1.1", "1.1.0", "1.0.5", "1.0.3", "1.0.2", "1.0.1", "1.0.0", "0.22.5", "0.22.4", "0.22.3", "0.22.2", "0.22.1", "0.22.0", "0.22.0b6", "0.22.0b5", "0.22.0b4", "0.22.0b3", "0.22.0b2", "0.22.0b1", "0.22.0b0", "0.22.0a0", "0.21.6", "0.21.5", "0.21.4", "0.21.2", "0.21.1", "0.21.0", "0.20.2", "0.20.1", "0.20.0", "0.19.0", "0.18.4", "0.18.3", "0.18.2", "0.18.1", "0.18.0", "0.17.4", "0.17.3", "0.17.2", "0.17.1", "0.17.0", "0.16.6", "0.16.5", "0.16.4", "0.16.3", "0.16.2", "0.16.1", "0.16.0", "0.15.3", "0.15.2", "0.15.1", "0.15.0", "0.14.4", "0.14.3", "0.14.2", "0.14.1", "0.14.0", "0.13.1", "0.13.0", "0.12.0", "0.11.0", "0.10.2", "0.10.1", "0.10.0", "0.9.3", "0.9.2", "0.9.1", "0.9.0", "0.8.4", "0.8.3", "0.8.2", "0.8.1", "0.8.0", "0.7.3", "0.7.2", "0.7.1", "0.7.0", "0.6.5", "0.6.4", "0.6.3", "0.6.2", "0.6.1", "0.6.0", "0.5.0", "0.4.4", "0.4.3", "0.4.2", "0.4.1", "0.4", "0.3", "0.2", "0.1"]
Secure versions: [3.13.4, 3.13.5, 4.0.0a0, 4.0.0a1]
Recommendation: Update to version 3.13.5.

AIOHTTP vulnerable to denial of service through large payloads

Published date: 2026-01-05T23:13:14Z
CVE: CVE-2025-69228
Links:

Summary

A request can be crafted in such a way that an aiohttp server's memory fills up uncontrollably during processing.

Impact

If an application includes a handler that uses the Request.post() method, an attacker may be able to freeze the server by exhausting the memory.


Patch: https://github.com/aio-libs/aiohttp/commit/b7dbd35375aedbcd712cbae8ad513d56d11cce60

Affected versions: ["3.13.2", "3.13.1", "3.13.0", "3.12.15", "3.12.14", "3.12.13", "3.12.12", "3.12.11", "3.12.10", "3.12.9", "3.12.8", "3.12.7", "3.12.6", "3.12.4", "3.12.3", "3.12.2", "3.12.1", "3.12.0", "3.12.0rc1", "3.12.0rc0", "3.12.1rc0", "3.12.7rc0", "3.12.0b3", "3.12.0b2", "3.12.0b1", "3.12.0b0", "3.11.18", "3.11.17", "3.11.16", "3.11.15", "3.11.14", "3.11.13", "3.11.12", "3.11.11", "3.11.10", "3.11.9", "3.11.8", "3.11.7", "3.11.6", "3.11.5", "3.11.4", "3.11.3", "3.11.2", "3.11.1", "3.11.0", "3.11.0rc2", "3.11.0rc1", "3.11.0rc0", "3.11.0b5", "3.11.0b4", "3.11.0b3", "3.11.0b2", "3.11.0b1", "3.11.0b0", "3.10.11", "3.10.10", "3.10.9", "3.10.8", "3.10.7", "3.10.6", "3.10.5", "3.10.4", "3.10.3", "3.10.2", "3.10.1", "3.10.0", "3.10.6rc2", "3.10.6rc1", "3.10.0rc0", "3.10.6rc0", "3.10.11rc0", "3.10.0b1", "3.9.5", "3.9.4", "3.9.3", "3.9.2", "3.9.1", "3.9.0", "3.9.0rc0", "3.9.4rc0", "3.9.0b1", "3.9.0b0", "3.8.6", "3.8.5", "3.8.4", "3.8.3", "3.8.2", "3.8.1", "3.8.0", "3.8.0b0", "3.8.0a7", "3.7.4", "3.7.4.post0", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.7.0b1", "3.7.0b0", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.6.1b4", "3.6.1b3", "3.6.0b0", "3.6.0a12", "3.6.0a11", "3.6.0a9", "3.6.0a8", "3.6.0a7", "3.6.0a6", "3.6.0a5", "3.6.0a4", "3.6.0a3", "3.6.0a2", "3.6.2a2", "3.6.0a1", "3.6.2a1", "3.6.0a0", "3.6.2a0", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.5.0b3", "3.5.0b2", "3.5.0b1", "3.5.0a1", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.4.0b2", "3.4.0b1", "3.4.0a3", "3.4.0a0", "3.3.2", "3.3.1", "3.3.0", "3.3.2a0", "3.3.0a0", "3.2.1", "3.2.0", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.9", "3.0.8", "3.0.7", "3.0.6", "3.0.5", "3.0.4", "3.0.3", "3.0.2", "3.0.1", "3.0.0", "3.0.0b4", "3.0.0b3", "3.0.0b2", "3.0.0b1", "3.0.0b0", "2.3.10", "2.3.9", "2.3.8", "2.3.7", "2.3.6", "2.3.5", "2.3.4", "2.3.3", "2.3.2", "2.3.1", "2.3.0", "2.3.2b3", "2.3.2b2", "2.3.0a4", "2.3.0a3", "2.3.0a2", "2.3.0a1", "2.3.1a1", "2.2.5", "2.2.4", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.0", "2.0.7", "2.0.6", "2.0.5", "2.0.4", "2.0.3", "2.0.2", "2.0.1", "2.0.0", "2.0.0rc1", "1.3.5", "1.3.4", "1.3.3", "1.3.2", "1.3.1", "1.3.0", "1.2.0", "1.1.6", "1.1.5", "1.1.4", "1.1.3", "1.1.2", "1.1.1", "1.1.0", "1.0.5", "1.0.3", "1.0.2", "1.0.1", "1.0.0", "0.22.5", "0.22.4", "0.22.3", "0.22.2", "0.22.1", "0.22.0", "0.22.0b6", "0.22.0b5", "0.22.0b4", "0.22.0b3", "0.22.0b2", "0.22.0b1", "0.22.0b0", "0.22.0a0", "0.21.6", "0.21.5", "0.21.4", "0.21.2", "0.21.1", "0.21.0", "0.20.2", "0.20.1", "0.20.0", "0.19.0", "0.18.4", "0.18.3", "0.18.2", "0.18.1", "0.18.0", "0.17.4", "0.17.3", "0.17.2", "0.17.1", "0.17.0", "0.16.6", "0.16.5", "0.16.4", "0.16.3", "0.16.2", "0.16.1", "0.16.0", "0.15.3", "0.15.2", "0.15.1", "0.15.0", "0.14.4", "0.14.3", "0.14.2", "0.14.1", "0.14.0", "0.13.1", "0.13.0", "0.12.0", "0.11.0", "0.10.2", "0.10.1", "0.10.0", "0.9.3", "0.9.2", "0.9.1", "0.9.0", "0.8.4", "0.8.3", "0.8.2", "0.8.1", "0.8.0", "0.7.3", "0.7.2", "0.7.1", "0.7.0", "0.6.5", "0.6.4", "0.6.3", "0.6.2", "0.6.1", "0.6.0", "0.5.0", "0.4.4", "0.4.3", "0.4.2", "0.4.1", "0.4", "0.3", "0.2", "0.1"]
Secure versions: [3.13.4, 3.13.5, 4.0.0a0, 4.0.0a1]
Recommendation: Update to version 3.13.5.

AIOHTTP's HTTP Parser auto_decompress feature is vulnerable to zip bomb

Published date: 2026-01-05T22:58:41Z
CVE: CVE-2025-69223
Links:

Summary

A zip bomb can be used to execute a DoS against the aiohttp server.

Impact

An attacker may be able to send a compressed request that when decompressed by aiohttp could exhaust the host's memory.


Patch: https://github.com/aio-libs/aiohttp/commit/2b920c39002cee0ec5b402581779bbaaf7c9138a

Affected versions: ["3.13.2", "3.13.1", "3.13.0", "3.12.15", "3.12.14", "3.12.13", "3.12.12", "3.12.11", "3.12.10", "3.12.9", "3.12.8", "3.12.7", "3.12.6", "3.12.4", "3.12.3", "3.12.2", "3.12.1", "3.12.0", "3.12.0rc1", "3.12.0rc0", "3.12.1rc0", "3.12.7rc0", "3.12.0b3", "3.12.0b2", "3.12.0b1", "3.12.0b0", "3.11.18", "3.11.17", "3.11.16", "3.11.15", "3.11.14", "3.11.13", "3.11.12", "3.11.11", "3.11.10", "3.11.9", "3.11.8", "3.11.7", "3.11.6", "3.11.5", "3.11.4", "3.11.3", "3.11.2", "3.11.1", "3.11.0", "3.11.0rc2", "3.11.0rc1", "3.11.0rc0", "3.11.0b5", "3.11.0b4", "3.11.0b3", "3.11.0b2", "3.11.0b1", "3.11.0b0", "3.10.11", "3.10.10", "3.10.9", "3.10.8", "3.10.7", "3.10.6", "3.10.5", "3.10.4", "3.10.3", "3.10.2", "3.10.1", "3.10.0", "3.10.6rc2", "3.10.6rc1", "3.10.0rc0", "3.10.6rc0", "3.10.11rc0", "3.10.0b1", "3.9.5", "3.9.4", "3.9.3", "3.9.2", "3.9.1", "3.9.0", "3.9.0rc0", "3.9.4rc0", "3.9.0b1", "3.9.0b0", "3.8.6", "3.8.5", "3.8.4", "3.8.3", "3.8.2", "3.8.1", "3.8.0", "3.8.0b0", "3.8.0a7", "3.7.4", "3.7.4.post0", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.7.0b1", "3.7.0b0", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.6.1b4", "3.6.1b3", "3.6.0b0", "3.6.0a12", "3.6.0a11", "3.6.0a9", "3.6.0a8", "3.6.0a7", "3.6.0a6", "3.6.0a5", "3.6.0a4", "3.6.0a3", "3.6.0a2", "3.6.2a2", "3.6.0a1", "3.6.2a1", "3.6.0a0", "3.6.2a0", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.5.0b3", "3.5.0b2", "3.5.0b1", "3.5.0a1", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.4.0b2", "3.4.0b1", "3.4.0a3", "3.4.0a0", "3.3.2", "3.3.1", "3.3.0", "3.3.2a0", "3.3.0a0", "3.2.1", "3.2.0", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.9", "3.0.8", "3.0.7", "3.0.6", "3.0.5", "3.0.4", "3.0.3", "3.0.2", "3.0.1", "3.0.0", "3.0.0b4", "3.0.0b3", "3.0.0b2", "3.0.0b1", "3.0.0b0", "2.3.10", "2.3.9", "2.3.8", "2.3.7", "2.3.6", "2.3.5", "2.3.4", "2.3.3", "2.3.2", "2.3.1", "2.3.0", "2.3.2b3", "2.3.2b2", "2.3.0a4", "2.3.0a3", "2.3.0a2", "2.3.0a1", "2.3.1a1", "2.2.5", "2.2.4", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.0", "2.0.7", "2.0.6", "2.0.5", "2.0.4", "2.0.3", "2.0.2", "2.0.1", "2.0.0", "2.0.0rc1", "1.3.5", "1.3.4", "1.3.3", "1.3.2", "1.3.1", "1.3.0", "1.2.0", "1.1.6", "1.1.5", "1.1.4", "1.1.3", "1.1.2", "1.1.1", "1.1.0", "1.0.5", "1.0.3", "1.0.2", "1.0.1", "1.0.0", "0.22.5", "0.22.4", "0.22.3", "0.22.2", "0.22.1", "0.22.0", "0.22.0b6", "0.22.0b5", "0.22.0b4", "0.22.0b3", "0.22.0b2", "0.22.0b1", "0.22.0b0", "0.22.0a0", "0.21.6", "0.21.5", "0.21.4", "0.21.2", "0.21.1", "0.21.0", "0.20.2", "0.20.1", "0.20.0", "0.19.0", "0.18.4", "0.18.3", "0.18.2", "0.18.1", "0.18.0", "0.17.4", "0.17.3", "0.17.2", "0.17.1", "0.17.0", "0.16.6", "0.16.5", "0.16.4", "0.16.3", "0.16.2", "0.16.1", "0.16.0", "0.15.3", "0.15.2", "0.15.1", "0.15.0", "0.14.4", "0.14.3", "0.14.2", "0.14.1", "0.14.0", "0.13.1", "0.13.0", "0.12.0", "0.11.0", "0.10.2", "0.10.1", "0.10.0", "0.9.3", "0.9.2", "0.9.1", "0.9.0", "0.8.4", "0.8.3", "0.8.2", "0.8.1", "0.8.0", "0.7.3", "0.7.2", "0.7.1", "0.7.0", "0.6.5", "0.6.4", "0.6.3", "0.6.2", "0.6.1", "0.6.0", "0.5.0", "0.4.4", "0.4.3", "0.4.2", "0.4.1", "0.4", "0.3", "0.2", "0.1"]
Secure versions: [3.13.4, 3.13.5, 4.0.0a0, 4.0.0a1]
Recommendation: Update to version 3.13.5.

aiohttp Cross-site Scripting vulnerability on index pages for static file handling

Published date: 2024-04-18T13:45:21Z
CVE: CVE-2024-27306
Links:

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

Affected versions: ["3.9.3", "3.9.2", "3.9.1", "3.9.0", "3.9.0rc0", "3.9.4rc0", "3.9.0b1", "3.9.0b0", "3.8.6", "3.8.5", "3.8.4", "3.8.3", "3.8.2", "3.8.1", "3.8.0", "3.8.0b0", "3.8.0a7", "3.7.4", "3.7.4.post0", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.7.0b1", "3.7.0b0", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.6.1b4", "3.6.1b3", "3.6.0b0", "3.6.0a12", "3.6.0a11", "3.6.0a9", "3.6.0a8", "3.6.0a7", "3.6.0a6", "3.6.0a5", "3.6.0a4", "3.6.0a3", "3.6.0a2", "3.6.2a2", "3.6.0a1", "3.6.2a1", "3.6.0a0", "3.6.2a0", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.5.0b3", "3.5.0b2", "3.5.0b1", "3.5.0a1", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.4.0b2", "3.4.0b1", "3.4.0a3", "3.4.0a0", "3.3.2", "3.3.1", "3.3.0", "3.3.2a0", "3.3.0a0", "3.2.1", "3.2.0", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.9", "3.0.8", "3.0.7", "3.0.6", "3.0.5", "3.0.4", "3.0.3", "3.0.2", "3.0.1", "3.0.0", "3.0.0b4", "3.0.0b3", "3.0.0b2", "3.0.0b1", "3.0.0b0", "2.3.10", "2.3.9", "2.3.8", "2.3.7", "2.3.6", "2.3.5", "2.3.4", "2.3.3", "2.3.2", "2.3.1", "2.3.0", "2.3.2b3", "2.3.2b2", "2.3.0a4", "2.3.0a3", "2.3.0a2", "2.3.0a1", "2.3.1a1", "2.2.5", "2.2.4", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.0", "2.0.7", "2.0.6", "2.0.5", "2.0.4", "2.0.3", "2.0.2", "2.0.1", "2.0.0", "2.0.0rc1", "1.3.5", "1.3.4", "1.3.3", "1.3.2", "1.3.1", "1.3.0", "1.2.0", "1.1.6", "1.1.5", "1.1.4", "1.1.3", "1.1.2", "1.1.1", "1.1.0", "1.0.5", "1.0.3", "1.0.2", "1.0.1", "1.0.0", "0.22.5", "0.22.4", "0.22.3", "0.22.2", "0.22.1", "0.22.0", "0.22.0b6", "0.22.0b5", "0.22.0b4", "0.22.0b3", "0.22.0b2", "0.22.0b1", "0.22.0b0", "0.22.0a0", "0.21.6", "0.21.5", "0.21.4", "0.21.2", "0.21.1", "0.21.0", "0.20.2", "0.20.1", "0.20.0", "0.19.0", "0.18.4", "0.18.3", "0.18.2", "0.18.1", "0.18.0", "0.17.4", "0.17.3", "0.17.2", "0.17.1", "0.17.0", "0.16.6", "0.16.5", "0.16.4", "0.16.3", "0.16.2", "0.16.1", "0.16.0", "0.15.3", "0.15.2", "0.15.1", "0.15.0", "0.14.4", "0.14.3", "0.14.2", "0.14.1", "0.14.0", "0.13.1", "0.13.0", "0.12.0", "0.11.0", "0.10.2", "0.10.1", "0.10.0", "0.9.3", "0.9.2", "0.9.1", "0.9.0", "0.8.4", "0.8.3", "0.8.2", "0.8.1", "0.8.0", "0.7.3", "0.7.2", "0.7.1", "0.7.0", "0.6.5", "0.6.4", "0.6.3", "0.6.2", "0.6.1", "0.6.0", "0.5.0", "0.4.4", "0.4.3", "0.4.2", "0.4.1", "0.4", "0.3", "0.2", "0.1"]
Secure versions: [3.13.4, 3.13.5, 4.0.0a0, 4.0.0a1]
Recommendation: Update to version 3.13.5.

aiohttp allows request smuggling due to incorrect parsing of chunk extensions

Published date: 2024-11-18T21:02:32Z
CVE: CVE-2024-52304
Links:

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

Affected versions: ["3.10.10", "3.10.9", "3.10.8", "3.10.7", "3.10.6", "3.10.5", "3.10.4", "3.10.3", "3.10.2", "3.10.1", "3.10.0", "3.10.6rc2", "3.10.6rc1", "3.10.0rc0", "3.10.6rc0", "3.10.11rc0", "3.10.0b1", "3.9.5", "3.9.4", "3.9.3", "3.9.2", "3.9.1", "3.9.0", "3.9.0rc0", "3.9.4rc0", "3.9.0b1", "3.9.0b0", "3.8.6", "3.8.5", "3.8.4", "3.8.3", "3.8.2", "3.8.1", "3.8.0", "3.8.0b0", "3.8.0a7", "3.7.4", "3.7.4.post0", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.7.0b1", "3.7.0b0", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.6.1b4", "3.6.1b3", "3.6.0b0", "3.6.0a12", "3.6.0a11", "3.6.0a9", "3.6.0a8", "3.6.0a7", "3.6.0a6", "3.6.0a5", "3.6.0a4", "3.6.0a3", "3.6.0a2", "3.6.2a2", "3.6.0a1", "3.6.2a1", "3.6.0a0", "3.6.2a0", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.5.0b3", "3.5.0b2", "3.5.0b1", "3.5.0a1", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.4.0b2", "3.4.0b1", "3.4.0a3", "3.4.0a0", "3.3.2", "3.3.1", "3.3.0", "3.3.2a0", "3.3.0a0", "3.2.1", "3.2.0", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.9", "3.0.8", "3.0.7", "3.0.6", "3.0.5", "3.0.4", "3.0.3", "3.0.2", "3.0.1", "3.0.0", "3.0.0b4", "3.0.0b3", "3.0.0b2", "3.0.0b1", "3.0.0b0", "2.3.10", "2.3.9", "2.3.8", "2.3.7", "2.3.6", "2.3.5", "2.3.4", "2.3.3", "2.3.2", "2.3.1", "2.3.0", "2.3.2b3", "2.3.2b2", "2.3.0a4", "2.3.0a3", "2.3.0a2", "2.3.0a1", "2.3.1a1", "2.2.5", "2.2.4", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.0", "2.0.7", "2.0.6", "2.0.5", "2.0.4", "2.0.3", "2.0.2", "2.0.1", "2.0.0", "2.0.0rc1", "1.3.5", "1.3.4", "1.3.3", "1.3.2", "1.3.1", "1.3.0", "1.2.0", "1.1.6", "1.1.5", "1.1.4", "1.1.3", "1.1.2", "1.1.1", "1.1.0", "1.0.5", "1.0.3", "1.0.2", "1.0.1", "1.0.0", "0.22.5", "0.22.4", "0.22.3", "0.22.2", "0.22.1", "0.22.0", "0.22.0b6", "0.22.0b5", "0.22.0b4", "0.22.0b3", "0.22.0b2", "0.22.0b1", "0.22.0b0", "0.22.0a0", "0.21.6", "0.21.5", "0.21.4", "0.21.2", "0.21.1", "0.21.0", "0.20.2", "0.20.1", "0.20.0", "0.19.0", "0.18.4", "0.18.3", "0.18.2", "0.18.1", "0.18.0", "0.17.4", "0.17.3", "0.17.2", "0.17.1", "0.17.0", "0.16.6", "0.16.5", "0.16.4", "0.16.3", "0.16.2", "0.16.1", "0.16.0", "0.15.3", "0.15.2", "0.15.1", "0.15.0", "0.14.4", "0.14.3", "0.14.2", "0.14.1", "0.14.0", "0.13.1", "0.13.0", "0.12.0", "0.11.0", "0.10.2", "0.10.1", "0.10.0", "0.9.3", "0.9.2", "0.9.1", "0.9.0", "0.8.4", "0.8.3", "0.8.2", "0.8.1", "0.8.0", "0.7.3", "0.7.2", "0.7.1", "0.7.0", "0.6.5", "0.6.4", "0.6.3", "0.6.2", "0.6.1", "0.6.0", "0.5.0", "0.4.4", "0.4.3", "0.4.2", "0.4.1", "0.4", "0.3", "0.2", "0.1"]
Secure versions: [3.13.4, 3.13.5, 4.0.0a0, 4.0.0a1]
Recommendation: Update to version 3.13.5.

aiohttp's HTTP parser (the python one, not llhttp) still overly lenient about separators

Published date: 2024-01-29T22:30:07Z
CVE: CVE-2024-23829
Links:

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

Affected versions: ["3.9.1", "3.9.0", "3.9.0rc0", "3.9.4rc0", "3.9.0b1", "3.9.0b0", "3.8.6", "3.8.5", "3.8.4", "3.8.3", "3.8.2", "3.8.1", "3.8.0", "3.8.0b0", "3.8.0a7", "3.7.4", "3.7.4.post0", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.7.0b1", "3.7.0b0", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.6.1b4", "3.6.1b3", "3.6.0b0", "3.6.0a12", "3.6.0a11", "3.6.0a9", "3.6.0a8", "3.6.0a7", "3.6.0a6", "3.6.0a5", "3.6.0a4", "3.6.0a3", "3.6.0a2", "3.6.2a2", "3.6.0a1", "3.6.2a1", "3.6.0a0", "3.6.2a0", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.5.0b3", "3.5.0b2", "3.5.0b1", "3.5.0a1", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.4.0b2", "3.4.0b1", "3.4.0a3", "3.4.0a0", "3.3.2", "3.3.1", "3.3.0", "3.3.2a0", "3.3.0a0", "3.2.1", "3.2.0", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.9", "3.0.8", "3.0.7", "3.0.6", "3.0.5", "3.0.4", "3.0.3", "3.0.2", "3.0.1", "3.0.0", "3.0.0b4", "3.0.0b3", "3.0.0b2", "3.0.0b1", "3.0.0b0", "2.3.10", "2.3.9", "2.3.8", "2.3.7", "2.3.6", "2.3.5", "2.3.4", "2.3.3", "2.3.2", "2.3.1", "2.3.0", "2.3.2b3", "2.3.2b2", "2.3.0a4", "2.3.0a3", "2.3.0a2", "2.3.0a1", "2.3.1a1", "2.2.5", "2.2.4", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.0", "2.0.7", "2.0.6", "2.0.5", "2.0.4", "2.0.3", "2.0.2", "2.0.1", "2.0.0", "2.0.0rc1", "1.3.5", "1.3.4", "1.3.3", "1.3.2", "1.3.1", "1.3.0", "1.2.0", "1.1.6", "1.1.5", "1.1.4", "1.1.3", "1.1.2", "1.1.1", "1.1.0", "1.0.5", "1.0.3", "1.0.2", "1.0.1", "1.0.0", "0.22.5", "0.22.4", "0.22.3", "0.22.2", "0.22.1", "0.22.0", "0.22.0b6", "0.22.0b5", "0.22.0b4", "0.22.0b3", "0.22.0b2", "0.22.0b1", "0.22.0b0", "0.22.0a0", "0.21.6", "0.21.5", "0.21.4", "0.21.2", "0.21.1", "0.21.0", "0.20.2", "0.20.1", "0.20.0", "0.19.0", "0.18.4", "0.18.3", "0.18.2", "0.18.1", "0.18.0", "0.17.4", "0.17.3", "0.17.2", "0.17.1", "0.17.0", "0.16.6", "0.16.5", "0.16.4", "0.16.3", "0.16.2", "0.16.1", "0.16.0", "0.15.3", "0.15.2", "0.15.1", "0.15.0", "0.14.4", "0.14.3", "0.14.2", "0.14.1", "0.14.0", "0.13.1", "0.13.0", "0.12.0", "0.11.0", "0.10.2", "0.10.1", "0.10.0", "0.9.3", "0.9.2", "0.9.1", "0.9.0", "0.8.4", "0.8.3", "0.8.2", "0.8.1", "0.8.0", "0.7.3", "0.7.2", "0.7.1", "0.7.0", "0.6.5", "0.6.4", "0.6.3", "0.6.2", "0.6.1", "0.6.0", "0.5.0", "0.4.4", "0.4.3", "0.4.2", "0.4.1", "0.4", "0.3", "0.2", "0.1"]
Secure versions: [3.13.4, 3.13.5, 4.0.0a0, 4.0.0a1]
Recommendation: Update to version 3.13.5.

AIOHTTP is vulnerable to HTTP Request/Response Smuggling through incorrect parsing of chunked trailer sections

Published date: 2025-07-14T19:33:31Z
CVE: CVE-2025-53643
Links:

Summary

The Python parser is vulnerable to a request smuggling vulnerability due to not parsing trailer sections of an HTTP request.

Impact

If a pure Python version of aiohttp is installed (i.e. without the usual C extensions) or AIOHTTPNOEXTENSIONS 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/e8d774f635dc6d1cd3174d0e38891da5de0e2b6a

Affected versions: ["3.12.13", "3.12.12", "3.12.11", "3.12.10", "3.12.9", "3.12.8", "3.12.7", "3.12.6", "3.12.4", "3.12.3", "3.12.2", "3.12.1", "3.12.0", "3.12.0rc1", "3.12.0rc0", "3.12.1rc0", "3.12.7rc0", "3.12.0b3", "3.12.0b2", "3.12.0b1", "3.12.0b0", "3.11.18", "3.11.17", "3.11.16", "3.11.15", "3.11.14", "3.11.13", "3.11.12", "3.11.11", "3.11.10", "3.11.9", "3.11.8", "3.11.7", "3.11.6", "3.11.5", "3.11.4", "3.11.3", "3.11.2", "3.11.1", "3.11.0", "3.11.0rc2", "3.11.0rc1", "3.11.0rc0", "3.11.0b5", "3.11.0b4", "3.11.0b3", "3.11.0b2", "3.11.0b1", "3.11.0b0", "3.10.11", "3.10.10", "3.10.9", "3.10.8", "3.10.7", "3.10.6", "3.10.5", "3.10.4", "3.10.3", "3.10.2", "3.10.1", "3.10.0", "3.10.6rc2", "3.10.6rc1", "3.10.0rc0", "3.10.6rc0", "3.10.11rc0", "3.10.0b1", "3.9.5", "3.9.4", "3.9.3", "3.9.2", "3.9.1", "3.9.0", "3.9.0rc0", "3.9.4rc0", "3.9.0b1", "3.9.0b0", "3.8.6", "3.8.5", "3.8.4", "3.8.3", "3.8.2", "3.8.1", "3.8.0", "3.8.0b0", "3.8.0a7", "3.7.4", "3.7.4.post0", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.7.0b1", "3.7.0b0", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.6.1b4", "3.6.1b3", "3.6.0b0", "3.6.0a12", "3.6.0a11", "3.6.0a9", "3.6.0a8", "3.6.0a7", "3.6.0a6", "3.6.0a5", "3.6.0a4", "3.6.0a3", "3.6.0a2", "3.6.2a2", "3.6.0a1", "3.6.2a1", "3.6.0a0", "3.6.2a0", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.5.0b3", "3.5.0b2", "3.5.0b1", "3.5.0a1", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.4.0b2", "3.4.0b1", "3.4.0a3", "3.4.0a0", "3.3.2", "3.3.1", "3.3.0", "3.3.2a0", "3.3.0a0", "3.2.1", "3.2.0", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.9", "3.0.8", "3.0.7", "3.0.6", "3.0.5", "3.0.4", "3.0.3", "3.0.2", "3.0.1", "3.0.0", "3.0.0b4", "3.0.0b3", "3.0.0b2", "3.0.0b1", "3.0.0b0", "2.3.10", "2.3.9", "2.3.8", "2.3.7", "2.3.6", "2.3.5", "2.3.4", "2.3.3", "2.3.2", "2.3.1", "2.3.0", "2.3.2b3", "2.3.2b2", "2.3.0a4", "2.3.0a3", "2.3.0a2", "2.3.0a1", "2.3.1a1", "2.2.5", "2.2.4", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.0", "2.0.7", "2.0.6", "2.0.5", "2.0.4", "2.0.3", "2.0.2", "2.0.1", "2.0.0", "2.0.0rc1", "1.3.5", "1.3.4", "1.3.3", "1.3.2", "1.3.1", "1.3.0", "1.2.0", "1.1.6", "1.1.5", "1.1.4", "1.1.3", "1.1.2", "1.1.1", "1.1.0", "1.0.5", "1.0.3", "1.0.2", "1.0.1", "1.0.0", "0.22.5", "0.22.4", "0.22.3", "0.22.2", "0.22.1", "0.22.0", "0.22.0b6", "0.22.0b5", "0.22.0b4", "0.22.0b3", "0.22.0b2", "0.22.0b1", "0.22.0b0", "0.22.0a0", "0.21.6", "0.21.5", "0.21.4", "0.21.2", "0.21.1", "0.21.0", "0.20.2", "0.20.1", "0.20.0", "0.19.0", "0.18.4", "0.18.3", "0.18.2", "0.18.1", "0.18.0", "0.17.4", "0.17.3", "0.17.2", "0.17.1", "0.17.0", "0.16.6", "0.16.5", "0.16.4", "0.16.3", "0.16.2", "0.16.1", "0.16.0", "0.15.3", "0.15.2", "0.15.1", "0.15.0", "0.14.4", "0.14.3", "0.14.2", "0.14.1", "0.14.0", "0.13.1", "0.13.0", "0.12.0", "0.11.0", "0.10.2", "0.10.1", "0.10.0", "0.9.3", "0.9.2", "0.9.1", "0.9.0", "0.8.4", "0.8.3", "0.8.2", "0.8.1", "0.8.0", "0.7.3", "0.7.2", "0.7.1", "0.7.0", "0.6.5", "0.6.4", "0.6.3", "0.6.2", "0.6.1", "0.6.0", "0.5.0", "0.4.4", "0.4.3", "0.4.2", "0.4.1", "0.4", "0.3", "0.2", "0.1"]
Secure versions: [3.13.4, 3.13.5, 4.0.0a0, 4.0.0a1]
Recommendation: Update to version 3.13.5.

AIOHTTP leaks Cookie and Proxy-Authorization headers on cross-origin redirect

Published date: 2026-04-01T21:47:46Z
CVE: CVE-2026-34518
Links:

Summary

When following redirects to a different origin, aiohttp drops the Authorization header, but retains the Cookie and Proxy-Authorization headers.

Impact

The Cookie and Proxy-Authorizations headers could contain sensitive information which may be leaked to an unintended party after following a redirect.


Patch: https://github.com/aio-libs/aiohttp/commit/5351c980dcec7ad385730efdf4e1f4338b24fdb6

Affected versions: ["3.13.3", "3.13.2", "3.13.1", "3.13.0", "3.12.15", "3.12.14", "3.12.13", "3.12.12", "3.12.11", "3.12.10", "3.12.9", "3.12.8", "3.12.7", "3.12.6", "3.12.4", "3.12.3", "3.12.2", "3.12.1", "3.12.0", "3.12.0rc1", "3.12.0rc0", "3.12.1rc0", "3.12.7rc0", "3.12.0b3", "3.12.0b2", "3.12.0b1", "3.12.0b0", "3.11.18", "3.11.17", "3.11.16", "3.11.15", "3.11.14", "3.11.13", "3.11.12", "3.11.11", "3.11.10", "3.11.9", "3.11.8", "3.11.7", "3.11.6", "3.11.5", "3.11.4", "3.11.3", "3.11.2", "3.11.1", "3.11.0", "3.11.0rc2", "3.11.0rc1", "3.11.0rc0", "3.11.0b5", "3.11.0b4", "3.11.0b3", "3.11.0b2", "3.11.0b1", "3.11.0b0", "3.10.11", "3.10.10", "3.10.9", "3.10.8", "3.10.7", "3.10.6", "3.10.5", "3.10.4", "3.10.3", "3.10.2", "3.10.1", "3.10.0", "3.10.6rc2", "3.10.6rc1", "3.10.0rc0", "3.10.6rc0", "3.10.11rc0", "3.10.0b1", "3.9.5", "3.9.4", "3.9.3", "3.9.2", "3.9.1", "3.9.0", "3.9.0rc0", "3.9.4rc0", "3.9.0b1", "3.9.0b0", "3.8.6", "3.8.5", "3.8.4", "3.8.3", "3.8.2", "3.8.1", "3.8.0", "3.8.0b0", "3.8.0a7", "3.7.4", "3.7.4.post0", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.7.0b1", "3.7.0b0", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.6.1b4", "3.6.1b3", "3.6.0b0", "3.6.0a12", "3.6.0a11", "3.6.0a9", "3.6.0a8", "3.6.0a7", "3.6.0a6", "3.6.0a5", "3.6.0a4", "3.6.0a3", "3.6.0a2", "3.6.2a2", "3.6.0a1", "3.6.2a1", "3.6.0a0", "3.6.2a0", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.5.0b3", "3.5.0b2", "3.5.0b1", "3.5.0a1", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.4.0b2", "3.4.0b1", "3.4.0a3", "3.4.0a0", "3.3.2", "3.3.1", "3.3.0", "3.3.2a0", "3.3.0a0", "3.2.1", "3.2.0", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.9", "3.0.8", "3.0.7", "3.0.6", "3.0.5", "3.0.4", "3.0.3", "3.0.2", "3.0.1", "3.0.0", "3.0.0b4", "3.0.0b3", "3.0.0b2", "3.0.0b1", "3.0.0b0", "2.3.10", "2.3.9", "2.3.8", "2.3.7", "2.3.6", "2.3.5", "2.3.4", "2.3.3", "2.3.2", "2.3.1", "2.3.0", "2.3.2b3", "2.3.2b2", "2.3.0a4", "2.3.0a3", "2.3.0a2", "2.3.0a1", "2.3.1a1", "2.2.5", "2.2.4", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.0", "2.0.7", "2.0.6", "2.0.5", "2.0.4", "2.0.3", "2.0.2", "2.0.1", "2.0.0", "2.0.0rc1", "1.3.5", "1.3.4", "1.3.3", "1.3.2", "1.3.1", "1.3.0", "1.2.0", "1.1.6", "1.1.5", "1.1.4", "1.1.3", "1.1.2", "1.1.1", "1.1.0", "1.0.5", "1.0.3", "1.0.2", "1.0.1", "1.0.0", "0.22.5", "0.22.4", "0.22.3", "0.22.2", "0.22.1", "0.22.0", "0.22.0b6", "0.22.0b5", "0.22.0b4", "0.22.0b3", "0.22.0b2", "0.22.0b1", "0.22.0b0", "0.22.0a0", "0.21.6", "0.21.5", "0.21.4", "0.21.2", "0.21.1", "0.21.0", "0.20.2", "0.20.1", "0.20.0", "0.19.0", "0.18.4", "0.18.3", "0.18.2", "0.18.1", "0.18.0", "0.17.4", "0.17.3", "0.17.2", "0.17.1", "0.17.0", "0.16.6", "0.16.5", "0.16.4", "0.16.3", "0.16.2", "0.16.1", "0.16.0", "0.15.3", "0.15.2", "0.15.1", "0.15.0", "0.14.4", "0.14.3", "0.14.2", "0.14.1", "0.14.0", "0.13.1", "0.13.0", "0.12.0", "0.11.0", "0.10.2", "0.10.1", "0.10.0", "0.9.3", "0.9.2", "0.9.1", "0.9.0", "0.8.4", "0.8.3", "0.8.2", "0.8.1", "0.8.0", "0.7.3", "0.7.2", "0.7.1", "0.7.0", "0.6.5", "0.6.4", "0.6.3", "0.6.2", "0.6.1", "0.6.0", "0.5.0", "0.4.4", "0.4.3", "0.4.2", "0.4.1", "0.4", "0.3", "0.2", "0.1"]
Secure versions: [3.13.4, 3.13.5, 4.0.0a0, 4.0.0a1]
Recommendation: Update to version 3.13.5.

AIOHTTP accepts duplicate Host headers

Published date: 2026-04-01T21:49:45Z
CVE: CVE-2026-34525
Links:

Summary

Multiple Host headers were allowed in aiohttp.

Impact

Mostly this doesn't affect aiohttp security itself, but if a reverse proxy is applying security rules depending on the target Host, it is theoretically possible that the proxy and aiohttp could process different host names, possibly resulting in bypassing a security check on the proxy and getting a request processed by aiohttp in a privileged sub app when using Application.add_domain().


Patch: https://github.com/aio-libs/aiohttp/commit/e00ca3cca92c465c7913c4beb763a72da9ed8349 Patch: https://github.com/aio-libs/aiohttp/commit/53e2e6fc58b89c6185be7820bd2c9f40216b3000

Affected versions: ["3.13.3", "3.13.2", "3.13.1", "3.13.0", "3.12.15", "3.12.14", "3.12.13", "3.12.12", "3.12.11", "3.12.10", "3.12.9", "3.12.8", "3.12.7", "3.12.6", "3.12.4", "3.12.3", "3.12.2", "3.12.1", "3.12.0", "3.12.0rc1", "3.12.0rc0", "3.12.1rc0", "3.12.7rc0", "3.12.0b3", "3.12.0b2", "3.12.0b1", "3.12.0b0", "3.11.18", "3.11.17", "3.11.16", "3.11.15", "3.11.14", "3.11.13", "3.11.12", "3.11.11", "3.11.10", "3.11.9", "3.11.8", "3.11.7", "3.11.6", "3.11.5", "3.11.4", "3.11.3", "3.11.2", "3.11.1", "3.11.0", "3.11.0rc2", "3.11.0rc1", "3.11.0rc0", "3.11.0b5", "3.11.0b4", "3.11.0b3", "3.11.0b2", "3.11.0b1", "3.11.0b0", "3.10.11", "3.10.10", "3.10.9", "3.10.8", "3.10.7", "3.10.6", "3.10.5", "3.10.4", "3.10.3", "3.10.2", "3.10.1", "3.10.0", "3.10.6rc2", "3.10.6rc1", "3.10.0rc0", "3.10.6rc0", "3.10.11rc0", "3.10.0b1", "3.9.5", "3.9.4", "3.9.3", "3.9.2", "3.9.1", "3.9.0", "3.9.0rc0", "3.9.4rc0", "3.9.0b1", "3.9.0b0", "3.8.6", "3.8.5", "3.8.4", "3.8.3", "3.8.2", "3.8.1", "3.8.0", "3.8.0b0", "3.8.0a7", "3.7.4", "3.7.4.post0", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.7.0b1", "3.7.0b0", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.6.1b4", "3.6.1b3", "3.6.0b0", "3.6.0a12", "3.6.0a11", "3.6.0a9", "3.6.0a8", "3.6.0a7", "3.6.0a6", "3.6.0a5", "3.6.0a4", "3.6.0a3", "3.6.0a2", "3.6.2a2", "3.6.0a1", "3.6.2a1", "3.6.0a0", "3.6.2a0", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.5.0b3", "3.5.0b2", "3.5.0b1", "3.5.0a1", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.4.0b2", "3.4.0b1", "3.4.0a3", "3.4.0a0", "3.3.2", "3.3.1", "3.3.0", "3.3.2a0", "3.3.0a0", "3.2.1", "3.2.0", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.9", "3.0.8", "3.0.7", "3.0.6", "3.0.5", "3.0.4", "3.0.3", "3.0.2", "3.0.1", "3.0.0", "3.0.0b4", "3.0.0b3", "3.0.0b2", "3.0.0b1", "3.0.0b0", "2.3.10", "2.3.9", "2.3.8", "2.3.7", "2.3.6", "2.3.5", "2.3.4", "2.3.3", "2.3.2", "2.3.1", "2.3.0", "2.3.2b3", "2.3.2b2", "2.3.0a4", "2.3.0a3", "2.3.0a2", "2.3.0a1", "2.3.1a1", "2.2.5", "2.2.4", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.0", "2.0.7", "2.0.6", "2.0.5", "2.0.4", "2.0.3", "2.0.2", "2.0.1", "2.0.0", "2.0.0rc1", "1.3.5", "1.3.4", "1.3.3", "1.3.2", "1.3.1", "1.3.0", "1.2.0", "1.1.6", "1.1.5", "1.1.4", "1.1.3", "1.1.2", "1.1.1", "1.1.0", "1.0.5", "1.0.3", "1.0.2", "1.0.1", "1.0.0", "0.22.5", "0.22.4", "0.22.3", "0.22.2", "0.22.1", "0.22.0", "0.22.0b6", "0.22.0b5", "0.22.0b4", "0.22.0b3", "0.22.0b2", "0.22.0b1", "0.22.0b0", "0.22.0a0", "0.21.6", "0.21.5", "0.21.4", "0.21.2", "0.21.1", "0.21.0", "0.20.2", "0.20.1", "0.20.0", "0.19.0", "0.18.4", "0.18.3", "0.18.2", "0.18.1", "0.18.0", "0.17.4", "0.17.3", "0.17.2", "0.17.1", "0.17.0", "0.16.6", "0.16.5", "0.16.4", "0.16.3", "0.16.2", "0.16.1", "0.16.0", "0.15.3", "0.15.2", "0.15.1", "0.15.0", "0.14.4", "0.14.3", "0.14.2", "0.14.1", "0.14.0", "0.13.1", "0.13.0", "0.12.0", "0.11.0", "0.10.2", "0.10.1", "0.10.0", "0.9.3", "0.9.2", "0.9.1", "0.9.0", "0.8.4", "0.8.3", "0.8.2", "0.8.1", "0.8.0", "0.7.3", "0.7.2", "0.7.1", "0.7.0", "0.6.5", "0.6.4", "0.6.3", "0.6.2", "0.6.1", "0.6.0", "0.5.0", "0.4.4", "0.4.3", "0.4.2", "0.4.1", "0.4", "0.3", "0.2", "0.1"]
Secure versions: [3.13.4, 3.13.5, 4.0.0a0, 4.0.0a1]
Recommendation: Update to version 3.13.5.

AIOHTTP Vulnerable to Cookie Parser Warning Storm

Published date: 2026-01-05T23:13:46Z
CVE: CVE-2025-69230
Links:

Summary

Reading multiple invalid cookies can lead to a logging storm.

Impact

If the cookies attribute is accessed in an application, then an attacker may be able to trigger a storm of warning-level logs using a specially crafted Cookie header.


Patch: https://github.com/aio-libs/aiohttp/commit/64629a0834f94e46d9881f4e99c41a137e1f3326

Affected versions: ["3.13.2", "3.13.1", "3.13.0", "3.12.15", "3.12.14", "3.12.13", "3.12.12", "3.12.11", "3.12.10", "3.12.9", "3.12.8", "3.12.7", "3.12.6", "3.12.4", "3.12.3", "3.12.2", "3.12.1", "3.12.0", "3.12.0rc1", "3.12.0rc0", "3.12.1rc0", "3.12.7rc0", "3.12.0b3", "3.12.0b2", "3.12.0b1", "3.12.0b0", "3.11.18", "3.11.17", "3.11.16", "3.11.15", "3.11.14", "3.11.13", "3.11.12", "3.11.11", "3.11.10", "3.11.9", "3.11.8", "3.11.7", "3.11.6", "3.11.5", "3.11.4", "3.11.3", "3.11.2", "3.11.1", "3.11.0", "3.11.0rc2", "3.11.0rc1", "3.11.0rc0", "3.11.0b5", "3.11.0b4", "3.11.0b3", "3.11.0b2", "3.11.0b1", "3.11.0b0", "3.10.11", "3.10.10", "3.10.9", "3.10.8", "3.10.7", "3.10.6", "3.10.5", "3.10.4", "3.10.3", "3.10.2", "3.10.1", "3.10.0", "3.10.6rc2", "3.10.6rc1", "3.10.0rc0", "3.10.6rc0", "3.10.11rc0", "3.10.0b1", "3.9.5", "3.9.4", "3.9.3", "3.9.2", "3.9.1", "3.9.0", "3.9.0rc0", "3.9.4rc0", "3.9.0b1", "3.9.0b0", "3.8.6", "3.8.5", "3.8.4", "3.8.3", "3.8.2", "3.8.1", "3.8.0", "3.8.0b0", "3.8.0a7", "3.7.4", "3.7.4.post0", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.7.0b1", "3.7.0b0", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.6.1b4", "3.6.1b3", "3.6.0b0", "3.6.0a12", "3.6.0a11", "3.6.0a9", "3.6.0a8", "3.6.0a7", "3.6.0a6", "3.6.0a5", "3.6.0a4", "3.6.0a3", "3.6.0a2", "3.6.2a2", "3.6.0a1", "3.6.2a1", "3.6.0a0", "3.6.2a0", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.5.0b3", "3.5.0b2", "3.5.0b1", "3.5.0a1", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.4.0b2", "3.4.0b1", "3.4.0a3", "3.4.0a0", "3.3.2", "3.3.1", "3.3.0", "3.3.2a0", "3.3.0a0", "3.2.1", "3.2.0", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.9", "3.0.8", "3.0.7", "3.0.6", "3.0.5", "3.0.4", "3.0.3", "3.0.2", "3.0.1", "3.0.0", "3.0.0b4", "3.0.0b3", "3.0.0b2", "3.0.0b1", "3.0.0b0", "2.3.10", "2.3.9", "2.3.8", "2.3.7", "2.3.6", "2.3.5", "2.3.4", "2.3.3", "2.3.2", "2.3.1", "2.3.0", "2.3.2b3", "2.3.2b2", "2.3.0a4", "2.3.0a3", "2.3.0a2", "2.3.0a1", "2.3.1a1", "2.2.5", "2.2.4", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.0", "2.0.7", "2.0.6", "2.0.5", "2.0.4", "2.0.3", "2.0.2", "2.0.1", "2.0.0", "2.0.0rc1", "1.3.5", "1.3.4", "1.3.3", "1.3.2", "1.3.1", "1.3.0", "1.2.0", "1.1.6", "1.1.5", "1.1.4", "1.1.3", "1.1.2", "1.1.1", "1.1.0", "1.0.5", "1.0.3", "1.0.2", "1.0.1", "1.0.0", "0.22.5", "0.22.4", "0.22.3", "0.22.2", "0.22.1", "0.22.0", "0.22.0b6", "0.22.0b5", "0.22.0b4", "0.22.0b3", "0.22.0b2", "0.22.0b1", "0.22.0b0", "0.22.0a0", "0.21.6", "0.21.5", "0.21.4", "0.21.2", "0.21.1", "0.21.0", "0.20.2", "0.20.1", "0.20.0", "0.19.0", "0.18.4", "0.18.3", "0.18.2", "0.18.1", "0.18.0", "0.17.4", "0.17.3", "0.17.2", "0.17.1", "0.17.0", "0.16.6", "0.16.5", "0.16.4", "0.16.3", "0.16.2", "0.16.1", "0.16.0", "0.15.3", "0.15.2", "0.15.1", "0.15.0", "0.14.4", "0.14.3", "0.14.2", "0.14.1", "0.14.0", "0.13.1", "0.13.0", "0.12.0", "0.11.0", "0.10.2", "0.10.1", "0.10.0", "0.9.3", "0.9.2", "0.9.1", "0.9.0", "0.8.4", "0.8.3", "0.8.2", "0.8.1", "0.8.0", "0.7.3", "0.7.2", "0.7.1", "0.7.0", "0.6.5", "0.6.4", "0.6.3", "0.6.2", "0.6.1", "0.6.0", "0.5.0", "0.4.4", "0.4.3", "0.4.2", "0.4.1", "0.4", "0.3", "0.2", "0.1"]
Secure versions: [3.13.4, 3.13.5, 4.0.0a0, 4.0.0a1]
Recommendation: Update to version 3.13.5.

AIOHTTP vulnerable to DoS through chunked messages

Published date: 2026-01-05T23:13:29Z
CVE: CVE-2025-69229
Links:

Summary

Handling of chunked messages can result in excessive blocking CPU usage when receiving a large number of chunks.

Impact

If an application makes use of the request.read() method in an endpoint, it may be possible for an attacker to cause the server to spend a moderate amount of blocking CPU time (e.g. 1 second) while processing the request. This could potentially lead to DoS as the server would be unable to handle other requests during that time.


Patch: https://github.com/aio-libs/aiohttp/commit/dc3170b56904bdf814228fae70a5501a42a6c712 Patch: https://github.com/aio-libs/aiohttp/commit/4ed97a4e46eaf61bd0f05063245f613469700229

Affected versions: ["3.13.2", "3.13.1", "3.13.0", "3.12.15", "3.12.14", "3.12.13", "3.12.12", "3.12.11", "3.12.10", "3.12.9", "3.12.8", "3.12.7", "3.12.6", "3.12.4", "3.12.3", "3.12.2", "3.12.1", "3.12.0", "3.12.0rc1", "3.12.0rc0", "3.12.1rc0", "3.12.7rc0", "3.12.0b3", "3.12.0b2", "3.12.0b1", "3.12.0b0", "3.11.18", "3.11.17", "3.11.16", "3.11.15", "3.11.14", "3.11.13", "3.11.12", "3.11.11", "3.11.10", "3.11.9", "3.11.8", "3.11.7", "3.11.6", "3.11.5", "3.11.4", "3.11.3", "3.11.2", "3.11.1", "3.11.0", "3.11.0rc2", "3.11.0rc1", "3.11.0rc0", "3.11.0b5", "3.11.0b4", "3.11.0b3", "3.11.0b2", "3.11.0b1", "3.11.0b0", "3.10.11", "3.10.10", "3.10.9", "3.10.8", "3.10.7", "3.10.6", "3.10.5", "3.10.4", "3.10.3", "3.10.2", "3.10.1", "3.10.0", "3.10.6rc2", "3.10.6rc1", "3.10.0rc0", "3.10.6rc0", "3.10.11rc0", "3.10.0b1", "3.9.5", "3.9.4", "3.9.3", "3.9.2", "3.9.1", "3.9.0", "3.9.0rc0", "3.9.4rc0", "3.9.0b1", "3.9.0b0", "3.8.6", "3.8.5", "3.8.4", "3.8.3", "3.8.2", "3.8.1", "3.8.0", "3.8.0b0", "3.8.0a7", "3.7.4", "3.7.4.post0", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.7.0b1", "3.7.0b0", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.6.1b4", "3.6.1b3", "3.6.0b0", "3.6.0a12", "3.6.0a11", "3.6.0a9", "3.6.0a8", "3.6.0a7", "3.6.0a6", "3.6.0a5", "3.6.0a4", "3.6.0a3", "3.6.0a2", "3.6.2a2", "3.6.0a1", "3.6.2a1", "3.6.0a0", "3.6.2a0", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.5.0b3", "3.5.0b2", "3.5.0b1", "3.5.0a1", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.4.0b2", "3.4.0b1", "3.4.0a3", "3.4.0a0", "3.3.2", "3.3.1", "3.3.0", "3.3.2a0", "3.3.0a0", "3.2.1", "3.2.0", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.9", "3.0.8", "3.0.7", "3.0.6", "3.0.5", "3.0.4", "3.0.3", "3.0.2", "3.0.1", "3.0.0", "3.0.0b4", "3.0.0b3", "3.0.0b2", "3.0.0b1", "3.0.0b0", "2.3.10", "2.3.9", "2.3.8", "2.3.7", "2.3.6", "2.3.5", "2.3.4", "2.3.3", "2.3.2", "2.3.1", "2.3.0", "2.3.2b3", "2.3.2b2", "2.3.0a4", "2.3.0a3", "2.3.0a2", "2.3.0a1", "2.3.1a1", "2.2.5", "2.2.4", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.0", "2.0.7", "2.0.6", "2.0.5", "2.0.4", "2.0.3", "2.0.2", "2.0.1", "2.0.0", "2.0.0rc1", "1.3.5", "1.3.4", "1.3.3", "1.3.2", "1.3.1", "1.3.0", "1.2.0", "1.1.6", "1.1.5", "1.1.4", "1.1.3", "1.1.2", "1.1.1", "1.1.0", "1.0.5", "1.0.3", "1.0.2", "1.0.1", "1.0.0", "0.22.5", "0.22.4", "0.22.3", "0.22.2", "0.22.1", "0.22.0", "0.22.0b6", "0.22.0b5", "0.22.0b4", "0.22.0b3", "0.22.0b2", "0.22.0b1", "0.22.0b0", "0.22.0a0", "0.21.6", "0.21.5", "0.21.4", "0.21.2", "0.21.1", "0.21.0", "0.20.2", "0.20.1", "0.20.0", "0.19.0", "0.18.4", "0.18.3", "0.18.2", "0.18.1", "0.18.0", "0.17.4", "0.17.3", "0.17.2", "0.17.1", "0.17.0", "0.16.6", "0.16.5", "0.16.4", "0.16.3", "0.16.2", "0.16.1", "0.16.0", "0.15.3", "0.15.2", "0.15.1", "0.15.0", "0.14.4", "0.14.3", "0.14.2", "0.14.1", "0.14.0", "0.13.1", "0.13.0", "0.12.0", "0.11.0", "0.10.2", "0.10.1", "0.10.0", "0.9.3", "0.9.2", "0.9.1", "0.9.0", "0.8.4", "0.8.3", "0.8.2", "0.8.1", "0.8.0", "0.7.3", "0.7.2", "0.7.1", "0.7.0", "0.6.5", "0.6.4", "0.6.3", "0.6.2", "0.6.1", "0.6.0", "0.5.0", "0.4.4", "0.4.3", "0.4.2", "0.4.1", "0.4", "0.3", "0.2", "0.1"]
Secure versions: [3.13.4, 3.13.5, 4.0.0a0, 4.0.0a1]
Recommendation: Update to version 3.13.5.

AIOHTTP has problems in HTTP parser (the python one, not llhttp)

Published date: 2023-11-14T22:20:59Z
CVE: CVE-2023-47627
Links:

Summary

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).

Details

Bug 1: Bad parsing of Content-Length values

Description

RFC 9110 says this:

Content-Length = 1*DIGIT

AIOHTTP does not enforce this rule, presumably because of an incorrect usage of the builtin int constructor. Because the int constructor accepts + and - prefixes, and digit-separating underscores, using int to parse CL values leads AIOHTTP to significant misinterpretation.

Examples

GET / HTTP/1.1\r\n
Content-Length: -0\r\n
\r\n
X
GET / HTTP/1.1\r\n
Content-Length: +0_1\r\n
\r\n
X

Suggested action

Verify that a Content-Length value consists only of ASCII digits before parsing, as the standard requires.

Bug 2: Improper handling of NUL, CR, and LF in header values

Description

RFC 9110 says this:

Field values containing CR, LF, or NUL characters are invalid and dangerous, due to the varying ways that implementations might parse and interpret those characters; a recipient of CR, LF, or NUL within a field value MUST either reject the message or replace each of those characters with SP before further processing or forwarding of that message.

AIOHTTP's HTTP parser does not enforce this rule, and will happily process header values containing these three forbidden characters without replacing them with SP.

Examples

GET / HTTP/1.1\r\n
Header: v\x00alue\r\n
\r\n
GET / HTTP/1.1\r\n
Header: v\ralue\r\n
\r\n
GET / HTTP/1.1\r\n
Header: v\nalue\r\n
\r\n

Suggested action

Reject all messages with NUL, CR, or LF in a header value. The translation to space thing, while technically allowed, does not seem like a good idea to me.

Bug 3: Improper stripping of whitespace before colon in HTTP headers

Description

RFC 9112 says this:

No whitespace is allowed between the field name and colon. In the past, differences in the handling of such whitespace have led to security vulnerabilities in request routing and response handling. A server MUST reject, with a response status code of 400 (Bad Request), any received request message that contains whitespace between a header field name and colon.

AIOHTTP does not enforce this rule, and will simply strip any whitespace before the colon in an HTTP header.

Example

GET / HTTP/1.1\r\n
Content-Length : 1\r\n
\r\n
X

Suggested action

Reject all messages with whitespace before a colon in a header field, as the standard requires.

PoC

Example requests are embedded in the previous section. To reproduce these bugs, start an AIOHTTP server without llhttp (i.e. AIOHTTP_NO_EXTENSIONS=1) and send the requests given in the previous section. (e.g. by printfing into nc)

Impact

Each of these bugs can be used for request smuggling.

Affected versions: ["3.8.5", "3.8.4", "3.8.3", "3.8.2", "3.8.1", "3.8.0", "3.8.0b0", "3.8.0a7", "3.7.4", "3.7.4.post0", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.7.0b1", "3.7.0b0", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.6.1b4", "3.6.1b3", "3.6.0b0", "3.6.0a12", "3.6.0a11", "3.6.0a9", "3.6.0a8", "3.6.0a7", "3.6.0a6", "3.6.0a5", "3.6.0a4", "3.6.0a3", "3.6.0a2", "3.6.2a2", "3.6.0a1", "3.6.2a1", "3.6.0a0", "3.6.2a0", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.5.0b3", "3.5.0b2", "3.5.0b1", "3.5.0a1", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.4.0b2", "3.4.0b1", "3.4.0a3", "3.4.0a0", "3.3.2", "3.3.1", "3.3.0", "3.3.2a0", "3.3.0a0", "3.2.1", "3.2.0", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.9", "3.0.8", "3.0.7", "3.0.6", "3.0.5", "3.0.4", "3.0.3", "3.0.2", "3.0.1", "3.0.0", "3.0.0b4", "3.0.0b3", "3.0.0b2", "3.0.0b1", "3.0.0b0", "2.3.10", "2.3.9", "2.3.8", "2.3.7", "2.3.6", "2.3.5", "2.3.4", "2.3.3", "2.3.2", "2.3.1", "2.3.0", "2.3.2b3", "2.3.2b2", "2.3.0a4", "2.3.0a3", "2.3.0a2", "2.3.0a1", "2.3.1a1", "2.2.5", "2.2.4", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.0", "2.0.7", "2.0.6", "2.0.5", "2.0.4", "2.0.3", "2.0.2", "2.0.1", "2.0.0", "2.0.0rc1", "1.3.5", "1.3.4", "1.3.3", "1.3.2", "1.3.1", "1.3.0", "1.2.0", "1.1.6", "1.1.5", "1.1.4", "1.1.3", "1.1.2", "1.1.1", "1.1.0", "1.0.5", "1.0.3", "1.0.2", "1.0.1", "1.0.0", "0.22.5", "0.22.4", "0.22.3", "0.22.2", "0.22.1", "0.22.0", "0.22.0b6", "0.22.0b5", "0.22.0b4", "0.22.0b3", "0.22.0b2", "0.22.0b1", "0.22.0b0", "0.22.0a0", "0.21.6", "0.21.5", "0.21.4", "0.21.2", "0.21.1", "0.21.0", "0.20.2", "0.20.1", "0.20.0", "0.19.0", "0.18.4", "0.18.3", "0.18.2", "0.18.1", "0.18.0", "0.17.4", "0.17.3", "0.17.2", "0.17.1", "0.17.0", "0.16.6", "0.16.5", "0.16.4", "0.16.3", "0.16.2", "0.16.1", "0.16.0", "0.15.3", "0.15.2", "0.15.1", "0.15.0", "0.14.4", "0.14.3", "0.14.2", "0.14.1", "0.14.0", "0.13.1", "0.13.0", "0.12.0", "0.11.0", "0.10.2", "0.10.1", "0.10.0", "0.9.3", "0.9.2", "0.9.1", "0.9.0", "0.8.4", "0.8.3", "0.8.2", "0.8.1", "0.8.0", "0.7.3", "0.7.2", "0.7.1", "0.7.0", "0.6.5", "0.6.4", "0.6.3", "0.6.2", "0.6.1", "0.6.0", "0.5.0", "0.4.4", "0.4.3", "0.4.2", "0.4.1", "0.4", "0.3", "0.2", "0.1"]
Secure versions: [3.13.4, 3.13.5, 4.0.0a0, 4.0.0a1]
Recommendation: Update to version 3.13.5.

AIOHTTP Affected by Denial of Service (DoS) via Unbounded DNS Cache in TCPConnector

Published date: 2026-04-01T21:19:22Z
CVE: CVE-2026-34513
Links:

Summary

An unbounded DNS cache could result in excessive memory usage possibly resulting in a DoS situation.

Impact

If an application makes requests to a very large number of hosts, this could cause the DNS cache to continue growing and slowly use excessive amounts of memory.


Patch: https://github.com/aio-libs/aiohttp/commit/c4d77c3533122be353b8afca8e8675e3b4cbda98

Affected versions: ["3.13.3", "3.13.2", "3.13.1", "3.13.0", "3.12.15", "3.12.14", "3.12.13", "3.12.12", "3.12.11", "3.12.10", "3.12.9", "3.12.8", "3.12.7", "3.12.6", "3.12.4", "3.12.3", "3.12.2", "3.12.1", "3.12.0", "3.12.0rc1", "3.12.0rc0", "3.12.1rc0", "3.12.7rc0", "3.12.0b3", "3.12.0b2", "3.12.0b1", "3.12.0b0", "3.11.18", "3.11.17", "3.11.16", "3.11.15", "3.11.14", "3.11.13", "3.11.12", "3.11.11", "3.11.10", "3.11.9", "3.11.8", "3.11.7", "3.11.6", "3.11.5", "3.11.4", "3.11.3", "3.11.2", "3.11.1", "3.11.0", "3.11.0rc2", "3.11.0rc1", "3.11.0rc0", "3.11.0b5", "3.11.0b4", "3.11.0b3", "3.11.0b2", "3.11.0b1", "3.11.0b0", "3.10.11", "3.10.10", "3.10.9", "3.10.8", "3.10.7", "3.10.6", "3.10.5", "3.10.4", "3.10.3", "3.10.2", "3.10.1", "3.10.0", "3.10.6rc2", "3.10.6rc1", "3.10.0rc0", "3.10.6rc0", "3.10.11rc0", "3.10.0b1", "3.9.5", "3.9.4", "3.9.3", "3.9.2", "3.9.1", "3.9.0", "3.9.0rc0", "3.9.4rc0", "3.9.0b1", "3.9.0b0", "3.8.6", "3.8.5", "3.8.4", "3.8.3", "3.8.2", "3.8.1", "3.8.0", "3.8.0b0", "3.8.0a7", "3.7.4", "3.7.4.post0", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.7.0b1", "3.7.0b0", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.6.1b4", "3.6.1b3", "3.6.0b0", "3.6.0a12", "3.6.0a11", "3.6.0a9", "3.6.0a8", "3.6.0a7", "3.6.0a6", "3.6.0a5", "3.6.0a4", "3.6.0a3", "3.6.0a2", "3.6.2a2", "3.6.0a1", "3.6.2a1", "3.6.0a0", "3.6.2a0", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.5.0b3", "3.5.0b2", "3.5.0b1", "3.5.0a1", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.4.0b2", "3.4.0b1", "3.4.0a3", "3.4.0a0", "3.3.2", "3.3.1", "3.3.0", "3.3.2a0", "3.3.0a0", "3.2.1", "3.2.0", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.9", "3.0.8", "3.0.7", "3.0.6", "3.0.5", "3.0.4", "3.0.3", "3.0.2", "3.0.1", "3.0.0", "3.0.0b4", "3.0.0b3", "3.0.0b2", "3.0.0b1", "3.0.0b0", "2.3.10", "2.3.9", "2.3.8", "2.3.7", "2.3.6", "2.3.5", "2.3.4", "2.3.3", "2.3.2", "2.3.1", "2.3.0", "2.3.2b3", "2.3.2b2", "2.3.0a4", "2.3.0a3", "2.3.0a2", "2.3.0a1", "2.3.1a1", "2.2.5", "2.2.4", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.0", "2.0.7", "2.0.6", "2.0.5", "2.0.4", "2.0.3", "2.0.2", "2.0.1", "2.0.0", "2.0.0rc1", "1.3.5", "1.3.4", "1.3.3", "1.3.2", "1.3.1", "1.3.0", "1.2.0", "1.1.6", "1.1.5", "1.1.4", "1.1.3", "1.1.2", "1.1.1", "1.1.0", "1.0.5", "1.0.3", "1.0.2", "1.0.1", "1.0.0", "0.22.5", "0.22.4", "0.22.3", "0.22.2", "0.22.1", "0.22.0", "0.22.0b6", "0.22.0b5", "0.22.0b4", "0.22.0b3", "0.22.0b2", "0.22.0b1", "0.22.0b0", "0.22.0a0", "0.21.6", "0.21.5", "0.21.4", "0.21.2", "0.21.1", "0.21.0", "0.20.2", "0.20.1", "0.20.0", "0.19.0", "0.18.4", "0.18.3", "0.18.2", "0.18.1", "0.18.0", "0.17.4", "0.17.3", "0.17.2", "0.17.1", "0.17.0", "0.16.6", "0.16.5", "0.16.4", "0.16.3", "0.16.2", "0.16.1", "0.16.0", "0.15.3", "0.15.2", "0.15.1", "0.15.0", "0.14.4", "0.14.3", "0.14.2", "0.14.1", "0.14.0", "0.13.1", "0.13.0", "0.12.0", "0.11.0", "0.10.2", "0.10.1", "0.10.0", "0.9.3", "0.9.2", "0.9.1", "0.9.0", "0.8.4", "0.8.3", "0.8.2", "0.8.1", "0.8.0", "0.7.3", "0.7.2", "0.7.1", "0.7.0", "0.6.5", "0.6.4", "0.6.3", "0.6.2", "0.6.1", "0.6.0", "0.5.0", "0.4.4", "0.4.3", "0.4.2", "0.4.1", "0.4", "0.3", "0.2", "0.1"]
Secure versions: [3.13.4, 3.13.5, 4.0.0a0, 4.0.0a1]
Recommendation: Update to version 3.13.5.

AIOHTTP vulnerable to DoS when bypassing asserts

Published date: 2026-01-05T23:10:15Z
CVE: CVE-2025-69227
Links:

Summary

When assert statements are bypassed, an infinite loop can occur, resulting in a DoS attack when processing a POST body.

Impact

If optimisations are enabled (-O or PYTHONOPTIMIZE=1), and the application includes a handler that uses the Request.post() method, then an attacker may be able to execute a DoS attack with a specially crafted message.


Patch: https://github.com/aio-libs/aiohttp/commit/bc1319ec3cbff9438a758951a30907b072561259

Affected versions: ["3.13.2", "3.13.1", "3.13.0", "3.12.15", "3.12.14", "3.12.13", "3.12.12", "3.12.11", "3.12.10", "3.12.9", "3.12.8", "3.12.7", "3.12.6", "3.12.4", "3.12.3", "3.12.2", "3.12.1", "3.12.0", "3.12.0rc1", "3.12.0rc0", "3.12.1rc0", "3.12.7rc0", "3.12.0b3", "3.12.0b2", "3.12.0b1", "3.12.0b0", "3.11.18", "3.11.17", "3.11.16", "3.11.15", "3.11.14", "3.11.13", "3.11.12", "3.11.11", "3.11.10", "3.11.9", "3.11.8", "3.11.7", "3.11.6", "3.11.5", "3.11.4", "3.11.3", "3.11.2", "3.11.1", "3.11.0", "3.11.0rc2", "3.11.0rc1", "3.11.0rc0", "3.11.0b5", "3.11.0b4", "3.11.0b3", "3.11.0b2", "3.11.0b1", "3.11.0b0", "3.10.11", "3.10.10", "3.10.9", "3.10.8", "3.10.7", "3.10.6", "3.10.5", "3.10.4", "3.10.3", "3.10.2", "3.10.1", "3.10.0", "3.10.6rc2", "3.10.6rc1", "3.10.0rc0", "3.10.6rc0", "3.10.11rc0", "3.10.0b1", "3.9.5", "3.9.4", "3.9.3", "3.9.2", "3.9.1", "3.9.0", "3.9.0rc0", "3.9.4rc0", "3.9.0b1", "3.9.0b0", "3.8.6", "3.8.5", "3.8.4", "3.8.3", "3.8.2", "3.8.1", "3.8.0", "3.8.0b0", "3.8.0a7", "3.7.4", "3.7.4.post0", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.7.0b1", "3.7.0b0", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.6.1b4", "3.6.1b3", "3.6.0b0", "3.6.0a12", "3.6.0a11", "3.6.0a9", "3.6.0a8", "3.6.0a7", "3.6.0a6", "3.6.0a5", "3.6.0a4", "3.6.0a3", "3.6.0a2", "3.6.2a2", "3.6.0a1", "3.6.2a1", "3.6.0a0", "3.6.2a0", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.5.0b3", "3.5.0b2", "3.5.0b1", "3.5.0a1", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.4.0b2", "3.4.0b1", "3.4.0a3", "3.4.0a0", "3.3.2", "3.3.1", "3.3.0", "3.3.2a0", "3.3.0a0", "3.2.1", "3.2.0", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.9", "3.0.8", "3.0.7", "3.0.6", "3.0.5", "3.0.4", "3.0.3", "3.0.2", "3.0.1", "3.0.0", "3.0.0b4", "3.0.0b3", "3.0.0b2", "3.0.0b1", "3.0.0b0", "2.3.10", "2.3.9", "2.3.8", "2.3.7", "2.3.6", "2.3.5", "2.3.4", "2.3.3", "2.3.2", "2.3.1", "2.3.0", "2.3.2b3", "2.3.2b2", "2.3.0a4", "2.3.0a3", "2.3.0a2", "2.3.0a1", "2.3.1a1", "2.2.5", "2.2.4", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.0", "2.0.7", "2.0.6", "2.0.5", "2.0.4", "2.0.3", "2.0.2", "2.0.1", "2.0.0", "2.0.0rc1", "1.3.5", "1.3.4", "1.3.3", "1.3.2", "1.3.1", "1.3.0", "1.2.0", "1.1.6", "1.1.5", "1.1.4", "1.1.3", "1.1.2", "1.1.1", "1.1.0", "1.0.5", "1.0.3", "1.0.2", "1.0.1", "1.0.0", "0.22.5", "0.22.4", "0.22.3", "0.22.2", "0.22.1", "0.22.0", "0.22.0b6", "0.22.0b5", "0.22.0b4", "0.22.0b3", "0.22.0b2", "0.22.0b1", "0.22.0b0", "0.22.0a0", "0.21.6", "0.21.5", "0.21.4", "0.21.2", "0.21.1", "0.21.0", "0.20.2", "0.20.1", "0.20.0", "0.19.0", "0.18.4", "0.18.3", "0.18.2", "0.18.1", "0.18.0", "0.17.4", "0.17.3", "0.17.2", "0.17.1", "0.17.0", "0.16.6", "0.16.5", "0.16.4", "0.16.3", "0.16.2", "0.16.1", "0.16.0", "0.15.3", "0.15.2", "0.15.1", "0.15.0", "0.14.4", "0.14.3", "0.14.2", "0.14.1", "0.14.0", "0.13.1", "0.13.0", "0.12.0", "0.11.0", "0.10.2", "0.10.1", "0.10.0", "0.9.3", "0.9.2", "0.9.1", "0.9.0", "0.8.4", "0.8.3", "0.8.2", "0.8.1", "0.8.0", "0.7.3", "0.7.2", "0.7.1", "0.7.0", "0.6.5", "0.6.4", "0.6.3", "0.6.2", "0.6.1", "0.6.0", "0.5.0", "0.4.4", "0.4.3", "0.4.2", "0.4.1", "0.4", "0.3", "0.2", "0.1"]
Secure versions: [3.13.4, 3.13.5, 4.0.0a0, 4.0.0a1]
Recommendation: Update to version 3.13.5.

AIOHTTP has a Multipart Header Size Bypass

Published date: 2026-04-01T21:43:07Z
CVE: CVE-2026-34516
Links:

Summary

A response with an excessive number of multipart headers may be allowed to use more memory than intended, potentially allowing a DoS vulnerability.

Impact

Multipart headers were not subject to the same size restrictions in place for normal headers, potentially allowing substantially more data to be loaded into memory than intended. However, other restrictions in place limit the impact of this vulnerability.


Patch: https://github.com/aio-libs/aiohttp/commit/8a74257b3804c9aac0bf644af93070f68f6c5a6f

Affected versions: ["3.13.3", "3.13.2", "3.13.1", "3.13.0", "3.12.15", "3.12.14", "3.12.13", "3.12.12", "3.12.11", "3.12.10", "3.12.9", "3.12.8", "3.12.7", "3.12.6", "3.12.4", "3.12.3", "3.12.2", "3.12.1", "3.12.0", "3.12.0rc1", "3.12.0rc0", "3.12.1rc0", "3.12.7rc0", "3.12.0b3", "3.12.0b2", "3.12.0b1", "3.12.0b0", "3.11.18", "3.11.17", "3.11.16", "3.11.15", "3.11.14", "3.11.13", "3.11.12", "3.11.11", "3.11.10", "3.11.9", "3.11.8", "3.11.7", "3.11.6", "3.11.5", "3.11.4", "3.11.3", "3.11.2", "3.11.1", "3.11.0", "3.11.0rc2", "3.11.0rc1", "3.11.0rc0", "3.11.0b5", "3.11.0b4", "3.11.0b3", "3.11.0b2", "3.11.0b1", "3.11.0b0", "3.10.11", "3.10.10", "3.10.9", "3.10.8", "3.10.7", "3.10.6", "3.10.5", "3.10.4", "3.10.3", "3.10.2", "3.10.1", "3.10.0", "3.10.6rc2", "3.10.6rc1", "3.10.0rc0", "3.10.6rc0", "3.10.11rc0", "3.10.0b1", "3.9.5", "3.9.4", "3.9.3", "3.9.2", "3.9.1", "3.9.0", "3.9.0rc0", "3.9.4rc0", "3.9.0b1", "3.9.0b0", "3.8.6", "3.8.5", "3.8.4", "3.8.3", "3.8.2", "3.8.1", "3.8.0", "3.8.0b0", "3.8.0a7", "3.7.4", "3.7.4.post0", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.7.0b1", "3.7.0b0", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.6.1b4", "3.6.1b3", "3.6.0b0", "3.6.0a12", "3.6.0a11", "3.6.0a9", "3.6.0a8", "3.6.0a7", "3.6.0a6", "3.6.0a5", "3.6.0a4", "3.6.0a3", "3.6.0a2", "3.6.2a2", "3.6.0a1", "3.6.2a1", "3.6.0a0", "3.6.2a0", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.5.0b3", "3.5.0b2", "3.5.0b1", "3.5.0a1", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.4.0b2", "3.4.0b1", "3.4.0a3", "3.4.0a0", "3.3.2", "3.3.1", "3.3.0", "3.3.2a0", "3.3.0a0", "3.2.1", "3.2.0", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.9", "3.0.8", "3.0.7", "3.0.6", "3.0.5", "3.0.4", "3.0.3", "3.0.2", "3.0.1", "3.0.0", "3.0.0b4", "3.0.0b3", "3.0.0b2", "3.0.0b1", "3.0.0b0", "2.3.10", "2.3.9", "2.3.8", "2.3.7", "2.3.6", "2.3.5", "2.3.4", "2.3.3", "2.3.2", "2.3.1", "2.3.0", "2.3.2b3", "2.3.2b2", "2.3.0a4", "2.3.0a3", "2.3.0a2", "2.3.0a1", "2.3.1a1", "2.2.5", "2.2.4", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.0", "2.0.7", "2.0.6", "2.0.5", "2.0.4", "2.0.3", "2.0.2", "2.0.1", "2.0.0", "2.0.0rc1", "1.3.5", "1.3.4", "1.3.3", "1.3.2", "1.3.1", "1.3.0", "1.2.0", "1.1.6", "1.1.5", "1.1.4", "1.1.3", "1.1.2", "1.1.1", "1.1.0", "1.0.5", "1.0.3", "1.0.2", "1.0.1", "1.0.0", "0.22.5", "0.22.4", "0.22.3", "0.22.2", "0.22.1", "0.22.0", "0.22.0b6", "0.22.0b5", "0.22.0b4", "0.22.0b3", "0.22.0b2", "0.22.0b1", "0.22.0b0", "0.22.0a0", "0.21.6", "0.21.5", "0.21.4", "0.21.2", "0.21.1", "0.21.0", "0.20.2", "0.20.1", "0.20.0", "0.19.0", "0.18.4", "0.18.3", "0.18.2", "0.18.1", "0.18.0", "0.17.4", "0.17.3", "0.17.2", "0.17.1", "0.17.0", "0.16.6", "0.16.5", "0.16.4", "0.16.3", "0.16.2", "0.16.1", "0.16.0", "0.15.3", "0.15.2", "0.15.1", "0.15.0", "0.14.4", "0.14.3", "0.14.2", "0.14.1", "0.14.0", "0.13.1", "0.13.0", "0.12.0", "0.11.0", "0.10.2", "0.10.1", "0.10.0", "0.9.3", "0.9.2", "0.9.1", "0.9.0", "0.8.4", "0.8.3", "0.8.2", "0.8.1", "0.8.0", "0.7.3", "0.7.2", "0.7.1", "0.7.0", "0.6.5", "0.6.4", "0.6.3", "0.6.2", "0.6.1", "0.6.0", "0.5.0", "0.4.4", "0.4.3", "0.4.2", "0.4.1", "0.4", "0.3", "0.2", "0.1"]
Secure versions: [3.13.4, 3.13.5, 4.0.0a0, 4.0.0a1]
Recommendation: Update to version 3.13.5.

AIOHTTP has unicode match groups in regexes for ASCII protocol elements

Published date: 2026-01-05T23:09:30Z
CVE: CVE-2025-69225
Links:

Summary

The parser allows non-ASCII decimals to be present in the Range header.

Impact

There is no known impact, but there is the possibility that there's a method to exploit a request smuggling vulnerability.


Patch: https://github.com/aio-libs/aiohttp/commit/c7b7a044f88c71cefda95ec75cdcfaa4792b3b96

Affected versions: ["3.13.2", "3.13.1", "3.13.0", "3.12.15", "3.12.14", "3.12.13", "3.12.12", "3.12.11", "3.12.10", "3.12.9", "3.12.8", "3.12.7", "3.12.6", "3.12.4", "3.12.3", "3.12.2", "3.12.1", "3.12.0", "3.12.0rc1", "3.12.0rc0", "3.12.1rc0", "3.12.7rc0", "3.12.0b3", "3.12.0b2", "3.12.0b1", "3.12.0b0", "3.11.18", "3.11.17", "3.11.16", "3.11.15", "3.11.14", "3.11.13", "3.11.12", "3.11.11", "3.11.10", "3.11.9", "3.11.8", "3.11.7", "3.11.6", "3.11.5", "3.11.4", "3.11.3", "3.11.2", "3.11.1", "3.11.0", "3.11.0rc2", "3.11.0rc1", "3.11.0rc0", "3.11.0b5", "3.11.0b4", "3.11.0b3", "3.11.0b2", "3.11.0b1", "3.11.0b0", "3.10.11", "3.10.10", "3.10.9", "3.10.8", "3.10.7", "3.10.6", "3.10.5", "3.10.4", "3.10.3", "3.10.2", "3.10.1", "3.10.0", "3.10.6rc2", "3.10.6rc1", "3.10.0rc0", "3.10.6rc0", "3.10.11rc0", "3.10.0b1", "3.9.5", "3.9.4", "3.9.3", "3.9.2", "3.9.1", "3.9.0", "3.9.0rc0", "3.9.4rc0", "3.9.0b1", "3.9.0b0", "3.8.6", "3.8.5", "3.8.4", "3.8.3", "3.8.2", "3.8.1", "3.8.0", "3.8.0b0", "3.8.0a7", "3.7.4", "3.7.4.post0", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.7.0b1", "3.7.0b0", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.6.1b4", "3.6.1b3", "3.6.0b0", "3.6.0a12", "3.6.0a11", "3.6.0a9", "3.6.0a8", "3.6.0a7", "3.6.0a6", "3.6.0a5", "3.6.0a4", "3.6.0a3", "3.6.0a2", "3.6.2a2", "3.6.0a1", "3.6.2a1", "3.6.0a0", "3.6.2a0", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.5.0b3", "3.5.0b2", "3.5.0b1", "3.5.0a1", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.4.0b2", "3.4.0b1", "3.4.0a3", "3.4.0a0", "3.3.2", "3.3.1", "3.3.0", "3.3.2a0", "3.3.0a0", "3.2.1", "3.2.0", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.9", "3.0.8", "3.0.7", "3.0.6", "3.0.5", "3.0.4", "3.0.3", "3.0.2", "3.0.1", "3.0.0", "3.0.0b4", "3.0.0b3", "3.0.0b2", "3.0.0b1", "3.0.0b0", "2.3.10", "2.3.9", "2.3.8", "2.3.7", "2.3.6", "2.3.5", "2.3.4", "2.3.3", "2.3.2", "2.3.1", "2.3.0", "2.3.2b3", "2.3.2b2", "2.3.0a4", "2.3.0a3", "2.3.0a2", "2.3.0a1", "2.3.1a1", "2.2.5", "2.2.4", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.0", "2.0.7", "2.0.6", "2.0.5", "2.0.4", "2.0.3", "2.0.2", "2.0.1", "2.0.0", "2.0.0rc1", "1.3.5", "1.3.4", "1.3.3", "1.3.2", "1.3.1", "1.3.0", "1.2.0", "1.1.6", "1.1.5", "1.1.4", "1.1.3", "1.1.2", "1.1.1", "1.1.0", "1.0.5", "1.0.3", "1.0.2", "1.0.1", "1.0.0", "0.22.5", "0.22.4", "0.22.3", "0.22.2", "0.22.1", "0.22.0", "0.22.0b6", "0.22.0b5", "0.22.0b4", "0.22.0b3", "0.22.0b2", "0.22.0b1", "0.22.0b0", "0.22.0a0", "0.21.6", "0.21.5", "0.21.4", "0.21.2", "0.21.1", "0.21.0", "0.20.2", "0.20.1", "0.20.0", "0.19.0", "0.18.4", "0.18.3", "0.18.2", "0.18.1", "0.18.0", "0.17.4", "0.17.3", "0.17.2", "0.17.1", "0.17.0", "0.16.6", "0.16.5", "0.16.4", "0.16.3", "0.16.2", "0.16.1", "0.16.0", "0.15.3", "0.15.2", "0.15.1", "0.15.0", "0.14.4", "0.14.3", "0.14.2", "0.14.1", "0.14.0", "0.13.1", "0.13.0", "0.12.0", "0.11.0", "0.10.2", "0.10.1", "0.10.0", "0.9.3", "0.9.2", "0.9.1", "0.9.0", "0.8.4", "0.8.3", "0.8.2", "0.8.1", "0.8.0", "0.7.3", "0.7.2", "0.7.1", "0.7.0", "0.6.5", "0.6.4", "0.6.3", "0.6.2", "0.6.1", "0.6.0", "0.5.0", "0.4.4", "0.4.3", "0.4.2", "0.4.1", "0.4", "0.3", "0.2", "0.1"]
Secure versions: [3.13.4, 3.13.5, 4.0.0a0, 4.0.0a1]
Recommendation: Update to version 3.13.5.

AIOHTTP has HTTP response splitting via \r in reason phrase

Published date: 2026-04-01T21:48:24Z
CVE: CVE-2026-34519
Links:

Summary

An attacker who controls the reason parameter when creating a Response may be able to inject extra headers or similar exploits.

Impact

In the unlikely situation that an application allows untrusted data to be used in the response's reason parameter, then an attacker could manipulate the response to send something different from what the developer intended.


Patch: https://github.com/aio-libs/aiohttp/commit/53b35a2f8869c37a133e60bf1a82a1c01642ba2b

Affected versions: ["3.13.3", "3.13.2", "3.13.1", "3.13.0", "3.12.15", "3.12.14", "3.12.13", "3.12.12", "3.12.11", "3.12.10", "3.12.9", "3.12.8", "3.12.7", "3.12.6", "3.12.4", "3.12.3", "3.12.2", "3.12.1", "3.12.0", "3.12.0rc1", "3.12.0rc0", "3.12.1rc0", "3.12.7rc0", "3.12.0b3", "3.12.0b2", "3.12.0b1", "3.12.0b0", "3.11.18", "3.11.17", "3.11.16", "3.11.15", "3.11.14", "3.11.13", "3.11.12", "3.11.11", "3.11.10", "3.11.9", "3.11.8", "3.11.7", "3.11.6", "3.11.5", "3.11.4", "3.11.3", "3.11.2", "3.11.1", "3.11.0", "3.11.0rc2", "3.11.0rc1", "3.11.0rc0", "3.11.0b5", "3.11.0b4", "3.11.0b3", "3.11.0b2", "3.11.0b1", "3.11.0b0", "3.10.11", "3.10.10", "3.10.9", "3.10.8", "3.10.7", "3.10.6", "3.10.5", "3.10.4", "3.10.3", "3.10.2", "3.10.1", "3.10.0", "3.10.6rc2", "3.10.6rc1", "3.10.0rc0", "3.10.6rc0", "3.10.11rc0", "3.10.0b1", "3.9.5", "3.9.4", "3.9.3", "3.9.2", "3.9.1", "3.9.0", "3.9.0rc0", "3.9.4rc0", "3.9.0b1", "3.9.0b0", "3.8.6", "3.8.5", "3.8.4", "3.8.3", "3.8.2", "3.8.1", "3.8.0", "3.8.0b0", "3.8.0a7", "3.7.4", "3.7.4.post0", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.7.0b1", "3.7.0b0", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.6.1b4", "3.6.1b3", "3.6.0b0", "3.6.0a12", "3.6.0a11", "3.6.0a9", "3.6.0a8", "3.6.0a7", "3.6.0a6", "3.6.0a5", "3.6.0a4", "3.6.0a3", "3.6.0a2", "3.6.2a2", "3.6.0a1", "3.6.2a1", "3.6.0a0", "3.6.2a0", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.5.0b3", "3.5.0b2", "3.5.0b1", "3.5.0a1", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.4.0b2", "3.4.0b1", "3.4.0a3", "3.4.0a0", "3.3.2", "3.3.1", "3.3.0", "3.3.2a0", "3.3.0a0", "3.2.1", "3.2.0", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.9", "3.0.8", "3.0.7", "3.0.6", "3.0.5", "3.0.4", "3.0.3", "3.0.2", "3.0.1", "3.0.0", "3.0.0b4", "3.0.0b3", "3.0.0b2", "3.0.0b1", "3.0.0b0", "2.3.10", "2.3.9", "2.3.8", "2.3.7", "2.3.6", "2.3.5", "2.3.4", "2.3.3", "2.3.2", "2.3.1", "2.3.0", "2.3.2b3", "2.3.2b2", "2.3.0a4", "2.3.0a3", "2.3.0a2", "2.3.0a1", "2.3.1a1", "2.2.5", "2.2.4", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.0", "2.0.7", "2.0.6", "2.0.5", "2.0.4", "2.0.3", "2.0.2", "2.0.1", "2.0.0", "2.0.0rc1", "1.3.5", "1.3.4", "1.3.3", "1.3.2", "1.3.1", "1.3.0", "1.2.0", "1.1.6", "1.1.5", "1.1.4", "1.1.3", "1.1.2", "1.1.1", "1.1.0", "1.0.5", "1.0.3", "1.0.2", "1.0.1", "1.0.0", "0.22.5", "0.22.4", "0.22.3", "0.22.2", "0.22.1", "0.22.0", "0.22.0b6", "0.22.0b5", "0.22.0b4", "0.22.0b3", "0.22.0b2", "0.22.0b1", "0.22.0b0", "0.22.0a0", "0.21.6", "0.21.5", "0.21.4", "0.21.2", "0.21.1", "0.21.0", "0.20.2", "0.20.1", "0.20.0", "0.19.0", "0.18.4", "0.18.3", "0.18.2", "0.18.1", "0.18.0", "0.17.4", "0.17.3", "0.17.2", "0.17.1", "0.17.0", "0.16.6", "0.16.5", "0.16.4", "0.16.3", "0.16.2", "0.16.1", "0.16.0", "0.15.3", "0.15.2", "0.15.1", "0.15.0", "0.14.4", "0.14.3", "0.14.2", "0.14.1", "0.14.0", "0.13.1", "0.13.0", "0.12.0", "0.11.0", "0.10.2", "0.10.1", "0.10.0", "0.9.3", "0.9.2", "0.9.1", "0.9.0", "0.8.4", "0.8.3", "0.8.2", "0.8.1", "0.8.0", "0.7.3", "0.7.2", "0.7.1", "0.7.0", "0.6.5", "0.6.4", "0.6.3", "0.6.2", "0.6.1", "0.6.0", "0.5.0", "0.4.4", "0.4.3", "0.4.2", "0.4.1", "0.4", "0.3", "0.2", "0.1"]
Secure versions: [3.13.4, 3.13.5, 4.0.0a0, 4.0.0a1]
Recommendation: Update to version 3.13.5.

AIOHTTP affected by UNC SSRF/NTLMv2 Credential Theft/Local File Read in static resource handler on Windows

Published date: 2026-04-01T21:26:36Z
CVE: CVE-2026-34515
Links:

Summary

On Windows the static resource handler may expose information about a NTLMv2 remote path.

Impact

If an application is running on Windows, and using aiohttp's static resource handler (not recommended in production), then it may be possible for an attacker to extract the hash from an NTLMv2 path and then extract the user's credentials from there.


Patch: https://github.com/aio-libs/aiohttp/commit/0ae2aa076c84573df83fc1fdc39eec0f5862fe3d

Affected versions: ["3.13.3", "3.13.2", "3.13.1", "3.13.0", "3.12.15", "3.12.14", "3.12.13", "3.12.12", "3.12.11", "3.12.10", "3.12.9", "3.12.8", "3.12.7", "3.12.6", "3.12.4", "3.12.3", "3.12.2", "3.12.1", "3.12.0", "3.12.0rc1", "3.12.0rc0", "3.12.1rc0", "3.12.7rc0", "3.12.0b3", "3.12.0b2", "3.12.0b1", "3.12.0b0", "3.11.18", "3.11.17", "3.11.16", "3.11.15", "3.11.14", "3.11.13", "3.11.12", "3.11.11", "3.11.10", "3.11.9", "3.11.8", "3.11.7", "3.11.6", "3.11.5", "3.11.4", "3.11.3", "3.11.2", "3.11.1", "3.11.0", "3.11.0rc2", "3.11.0rc1", "3.11.0rc0", "3.11.0b5", "3.11.0b4", "3.11.0b3", "3.11.0b2", "3.11.0b1", "3.11.0b0", "3.10.11", "3.10.10", "3.10.9", "3.10.8", "3.10.7", "3.10.6", "3.10.5", "3.10.4", "3.10.3", "3.10.2", "3.10.1", "3.10.0", "3.10.6rc2", "3.10.6rc1", "3.10.0rc0", "3.10.6rc0", "3.10.11rc0", "3.10.0b1", "3.9.5", "3.9.4", "3.9.3", "3.9.2", "3.9.1", "3.9.0", "3.9.0rc0", "3.9.4rc0", "3.9.0b1", "3.9.0b0", "3.8.6", "3.8.5", "3.8.4", "3.8.3", "3.8.2", "3.8.1", "3.8.0", "3.8.0b0", "3.8.0a7", "3.7.4", "3.7.4.post0", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.7.0b1", "3.7.0b0", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.6.1b4", "3.6.1b3", "3.6.0b0", "3.6.0a12", "3.6.0a11", "3.6.0a9", "3.6.0a8", "3.6.0a7", "3.6.0a6", "3.6.0a5", "3.6.0a4", "3.6.0a3", "3.6.0a2", "3.6.2a2", "3.6.0a1", "3.6.2a1", "3.6.0a0", "3.6.2a0", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.5.0b3", "3.5.0b2", "3.5.0b1", "3.5.0a1", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.4.0b2", "3.4.0b1", "3.4.0a3", "3.4.0a0", "3.3.2", "3.3.1", "3.3.0", "3.3.2a0", "3.3.0a0", "3.2.1", "3.2.0", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.9", "3.0.8", "3.0.7", "3.0.6", "3.0.5", "3.0.4", "3.0.3", "3.0.2", "3.0.1", "3.0.0", "3.0.0b4", "3.0.0b3", "3.0.0b2", "3.0.0b1", "3.0.0b0", "2.3.10", "2.3.9", "2.3.8", "2.3.7", "2.3.6", "2.3.5", "2.3.4", "2.3.3", "2.3.2", "2.3.1", "2.3.0", "2.3.2b3", "2.3.2b2", "2.3.0a4", "2.3.0a3", "2.3.0a2", "2.3.0a1", "2.3.1a1", "2.2.5", "2.2.4", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.0", "2.0.7", "2.0.6", "2.0.5", "2.0.4", "2.0.3", "2.0.2", "2.0.1", "2.0.0", "2.0.0rc1", "1.3.5", "1.3.4", "1.3.3", "1.3.2", "1.3.1", "1.3.0", "1.2.0", "1.1.6", "1.1.5", "1.1.4", "1.1.3", "1.1.2", "1.1.1", "1.1.0", "1.0.5", "1.0.3", "1.0.2", "1.0.1", "1.0.0", "0.22.5", "0.22.4", "0.22.3", "0.22.2", "0.22.1", "0.22.0", "0.22.0b6", "0.22.0b5", "0.22.0b4", "0.22.0b3", "0.22.0b2", "0.22.0b1", "0.22.0b0", "0.22.0a0", "0.21.6", "0.21.5", "0.21.4", "0.21.2", "0.21.1", "0.21.0", "0.20.2", "0.20.1", "0.20.0", "0.19.0", "0.18.4", "0.18.3", "0.18.2", "0.18.1", "0.18.0", "0.17.4", "0.17.3", "0.17.2", "0.17.1", "0.17.0", "0.16.6", "0.16.5", "0.16.4", "0.16.3", "0.16.2", "0.16.1", "0.16.0", "0.15.3", "0.15.2", "0.15.1", "0.15.0", "0.14.4", "0.14.3", "0.14.2", "0.14.1", "0.14.0", "0.13.1", "0.13.0", "0.12.0", "0.11.0", "0.10.2", "0.10.1", "0.10.0", "0.9.3", "0.9.2", "0.9.1", "0.9.0", "0.8.4", "0.8.3", "0.8.2", "0.8.1", "0.8.0", "0.7.3", "0.7.2", "0.7.1", "0.7.0", "0.6.5", "0.6.4", "0.6.3", "0.6.2", "0.6.1", "0.6.0", "0.5.0", "0.4.4", "0.4.3", "0.4.2", "0.4.1", "0.4", "0.3", "0.2", "0.1"]
Secure versions: [3.13.4, 3.13.5, 4.0.0a0, 4.0.0a1]
Recommendation: Update to version 3.13.5.

aiohttp has vulnerable dependency that is vulnerable to request smuggling

Published date: 2023-11-27T23:15:38Z
Links:

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+).

Affected versions: ["3.8.5", "3.8.4", "3.8.3", "3.8.2", "3.8.1", "3.8.0", "3.8.0b0", "3.8.0a7", "3.7.4", "3.7.4.post0", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.7.0b1", "3.7.0b0", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.6.1b4", "3.6.1b3", "3.6.0b0", "3.6.0a12", "3.6.0a11", "3.6.0a9", "3.6.0a8", "3.6.0a7", "3.6.0a6", "3.6.0a5", "3.6.0a4", "3.6.0a3", "3.6.0a2", "3.6.2a2", "3.6.0a1", "3.6.2a1", "3.6.0a0", "3.6.2a0", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.5.0b3", "3.5.0b2", "3.5.0b1", "3.5.0a1", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.4.0b2", "3.4.0b1", "3.4.0a3", "3.4.0a0", "3.3.2", "3.3.1", "3.3.0", "3.3.2a0", "3.3.0a0", "3.2.1", "3.2.0", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.9", "3.0.8", "3.0.7", "3.0.6", "3.0.5", "3.0.4", "3.0.3", "3.0.2", "3.0.1", "3.0.0", "3.0.0b4", "3.0.0b3", "3.0.0b2", "3.0.0b1", "3.0.0b0", "2.3.10", "2.3.9", "2.3.8", "2.3.7", "2.3.6", "2.3.5", "2.3.4", "2.3.3", "2.3.2", "2.3.1", "2.3.0", "2.3.2b3", "2.3.2b2", "2.3.0a4", "2.3.0a3", "2.3.0a2", "2.3.0a1", "2.3.1a1", "2.2.5", "2.2.4", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.0", "2.0.7", "2.0.6", "2.0.5", "2.0.4", "2.0.3", "2.0.2", "2.0.1", "2.0.0", "2.0.0rc1", "1.3.5", "1.3.4", "1.3.3", "1.3.2", "1.3.1", "1.3.0", "1.2.0", "1.1.6", "1.1.5", "1.1.4", "1.1.3", "1.1.2", "1.1.1", "1.1.0", "1.0.5", "1.0.3", "1.0.2", "1.0.1", "1.0.0", "0.22.5", "0.22.4", "0.22.3", "0.22.2", "0.22.1", "0.22.0", "0.22.0b6", "0.22.0b5", "0.22.0b4", "0.22.0b3", "0.22.0b2", "0.22.0b1", "0.22.0b0", "0.22.0a0", "0.21.6", "0.21.5", "0.21.4", "0.21.2", "0.21.1", "0.21.0", "0.20.2", "0.20.1", "0.20.0", "0.19.0", "0.18.4", "0.18.3", "0.18.2", "0.18.1", "0.18.0", "0.17.4", "0.17.3", "0.17.2", "0.17.1", "0.17.0", "0.16.6", "0.16.5", "0.16.4", "0.16.3", "0.16.2", "0.16.1", "0.16.0", "0.15.3", "0.15.2", "0.15.1", "0.15.0", "0.14.4", "0.14.3", "0.14.2", "0.14.1", "0.14.0", "0.13.1", "0.13.0", "0.12.0", "0.11.0", "0.10.2", "0.10.1", "0.10.0", "0.9.3", "0.9.2", "0.9.1", "0.9.0", "0.8.4", "0.8.3", "0.8.2", "0.8.1", "0.8.0", "0.7.3", "0.7.2", "0.7.1", "0.7.0", "0.6.5", "0.6.4", "0.6.3", "0.6.2", "0.6.1", "0.6.0", "0.5.0", "0.4.4", "0.4.3", "0.4.2", "0.4.1", "0.4", "0.3", "0.2", "0.1"]
Secure versions: [3.13.4, 3.13.5, 4.0.0a0, 4.0.0a1]
Recommendation: Update to version 3.13.5.

aiohttp's ClientSession is vulnerable to CRLF injection via version

Published date: 2023-11-27T23:17:42Z
CVE: CVE-2023-49081
Links:

Summary

Improper validation make it possible for an attacker to modify the HTTP request (e.g. to insert a new header) or even create a new HTTP request if the attacker controls the HTTP version.

Details

The vulnerability only occurs if the attacker can control the HTTP version of the request (including its type). For example if an unvalidated JSON value is used as a version and the attacker is then able to pass an array as the version parameter. Furthermore, the vulnerability only occurs when the Connection header is passed to the headers parameter.

At this point, the library will use the parsed value to create the request. If a list is passed, then it bypasses validation and it is possible to perform CRLF injection.

PoC

The POC below shows an example of providing an unvalidated array as a version: https://gist.github.com/jnovikov/184afb593d9c2114d77f508e0ccd508e

Impact

CRLF injection leading to Request Smuggling.

Workaround

If these specific conditions are met and you are unable to upgrade, then validate the user input to the version parameter to ensure it is a str.

Patch: https://github.com/aio-libs/aiohttp/pull/7835/files

Affected versions: ["3.9.0rc0", "3.9.4rc0", "3.9.0b1", "3.9.0b0", "3.8.6", "3.8.5", "3.8.4", "3.8.3", "3.8.2", "3.8.1", "3.8.0", "3.8.0b0", "3.8.0a7", "3.7.4", "3.7.4.post0", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.7.0b1", "3.7.0b0", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.6.1b4", "3.6.1b3", "3.6.0b0", "3.6.0a12", "3.6.0a11", "3.6.0a9", "3.6.0a8", "3.6.0a7", "3.6.0a6", "3.6.0a5", "3.6.0a4", "3.6.0a3", "3.6.0a2", "3.6.2a2", "3.6.0a1", "3.6.2a1", "3.6.0a0", "3.6.2a0", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.5.0b3", "3.5.0b2", "3.5.0b1", "3.5.0a1", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.4.0b2", "3.4.0b1", "3.4.0a3", "3.4.0a0", "3.3.2", "3.3.1", "3.3.0", "3.3.2a0", "3.3.0a0", "3.2.1", "3.2.0", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.9", "3.0.8", "3.0.7", "3.0.6", "3.0.5", "3.0.4", "3.0.3", "3.0.2", "3.0.1", "3.0.0", "3.0.0b4", "3.0.0b3", "3.0.0b2", "3.0.0b1", "3.0.0b0", "2.3.10", "2.3.9", "2.3.8", "2.3.7", "2.3.6", "2.3.5", "2.3.4", "2.3.3", "2.3.2", "2.3.1", "2.3.0", "2.3.2b3", "2.3.2b2", "2.3.0a4", "2.3.0a3", "2.3.0a2", "2.3.0a1", "2.3.1a1", "2.2.5", "2.2.4", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.0", "2.0.7", "2.0.6", "2.0.5", "2.0.4", "2.0.3", "2.0.2", "2.0.1", "2.0.0", "2.0.0rc1", "1.3.5", "1.3.4", "1.3.3", "1.3.2", "1.3.1", "1.3.0", "1.2.0", "1.1.6", "1.1.5", "1.1.4", "1.1.3", "1.1.2", "1.1.1", "1.1.0", "1.0.5", "1.0.3", "1.0.2", "1.0.1", "1.0.0", "0.22.5", "0.22.4", "0.22.3", "0.22.2", "0.22.1", "0.22.0", "0.22.0b6", "0.22.0b5", "0.22.0b4", "0.22.0b3", "0.22.0b2", "0.22.0b1", "0.22.0b0", "0.22.0a0", "0.21.6", "0.21.5", "0.21.4", "0.21.2", "0.21.1", "0.21.0", "0.20.2", "0.20.1", "0.20.0", "0.19.0", "0.18.4", "0.18.3", "0.18.2", "0.18.1", "0.18.0", "0.17.4", "0.17.3", "0.17.2", "0.17.1", "0.17.0", "0.16.6", "0.16.5", "0.16.4", "0.16.3", "0.16.2", "0.16.1", "0.16.0", "0.15.3", "0.15.2", "0.15.1", "0.15.0", "0.14.4", "0.14.3", "0.14.2", "0.14.1", "0.14.0", "0.13.1", "0.13.0", "0.12.0", "0.11.0", "0.10.2", "0.10.1", "0.10.0", "0.9.3", "0.9.2", "0.9.1", "0.9.0", "0.8.4", "0.8.3", "0.8.2", "0.8.1", "0.8.0", "0.7.3", "0.7.2", "0.7.1", "0.7.0", "0.6.5", "0.6.4", "0.6.3", "0.6.2", "0.6.1", "0.6.0", "0.5.0", "0.4.4", "0.4.3", "0.4.2", "0.4.1", "0.4", "0.3", "0.2", "0.1"]
Secure versions: [3.13.4, 3.13.5, 4.0.0a0, 4.0.0a1]
Recommendation: Update to version 3.13.5.

aiohttp's ClientSession is vulnerable to CRLF injection via method

Published date: 2023-11-27T23:17:24Z
CVE: CVE-2023-49082
Links:

Summary

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.

Details

The vulnerability occurs only if the attacker can control the HTTP method (GET, POST etc.) of the request.

Previous releases performed no validation on the provided value. If an attacker controls the HTTP method it will be used as is and can lead to HTTP request smuggling.

PoC

A minimal example can be found here: https://gist.github.com/jnovikov/7f411ae9fe6a9a7804cf162a3bdbb44b

Impact

If the attacker can control the HTTP version of the request it will be able to modify the request (request smuggling).

Workaround

If unable to upgrade and using user-provided values for the request method, perform manual validation of the user value (e.g. by restricting it to a few known values like GET, POST etc.).

Patch: https://github.com/aio-libs/aiohttp/pull/7806/files

Affected versions: ["3.9.0rc0", "3.9.4rc0", "3.9.0b1", "3.9.0b0", "3.8.6", "3.8.5", "3.8.4", "3.8.3", "3.8.2", "3.8.1", "3.8.0", "3.8.0b0", "3.8.0a7", "3.7.4", "3.7.4.post0", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.7.0b1", "3.7.0b0", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.6.1b4", "3.6.1b3", "3.6.0b0", "3.6.0a12", "3.6.0a11", "3.6.0a9", "3.6.0a8", "3.6.0a7", "3.6.0a6", "3.6.0a5", "3.6.0a4", "3.6.0a3", "3.6.0a2", "3.6.2a2", "3.6.0a1", "3.6.2a1", "3.6.0a0", "3.6.2a0", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.5.0b3", "3.5.0b2", "3.5.0b1", "3.5.0a1", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.4.0b2", "3.4.0b1", "3.4.0a3", "3.4.0a0", "3.3.2", "3.3.1", "3.3.0", "3.3.2a0", "3.3.0a0", "3.2.1", "3.2.0", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.9", "3.0.8", "3.0.7", "3.0.6", "3.0.5", "3.0.4", "3.0.3", "3.0.2", "3.0.1", "3.0.0", "3.0.0b4", "3.0.0b3", "3.0.0b2", "3.0.0b1", "3.0.0b0", "2.3.10", "2.3.9", "2.3.8", "2.3.7", "2.3.6", "2.3.5", "2.3.4", "2.3.3", "2.3.2", "2.3.1", "2.3.0", "2.3.2b3", "2.3.2b2", "2.3.0a4", "2.3.0a3", "2.3.0a2", "2.3.0a1", "2.3.1a1", "2.2.5", "2.2.4", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.0", "2.0.7", "2.0.6", "2.0.5", "2.0.4", "2.0.3", "2.0.2", "2.0.1", "2.0.0", "2.0.0rc1", "1.3.5", "1.3.4", "1.3.3", "1.3.2", "1.3.1", "1.3.0", "1.2.0", "1.1.6", "1.1.5", "1.1.4", "1.1.3", "1.1.2", "1.1.1", "1.1.0", "1.0.5", "1.0.3", "1.0.2", "1.0.1", "1.0.0", "0.22.5", "0.22.4", "0.22.3", "0.22.2", "0.22.1", "0.22.0", "0.22.0b6", "0.22.0b5", "0.22.0b4", "0.22.0b3", "0.22.0b2", "0.22.0b1", "0.22.0b0", "0.22.0a0", "0.21.6", "0.21.5", "0.21.4", "0.21.2", "0.21.1", "0.21.0", "0.20.2", "0.20.1", "0.20.0", "0.19.0", "0.18.4", "0.18.3", "0.18.2", "0.18.1", "0.18.0", "0.17.4", "0.17.3", "0.17.2", "0.17.1", "0.17.0", "0.16.6", "0.16.5", "0.16.4", "0.16.3", "0.16.2", "0.16.1", "0.16.0", "0.15.3", "0.15.2", "0.15.1", "0.15.0", "0.14.4", "0.14.3", "0.14.2", "0.14.1", "0.14.0", "0.13.1", "0.13.0", "0.12.0", "0.11.0", "0.10.2", "0.10.1", "0.10.0", "0.9.3", "0.9.2", "0.9.1", "0.9.0", "0.8.4", "0.8.3", "0.8.2", "0.8.1", "0.8.0", "0.7.3", "0.7.2", "0.7.1", "0.7.0", "0.6.5", "0.6.4", "0.6.3", "0.6.2", "0.6.1", "0.6.0", "0.5.0", "0.4.4", "0.4.3", "0.4.2", "0.4.1", "0.4", "0.3", "0.2", "0.1"]
Secure versions: [3.13.4, 3.13.5, 4.0.0a0, 4.0.0a1]
Recommendation: Update to version 3.13.5.

Withdrawn: Denial of Service in aiohttp

Published date: 2022-06-24T00:00:31Z
CVE: CVE-2022-33124
Links:

Withdrawn

This advisory has been withdrawn because the maintainers of aiohttp and multiple third parties disputed the validity of the issue. There is not sufficient evidence for the claims in the original report.

Original Description

aiohttp v3.8.1 was discovered to contain an invalid IPv6 URL which can lead to a Denial of Service (DoS).

Affected versions: ["3.8.1", "3.8.0", "3.8.0b0", "3.8.0a7", "3.7.4", "3.7.4.post0", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.7.0b1", "3.7.0b0", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.6.1b4", "3.6.1b3", "3.6.0b0", "3.6.0a12", "3.6.0a11", "3.6.0a9", "3.6.0a8", "3.6.0a7", "3.6.0a6", "3.6.0a5", "3.6.0a4", "3.6.0a3", "3.6.0a2", "3.6.2a2", "3.6.0a1", "3.6.2a1", "3.6.0a0", "3.6.2a0", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.5.0b3", "3.5.0b2", "3.5.0b1", "3.5.0a1", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.4.0b2", "3.4.0b1", "3.4.0a3", "3.4.0a0", "3.3.2", "3.3.1", "3.3.0", "3.3.2a0", "3.3.0a0", "3.2.1", "3.2.0", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.9", "3.0.8", "3.0.7", "3.0.6", "3.0.5", "3.0.4", "3.0.3", "3.0.2", "3.0.1", "3.0.0", "3.0.0b4", "3.0.0b3", "3.0.0b2", "3.0.0b1", "3.0.0b0", "2.3.10", "2.3.9", "2.3.8", "2.3.7", "2.3.6", "2.3.5", "2.3.4", "2.3.3", "2.3.2", "2.3.1", "2.3.0", "2.3.2b3", "2.3.2b2", "2.3.0a4", "2.3.0a3", "2.3.0a2", "2.3.0a1", "2.3.1a1", "2.2.5", "2.2.4", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.0", "2.0.7", "2.0.6", "2.0.5", "2.0.4", "2.0.3", "2.0.2", "2.0.1", "2.0.0", "2.0.0rc1", "1.3.5", "1.3.4", "1.3.3", "1.3.2", "1.3.1", "1.3.0", "1.2.0", "1.1.6", "1.1.5", "1.1.4", "1.1.3", "1.1.2", "1.1.1", "1.1.0", "1.0.5", "1.0.3", "1.0.2", "1.0.1", "1.0.0", "0.22.5", "0.22.4", "0.22.3", "0.22.2", "0.22.1", "0.22.0", "0.22.0b6", "0.22.0b5", "0.22.0b4", "0.22.0b3", "0.22.0b2", "0.22.0b1", "0.22.0b0", "0.22.0a0", "0.21.6", "0.21.5", "0.21.4", "0.21.2", "0.21.1", "0.21.0", "0.20.2", "0.20.1", "0.20.0", "0.19.0", "0.18.4", "0.18.3", "0.18.2", "0.18.1", "0.18.0", "0.17.4", "0.17.3", "0.17.2", "0.17.1", "0.17.0", "0.16.6", "0.16.5", "0.16.4", "0.16.3", "0.16.2", "0.16.1", "0.16.0", "0.15.3", "0.15.2", "0.15.1", "0.15.0", "0.14.4", "0.14.3", "0.14.2", "0.14.1", "0.14.0", "0.13.1", "0.13.0", "0.12.0", "0.11.0", "0.10.2", "0.10.1", "0.10.0", "0.9.3", "0.9.2", "0.9.1", "0.9.0", "0.8.4", "0.8.3", "0.8.2", "0.8.1", "0.8.0", "0.7.3", "0.7.2", "0.7.1", "0.7.0", "0.6.5", "0.6.4", "0.6.3", "0.6.2", "0.6.1", "0.6.0", "0.5.0", "0.4.4", "0.4.3", "0.4.2", "0.4.1", "0.4", "0.3", "0.2", "0.1"]
Secure versions: [3.13.4, 3.13.5, 4.0.0a0, 4.0.0a1]
Recommendation: Update to version 3.13.5.

`aiohttp` Open Redirect vulnerability (`normalize_path_middleware` middleware)

Published date: 2021-02-26T02:11:57Z
CVE: CVE-2021-21330
Links:

Impact

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.

Patches

This security problem has been fixed in v3.7.4. Upgrade your dependency as follows: pip install aiohttp >= 3.7.4

Workarounds

If upgrading is not an option for you, a workaround can be to avoid using aiohttp.web_middlewares.normalize_path_middleware in your applications.

References

For more information

If you have any questions or comments about this advisory: * Open an issue in the aiohttp repo * Email us at wk+aio-libs-security@sydorenko.org.ua and/or andrew.svetlov+aio-libs-security@gmail.com

Credit: Jelmer Vernooij and Beast Glatisant.

Affected versions: ["3.7.4.post0", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.7.0b1", "3.7.0b0", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.6.1b4", "3.6.1b3", "3.6.0b0", "3.6.0a12", "3.6.0a11", "3.6.0a9", "3.6.0a8", "3.6.0a7", "3.6.0a6", "3.6.0a5", "3.6.0a4", "3.6.0a3", "3.6.0a2", "3.6.2a2", "3.6.0a1", "3.6.2a1", "3.6.0a0", "3.6.2a0", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.5.0b3", "3.5.0b2", "3.5.0b1", "3.5.0a1", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.4.0b2", "3.4.0b1", "3.4.0a3", "3.4.0a0", "3.3.2", "3.3.1", "3.3.0", "3.3.2a0", "3.3.0a0", "3.2.1", "3.2.0", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.9", "3.0.8", "3.0.7", "3.0.6", "3.0.5", "3.0.4", "3.0.3", "3.0.2", "3.0.1", "3.0.0", "3.0.0b4", "3.0.0b3", "3.0.0b2", "3.0.0b1", "3.0.0b0", "2.3.10", "2.3.9", "2.3.8", "2.3.7", "2.3.6", "2.3.5", "2.3.4", "2.3.3", "2.3.2", "2.3.1", "2.3.0", "2.3.2b3", "2.3.2b2", "2.3.0a4", "2.3.0a3", "2.3.0a2", "2.3.0a1", "2.3.1a1", "2.2.5", "2.2.4", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.0", "2.0.7", "2.0.6", "2.0.5", "2.0.4", "2.0.3", "2.0.2", "2.0.1", "2.0.0", "2.0.0rc1", "1.3.5", "1.3.4", "1.3.3", "1.3.2", "1.3.1", "1.3.0", "1.2.0", "1.1.6", "1.1.5", "1.1.4", "1.1.3", "1.1.2", "1.1.1", "1.1.0", "1.0.5", "1.0.3", "1.0.2", "1.0.1", "1.0.0", "0.22.5", "0.22.4", "0.22.3", "0.22.2", "0.22.1", "0.22.0", "0.22.0b6", "0.22.0b5", "0.22.0b4", "0.22.0b3", "0.22.0b2", "0.22.0b1", "0.22.0b0", "0.22.0a0", "0.21.6", "0.21.5", "0.21.4", "0.21.2", "0.21.1", "0.21.0", "0.20.2", "0.20.1", "0.20.0", "0.19.0", "0.18.4", "0.18.3", "0.18.2", "0.18.1", "0.18.0", "0.17.4", "0.17.3", "0.17.2", "0.17.1", "0.17.0", "0.16.6", "0.16.5", "0.16.4", "0.16.3", "0.16.2", "0.16.1", "0.16.0", "0.15.3", "0.15.2", "0.15.1", "0.15.0", "0.14.4", "0.14.3", "0.14.2", "0.14.1", "0.14.0", "0.13.1", "0.13.0", "0.12.0", "0.11.0", "0.10.2", "0.10.1", "0.10.0", "0.9.3", "0.9.2", "0.9.1", "0.9.0", "0.8.4", "0.8.3", "0.8.2", "0.8.1", "0.8.0", "0.7.3", "0.7.2", "0.7.1", "0.7.0", "0.6.5", "0.6.4", "0.6.3", "0.6.2", "0.6.1", "0.6.0", "0.5.0", "0.4.4", "0.4.3", "0.4.2", "0.4.1", "0.4", "0.3", "0.2", "0.1"]
Secure versions: [3.13.4, 3.13.5, 4.0.0a0, 4.0.0a1]
Recommendation: Update to version 3.13.5.

aiohttp allows unlimited trailer headers, leading to possible uncapped memory usage

Published date: 2026-04-01T19:45:17Z
CVE: CVE-2026-22815
Links:

Summary

Insufficient restrictions in header/trailer handling could cause uncapped memory usage.

Impact

An application could cause memory exhaustion when receiving an attacker controlled request or response. A vulnerable web application could mitigate these risks with a typical reverse proxy configuration.


Patch: https://github.com/aio-libs/aiohttp/commit/0c2e9da51126238a421568eb7c5b53e5b5d17b36

Affected versions: ["3.13.3", "3.13.2", "3.13.1", "3.13.0", "3.12.15", "3.12.14", "3.12.13", "3.12.12", "3.12.11", "3.12.10", "3.12.9", "3.12.8", "3.12.7", "3.12.6", "3.12.4", "3.12.3", "3.12.2", "3.12.1", "3.12.0", "3.12.0rc1", "3.12.0rc0", "3.12.1rc0", "3.12.7rc0", "3.12.0b3", "3.12.0b2", "3.12.0b1", "3.12.0b0", "3.11.18", "3.11.17", "3.11.16", "3.11.15", "3.11.14", "3.11.13", "3.11.12", "3.11.11", "3.11.10", "3.11.9", "3.11.8", "3.11.7", "3.11.6", "3.11.5", "3.11.4", "3.11.3", "3.11.2", "3.11.1", "3.11.0", "3.11.0rc2", "3.11.0rc1", "3.11.0rc0", "3.11.0b5", "3.11.0b4", "3.11.0b3", "3.11.0b2", "3.11.0b1", "3.11.0b0", "3.10.11", "3.10.10", "3.10.9", "3.10.8", "3.10.7", "3.10.6", "3.10.5", "3.10.4", "3.10.3", "3.10.2", "3.10.1", "3.10.0", "3.10.6rc2", "3.10.6rc1", "3.10.0rc0", "3.10.6rc0", "3.10.11rc0", "3.10.0b1", "3.9.5", "3.9.4", "3.9.3", "3.9.2", "3.9.1", "3.9.0", "3.9.0rc0", "3.9.4rc0", "3.9.0b1", "3.9.0b0", "3.8.6", "3.8.5", "3.8.4", "3.8.3", "3.8.2", "3.8.1", "3.8.0", "3.8.0b0", "3.8.0a7", "3.7.4", "3.7.4.post0", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.7.0b1", "3.7.0b0", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.6.1b4", "3.6.1b3", "3.6.0b0", "3.6.0a12", "3.6.0a11", "3.6.0a9", "3.6.0a8", "3.6.0a7", "3.6.0a6", "3.6.0a5", "3.6.0a4", "3.6.0a3", "3.6.0a2", "3.6.2a2", "3.6.0a1", "3.6.2a1", "3.6.0a0", "3.6.2a0", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.5.0b3", "3.5.0b2", "3.5.0b1", "3.5.0a1", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.4.0b2", "3.4.0b1", "3.4.0a3", "3.4.0a0", "3.3.2", "3.3.1", "3.3.0", "3.3.2a0", "3.3.0a0", "3.2.1", "3.2.0", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.9", "3.0.8", "3.0.7", "3.0.6", "3.0.5", "3.0.4", "3.0.3", "3.0.2", "3.0.1", "3.0.0", "3.0.0b4", "3.0.0b3", "3.0.0b2", "3.0.0b1", "3.0.0b0", "2.3.10", "2.3.9", "2.3.8", "2.3.7", "2.3.6", "2.3.5", "2.3.4", "2.3.3", "2.3.2", "2.3.1", "2.3.0", "2.3.2b3", "2.3.2b2", "2.3.0a4", "2.3.0a3", "2.3.0a2", "2.3.0a1", "2.3.1a1", "2.2.5", "2.2.4", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.0", "2.0.7", "2.0.6", "2.0.5", "2.0.4", "2.0.3", "2.0.2", "2.0.1", "2.0.0", "2.0.0rc1", "1.3.5", "1.3.4", "1.3.3", "1.3.2", "1.3.1", "1.3.0", "1.2.0", "1.1.6", "1.1.5", "1.1.4", "1.1.3", "1.1.2", "1.1.1", "1.1.0", "1.0.5", "1.0.3", "1.0.2", "1.0.1", "1.0.0", "0.22.5", "0.22.4", "0.22.3", "0.22.2", "0.22.1", "0.22.0", "0.22.0b6", "0.22.0b5", "0.22.0b4", "0.22.0b3", "0.22.0b2", "0.22.0b1", "0.22.0b0", "0.22.0a0", "0.21.6", "0.21.5", "0.21.4", "0.21.2", "0.21.1", "0.21.0", "0.20.2", "0.20.1", "0.20.0", "0.19.0", "0.18.4", "0.18.3", "0.18.2", "0.18.1", "0.18.0", "0.17.4", "0.17.3", "0.17.2", "0.17.1", "0.17.0", "0.16.6", "0.16.5", "0.16.4", "0.16.3", "0.16.2", "0.16.1", "0.16.0", "0.15.3", "0.15.2", "0.15.1", "0.15.0", "0.14.4", "0.14.3", "0.14.2", "0.14.1", "0.14.0", "0.13.1", "0.13.0", "0.12.0", "0.11.0", "0.10.2", "0.10.1", "0.10.0", "0.9.3", "0.9.2", "0.9.1", "0.9.0", "0.8.4", "0.8.3", "0.8.2", "0.8.1", "0.8.0", "0.7.3", "0.7.2", "0.7.1", "0.7.0", "0.6.5", "0.6.4", "0.6.3", "0.6.2", "0.6.1", "0.6.0", "0.5.0", "0.4.4", "0.4.3", "0.4.2", "0.4.1", "0.4", "0.3", "0.2", "0.1"]
Secure versions: [3.13.4, 3.13.5, 4.0.0a0, 4.0.0a1]
Recommendation: Update to version 3.13.5.

Aiohttp has inconsistent interpretation of `Content-Length` vs. `Transfer-Encoding` differing in C and Python fallbacks

Published date: 2023-11-14T20:36:25Z
CVE: CVE-2023-47641
Links:

Impact

Aiohttp has a security vulnerability regarding the inconsistent interpretation of the http protocol. As we know that HTTP/1.1 is persistent, if we have both Content-Length(CL) and Transfer-Encoding(TE) 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. I can give a Dockerfile with the configuration if you want.

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 (just like CVE-2021-21330) we can combine it to redirect random users to our website and log the request.

References

Affected versions: ["3.8.0b0", "3.8.0a7", "3.7.4", "3.7.4.post0", "3.7.3", "3.7.2", "3.7.1", "3.7.0", "3.7.0b1", "3.7.0b0", "3.6.3", "3.6.2", "3.6.1", "3.6.0", "3.6.1b4", "3.6.1b3", "3.6.0b0", "3.6.0a12", "3.6.0a11", "3.6.0a9", "3.6.0a8", "3.6.0a7", "3.6.0a6", "3.6.0a5", "3.6.0a4", "3.6.0a3", "3.6.0a2", "3.6.2a2", "3.6.0a1", "3.6.2a1", "3.6.0a0", "3.6.2a0", "3.5.4", "3.5.3", "3.5.2", "3.5.1", "3.5.0", "3.5.0b3", "3.5.0b2", "3.5.0b1", "3.5.0a1", "3.4.4", "3.4.3", "3.4.2", "3.4.1", "3.4.0", "3.4.0b2", "3.4.0b1", "3.4.0a3", "3.4.0a0", "3.3.2", "3.3.1", "3.3.0", "3.3.2a0", "3.3.0a0", "3.2.1", "3.2.0", "3.1.3", "3.1.2", "3.1.1", "3.1.0", "3.0.9", "3.0.8", "3.0.7", "3.0.6", "3.0.5", "3.0.4", "3.0.3", "3.0.2", "3.0.1", "3.0.0", "3.0.0b4", "3.0.0b3", "3.0.0b2", "3.0.0b1", "3.0.0b0", "2.3.10", "2.3.9", "2.3.8", "2.3.7", "2.3.6", "2.3.5", "2.3.4", "2.3.3", "2.3.2", "2.3.1", "2.3.0", "2.3.2b3", "2.3.2b2", "2.3.0a4", "2.3.0a3", "2.3.0a2", "2.3.0a1", "2.3.1a1", "2.2.5", "2.2.4", "2.2.3", "2.2.2", "2.2.1", "2.2.0", "2.1.0", "2.0.7", "2.0.6", "2.0.5", "2.0.4", "2.0.3", "2.0.2", "2.0.1", "2.0.0", "2.0.0rc1", "1.3.5", "1.3.4", "1.3.3", "1.3.2", "1.3.1", "1.3.0", "1.2.0", "1.1.6", "1.1.5", "1.1.4", "1.1.3", "1.1.2", "1.1.1", "1.1.0", "1.0.5", "1.0.3", "1.0.2", "1.0.1", "1.0.0", "0.22.5", "0.22.4", "0.22.3", "0.22.2", "0.22.1", "0.22.0", "0.22.0b6", "0.22.0b5", "0.22.0b4", "0.22.0b3", "0.22.0b2", "0.22.0b1", "0.22.0b0", "0.22.0a0", "0.21.6", "0.21.5", "0.21.4", "0.21.2", "0.21.1", "0.21.0", "0.20.2", "0.20.1", "0.20.0", "0.19.0", "0.18.4", "0.18.3", "0.18.2", "0.18.1", "0.18.0", "0.17.4", "0.17.3", "0.17.2", "0.17.1", "0.17.0", "0.16.6", "0.16.5", "0.16.4", "0.16.3", "0.16.2", "0.16.1", "0.16.0", "0.15.3", "0.15.2", "0.15.1", "0.15.0", "0.14.4", "0.14.3", "0.14.2", "0.14.1", "0.14.0", "0.13.1", "0.13.0", "0.12.0", "0.11.0", "0.10.2", "0.10.1", "0.10.0", "0.9.3", "0.9.2", "0.9.1", "0.9.0", "0.8.4", "0.8.3", "0.8.2", "0.8.1", "0.8.0", "0.7.3", "0.7.2", "0.7.1", "0.7.0", "0.6.5", "0.6.4", "0.6.3", "0.6.2", "0.6.1", "0.6.0", "0.5.0", "0.4.4", "0.4.3", "0.4.2", "0.4.1", "0.4", "0.3", "0.2", "0.1"]
Secure versions: [3.13.4, 3.13.5, 4.0.0a0, 4.0.0a1]
Recommendation: Update to version 3.13.5.

308 Other Versions

Version License Security Released
3.11.0rc2 Apache-2.0 19 1970-01-01 - 00:00 over 56 years
3.11.0rc1 Apache-2.0 19 1970-01-01 - 00:00 over 56 years
3.11.0rc0 Apache-2.0 19 1970-01-01 - 00:00 over 56 years
3.11.0b5 Apache-2.0 19 1970-01-01 - 00:00 over 56 years
3.11.0b4 Apache-2.0 19 1970-01-01 - 00:00 over 56 years
3.11.0b3 Apache-2.0 19 1970-01-01 - 00:00 over 56 years
3.11.0b2 Apache-2.0 19 1970-01-01 - 00:00 over 56 years
3.11.0b1 Apache-2.0 19 1970-01-01 - 00:00 over 56 years
3.11.0b0 Apache-2.0 19 1970-01-01 - 00:00 over 56 years
3.10.11 Apache-2.0 19 1970-01-01 - 00:00 over 56 years
3.10.10 Apache-2.0 21 1970-01-01 - 00:00 over 56 years
3.10.9 Apache-2.0 21 1970-01-01 - 00:00 over 56 years
3.10.8 Apache-2.0 21 1970-01-01 - 00:00 over 56 years
3.10.7 Apache-2.0 21 1970-01-01 - 00:00 over 56 years
3.10.6 Apache-2.0 21 1970-01-01 - 00:00 over 56 years
3.10.5 Apache-2.0 20 1970-01-01 - 00:00 over 56 years
3.10.4 Apache-2.0 20 1970-01-01 - 00:00 over 56 years
3.10.3 Apache-2.0 20 1970-01-01 - 00:00 over 56 years
3.10.2 Apache-2.0 20 1970-01-01 - 00:00 over 56 years
3.10.1 Apache-2.0 21 1970-01-01 - 00:00 over 56 years
3.10.0 Apache-2.0 21 1970-01-01 - 00:00 over 56 years
3.10.6rc2 Apache-2.0 21 1970-01-01 - 00:00 over 56 years
3.10.6rc1 Apache-2.0 21 1970-01-01 - 00:00 over 56 years
3.10.0rc0 Apache-2.0 21 1970-01-01 - 00:00 over 56 years
3.10.6rc0 Apache-2.0 21 1970-01-01 - 00:00 over 56 years
3.10.11rc0 Apache-2.0 21 1970-01-01 - 00:00 over 56 years
3.10.0b1 Apache-2.0 21 1970-01-01 - 00:00 over 56 years
3.9.5 Apache-2.0 20 1970-01-01 - 00:00 over 56 years
3.9.4 Apache-2.0 20 1970-01-01 - 00:00 over 56 years
3.9.3 Apache-2.0 22 1970-01-01 - 00:00 over 56 years
3.9.2 Apache-2.0 22 1970-01-01 - 00:00 over 56 years
3.9.1 Apache-2.0 24 1970-01-01 - 00:00 over 56 years
3.9.0 Apache-2.0 24 1970-01-01 - 00:00 over 56 years
3.9.0rc0 Apache-2.0 26 1970-01-01 - 00:00 over 56 years
3.9.4rc0 Apache-2.0 26 1970-01-01 - 00:00 over 56 years
3.9.0b1 Apache-2.0 26 1970-01-01 - 00:00 over 56 years
3.9.0b0 Apache-2.0 26 1970-01-01 - 00:00 over 56 years
3.8.6 Apache-2.0 26 1970-01-01 - 00:00 over 56 years
3.8.5 Apache-2.0 28 1970-01-01 - 00:00 over 56 years
3.8.4 Apache-2.0 29 1970-01-01 - 00:00 over 56 years
3.8.3 Apache-2.0 29 1970-01-01 - 00:00 over 56 years
3.8.2 Apache-2.0 29 1970-01-01 - 00:00 over 56 years
3.8.1 Apache-2.0 30 2021-11-14 - 21:23 over 4 years
3.8.0 Apache-2.0 30 2021-10-31 - 21:41 over 4 years
3.8.0b0 Apache-2.0 31 2021-10-31 - 20:03 over 4 years
3.8.0a7 Apache-2.0 31 2021-10-30 - 15:37 over 4 years
3.7.4 Apache-2.0 31 2021-02-25 - 17:50 about 5 years
3.7.4.post0 Apache-2.0 32 2021-03-06 - 21:03 about 5 years
3.7.3 Apache-2.0 32 2020-11-18 - 17:46 over 5 years
3.7.2 Apache-2.0 32 2020-10-27 - 08:23 over 5 years