Skip to content
OpenAdvisories
Medium · 5.9 Scanner template Public exploit CVE-2024-23334 EUVD-2024-0001GHSA-5h86-8mv2-jq9fPYSEC-2024-24

aiohttp.web.static(follow_symlinks=True) is vulnerable to directory traversal

Published Jan 29, 2024 · Updated Feb 4, 2026 · Assigned by GitHub_M

Description

aiohttp is an asynchronous HTTP client/server framework for asyncio and Python. 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 'follow_symlinks' can be used to determine whether to follow symbolic links outside the static root directory. When 'follow_symlinks' is set to True, there is no validation to check if reading a file 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. Disabling follow_symlinks and using a reverse proxy are encouraged mitigations. Version 3.9.2 fixes this issue.

Affected products

VendorProductAffectedFixed
aio-libs aiohttp < 3.9.2 —

Fixed in Linux distributions

Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.

ReleasePackageFixed inAdvisory
Debian 14 python-aiohttp 3.9.5-1 —
Debian 13 python-aiohttp 3.9.5-1 —
Debian 12 python-aiohttp 3.8.4-1+deb12u1 DSA-5828-1
Debian 11 python-aiohttp 3.7.4-1+deb11u1 DLA-4041-1
ReleasePackageFixed inAdvisory
Ubuntu 26.10 python-aiohttp No fix yet —
Ubuntu 25.10 python-aiohttp No fix yet —
Ubuntu 24.04 LTS python-aiohttp 3.9.1-1ubuntu0.1 USN-6991-1
Ubuntu 22.04 LTS python-aiohttp 3.8.1-4ubuntu0.2 USN-6991-1
Show 4 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
Ubuntu Pro 26.04 LTS python-aiohttp No fix yet —
Ubuntu Pro 20.04 LTS python-aiohttp 3.6.2-1ubuntu1+esm3 USN-6991-1
Ubuntu Pro 18.04 LTS python-aiohttp 3.0.1-1ubuntu0.1~esm4 USN-6991-1
Ubuntu Pro 16.04 LTS python-aiohttp No fix yet —
ReleasePackageFixed inAdvisory
Red Hat Satellite Utils 6 foreman +1 3.9.1.6-1.el8sat RHSA-2024:2010
Red Hat Satellite Capsule 6 foreman +1 3.9.1.6-1.el8sat RHSA-2024:2010
Red Hat Satellite Capsule 6 puppetserver 7.14.0-1.el8sat RHSA-2024:2010
Red Hat Satellite Capsule 6 python-aiohttp +1 3.9.2-0.1.el8pc RHSA-2024:2010, RHSA-2024:1536
Red Hat Satellite Capsule 6 python-django +1 3.2.22-1.el8pc RHSA-2024:2010, RHSA-2024:1536
Red Hat Satellite Capsule 6 python-galaxy-importer +1 0.4.18-2.el8pc RHSA-2024:2010, RHSA-2024:1536
Red Hat Satellite Capsule 6 python-jinja2 +1 3.1.3-0.1.el8pc RHSA-2024:2010, RHSA-2024:1536
Red Hat Satellite Capsule 6 python-pycryptodomex +1 3.20.0-1.el8pc RHSA-2024:2010
Red Hat Satellite Capsule 6 python-pygments +1 2.17.0-1.el8pc RHSA-2024:2010
Red Hat Satellite Capsule 6 python3.11-aiohttp 3.9.2-1.el8pc RHSA-2024:2010
Red Hat Satellite Capsule 6 python3.11-django 4.2.9-1.el8pc RHSA-2024:2010
Red Hat Satellite Capsule 6 python3.11-galaxy-importer 0.4.19-2.el8pc RHSA-2024:2010
Red Hat Satellite Capsule 6 python3.11-jinja2 3.1.3-1.el8pc RHSA-2024:2010
Red Hat Satellite Capsule 6 rubygem-activesupport 6.1.7.6-1.el8sat RHSA-2024:2010
Red Hat Satellite 6 foreman +14 3.9.1.6-1.el8sat RHSA-2024:2010
Red Hat Satellite 6 puppetserver 7.14.0-1.el8sat RHSA-2024:2010
Red Hat Satellite 6 python-aiohttp +1 3.9.2-0.1.el8pc RHSA-2024:2010, RHSA-2024:1536
Red Hat Satellite 6 python-django +1 3.2.22-1.el8pc RHSA-2024:2010, RHSA-2024:1536
Red Hat Satellite 6 python-galaxy-importer +1 0.4.18-2.el8pc RHSA-2024:2010, RHSA-2024:1536
Red Hat Satellite 6 python-jinja2 +1 3.1.3-0.1.el8pc RHSA-2024:2010, RHSA-2024:1536
Red Hat Satellite 6 python-pycryptodomex +1 3.20.0-1.el8pc RHSA-2024:2010
Red Hat Satellite 6 python-pygments +1 2.17.0-1.el8pc RHSA-2024:2010
Red Hat Satellite 6 python3.11-aiohttp 3.9.2-1.el8pc RHSA-2024:2010
Red Hat Satellite 6 python3.11-django 4.2.9-1.el8pc RHSA-2024:2010
Red Hat Satellite 6 python3.11-galaxy-importer 0.4.19-2.el8pc RHSA-2024:2010
Red Hat Satellite 6 python3.11-jinja2 3.1.3-1.el8pc RHSA-2024:2010
Red Hat Satellite 6 rubygem-activesupport 6.1.7.6-1.el8sat RHSA-2024:2010
Red Hat Satellite 6 rubygem-audited 5.4.2-1.el8sat RHSA-2024:2010
Red Hat Satellite 6 rubygem-puma 6.4.2-1.el8sat RHSA-2024:2010
Show 4 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
Red Hat Rhui 4 python-aiohttp +1 3.9.2-1.el8ui RHSA-2024:1878
Red Hat Rhui 4 python-cryptography +1 41.0.6-1.el8ui RHSA-2024:1878
Red Hat Rhui 4 python-django +1 4.2.11-1.el8ui RHSA-2024:1878
Red Hat Rhui 4 python-ecdsa +1 0.18.0-4.el8ui RHSA-2024:1878
Red Hat Rhui 4 python-jinja2 +1 3.1.3-1.el8ui RHSA-2024:1878
Red Hat Ansible Automation Platform Inside 2 receptor +1 1.4.5-1.el8ap RHSA-2024:1640
Red Hat Ansible Automation Platform Developer 2 receptor +1 1.4.5-1.el8ap RHSA-2024:1640
Red Hat Ansible Automation Platform 2 automation-controller-venv-tower 4.5.5-2.el8ap RHSA-2024:1640
Red Hat Ansible Automation Platform 2 python-aiohttp +1 3.9.3-1.el9ap RHSA-2024:1640
Red Hat Ansible Automation Platform 2 python-django +1 4.2.11-1.el9ap RHSA-2024:1640
Red Hat Ansible Automation Platform 2 python39-aiohttp +1 3.9.3-1.el8ap RHSA-2024:1640
Red Hat Ansible Automation Platform 2 python39-django +1 4.2.11-1.el8ap RHSA-2024:1640
Red Hat Ansible Automation Platform 2 receptor +1 1.4.5-1.el8ap RHSA-2024:1640
ReleasePackageFixed inAdvisory
SLES 15 SP4 python-aiohttp 3.9.3-150400.10.14.1 SUSE-SU-2024:0577-1
SLES 3 python-aiohttp 3.9.3-150400.10.14.1 SUSE-SU-2024:0577-1
Show 2 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
SLES for SAP 15 SP4 python-aiohttp 3.9.3-150400.10.14.1 SUSE-SU-2024:0577-1
SLE HPC 15 SP4 python-aiohttp 3.9.3-150400.10.14.1 SUSE-SU-2024:0577-1
ReleasePackageFixed inAdvisory
openSUSE Tumbleweed python-aiohttp 3.9.3-1.1 openSUSE-SU-2026:11467-1, openSUSE-SU-2024:13642-1
openSUSE Leap 15.5 python-aiohttp 3.9.3-150400.10.14.1 SUSE-SU-2024:0577-1
ReleasePackageFixed inAdvisory
Alpine v3.24 py3-aiohttp 3.9.3-r0 —
Alpine v3.23 py3-aiohttp 3.9.3-r0 —
Alpine v3.22 py3-aiohttp 3.9.3-r0 —
Alpine v3.21 py3-aiohttp 3.9.3-r0 —
Alpine v3.20 py3-aiohttp 3.9.3-r0 —

Azure Linux

ReleasePackageFixed inAdvisory
Azure Linux 3 python-aiohttp No fix yet —
Azure Linux 2 (CBL-Mariner) python-aiohttp No fix yet —

Wolfi

ReleasePackageFixed inAdvisory
Wolfi rolling checkov 3.0.34-r1 —
Wolfi rolling py3-aiohttp 3.9.3-r0 —
Wolfi rolling py3-cassandra-medusa +1 0.17.2-r1 —

Public exploits

Exploit or proof-of-concept code for this vulnerability is publicly available, which lowers the bar for attackers. Treat it as a reason to patch sooner.

Third-party code, not reviewed by us. Public PoCs are sometimes fake or contain malware. Read the code first and run it only in an isolated lab, against systems you are authorised to test.

Exploit-DB 1

GitHub 15 repositories · most starred shown

Sources: PoC-in-GitHub, Metasploit Framework, Exploit-DB — updated daily. Only links are listed; no exploit code is hosted here.

Automated scanner template

A ready-made Nuclei template detects this vulnerability automatically. Vulnerabilities with public scanner templates are typically probed across the internet soon after the template appears — exposed systems should be patched first.

Source: projectdiscovery/nuclei-templates (MIT) — updated daily. Only links are listed.

Affected packages

EcosystemPackageAffectedFixedRecord
PyPI aiohttp >= 1.0.5, < 3.9.2 3.9.2 GHSA-5h86-8mv2-jq9f

Advisories 11

References