CVE-2024-23334 json
aiohttp.web.static(follow_symlinks=True) is vulnerable to directory traversal
published 2024-01-29 2 y ago modified 2026-09-10 1 mo ago also GHSA-5h86-8mv2-jq9f , PYSEC-2024-24 , EUVD-2024-0001
- cvss
- 5.9
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 76.9%
- EPSS 76.9% chance of exploitation in 30 days, percentile 99.5%
- public exploits
- 1
- Exploit-DB, plus a Nuclei check
Summary
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.
Patch / fix
- pypi aiohttp 3.9.2
- aiohttp aiohttp 3.9.2
- python-aiohttp Debian 12 3.8.4-1+deb12u1
- python-aiohttp Debian 14, Debian 13 3.9.5-1
debian advisories DEBIAN-CVE-2024-23334
- python-aiohttp Ubuntu 22.04 LTS 3.8.1-4ubuntu0.2
- python-aiohttp Ubuntu 24.04 LTS 3.9.1-1ubuntu0.1
- python-aiohttp Ubuntu Pro 18.04 LTS 3.0.1-1ubuntu0.1~esm4
- python-aiohttp Ubuntu Pro 20.04 LTS 3.6.2-1ubuntu1+esm3
ubuntu advisories UBUNTU-CVE-2024-23334
Ubuntu security data © Canonical Ltd., from https://github.com/canonical/ubuntu-security-notices via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0
- foreman satellite utils 6.15, satellite capsule 6.15, satellite 6.15 3.9.1.6-1.el8sat
- foreman-cli satellite utils 6.15, satellite 6.15 3.9.1.6-1.el8sat
- foreman-ec2 satellite 6.15 3.9.1.6-1.el8sat
- foreman-pcp satellite 6.15 3.9.1.6-1.el8sat
- puppetserver satellite capsule 6.15, satellite 6.15 7.14.0-1.el8sat
- rubygem-puma satellite 6.15 6.4.2-1.el8sat
- foreman-ovirt satellite 6.15 3.9.1.6-1.el8sat
- foreman-redis satellite 6.15 3.9.1.6-1.el8sat
red hat advisories RHSA-2024:2010RHSA-2024:1640RHSA-2024:1878RHSA-2024:1536
- python-aiohttp SLES for SAP 15 SP4, SLES 15 SP4-LTSS, SLE Module for Python 3 15 SP5 +3 more 3.9.3-150400.10.14.1
suse advisories SUSE-SU-2024:0577-1
- python-aiohttp openSUSE Tumbleweed 3.14.3-1.1
- python-aiohttp openSUSE Tumbleweed 3.9.3-1.1
opensuse advisories openSUSE-SU-2026:11467-1openSUSE-SU-2024:13642-1
- py3-aiohttp Alpine 3.24, Alpine 3.23, Alpine 3.22 +2 more 3.9.3-r0
alpine advisories ALPINE-CVE-2024-23334
Alpine secdb © Alpine Linux, from https://secdb.alpinelinux.org via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0
- github.com/aio-libs/aiohttp@1c33594 commit
- github.com/aio-libs/aiohttp#8079 pull request
- github.com/aio-libs/aiohttp#8079 pull request
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2024-23334 updated cvss 5.9
aiohttp: follow_symlinks directory traversal vulnerability
-
Red Hat Ansible Automation Platform 1.2 ansible-toweraffected: workaround, no fix planned “Out of support scope”
-
Red Hat Ansible Automation Platform 2.4 for RHEL 8 python39-aiohttp 3.9.3-1.el8ap, python3x-aiohttp 3.9.3-1.el8ap, automation-controller-venv-tower 4.5.5-2.el8ap Red Hat Ansible Automation Platform 2.4 for RHEL 9 python-aiohttp 3.9.3-1.el9ap, python3-aiohttp 3.9.3-1.el9ap, automation-controller-venv-tower 4.5.5-2.el9apfixed: vendor fix RHSA-2024:1640
-
Red Hat Satellite 6.14 for RHEL 8 python-aiohttp 3.9.2-0.1.el8pc, python39-aiohttp 3.9.2-0.1.el8pcfixed: vendor fix RHSA-2024:1536
-
Red Hat Satellite 6.15 for RHEL 8 python-aiohttp 3.9.2-1.el8pc, python3.11-aiohttp 3.9.2-1.el8pcfixed: vendor fix RHSA-2024:2010
-
Red Hat RHUI 4 for RHEL 8 python-aiohttp 3.9.2-1.el8ui, python3.11-aiohttp 3.9.2-1.el8uifixed: vendor fix RHSA-2024:1878
-
Red Hat Ansible Automation Platform 2 ansible-automation-platform-25/ee-minimal-rhel8, ansible-automation-platform-24/ee-supported-rhel9, ansible-automation-platform-24/ansible-builder-rhel9, ansible-automation-platform-25/ee-cloud-services-rhel9, ansible-automation-platform-24/ee-dellemc-openmanage-rhel8, ansible-automation-platform-24/platform-resource-runner-rhel8 Red Hat Ansible Automation Platform 2.4 for RHEL 8 receptor 1.4.5-1.el8ap, receptorctl 1.4.5-1.el8ap, ansible-core 2.15.10-1.el8ap, ansible-runner 2.3.6-1.el8ap, ansible-test 2.15.10-1.el8ap, python39-django 4.2.11-1.el8ap, +8 more Red Hat Ansible Automation Platform 2.4 for RHEL 9 receptor 1.4.5-1.el9ap, receptorctl 1.4.5-1.el9ap, ansible-core 2.15.10-1.el9ap, ansible-runner 2.3.6-1.el9ap, ansible-test 2.15.10-1.el9ap, python-django 4.2.11-1.el9ap, +8 more Red Hat Satellite 6.14 for RHEL 8 candlepin 4.3.12-1.el8sat, satellite 6.14.3-1.el8sat, python-django 3.2.22-1.el8pc, python-flake8 5.0.0-0.1.el8pc, python-jinja2 3.1.3-0.1.el8pc, python-mccabe 0.7.0-0.1.el8pc, +27 more Red Hat Satellite 6.15 for RHEL 8 cjson 1.7.14-5.el8sat, libsolv 0.7.22-6.el8pc, katello 4.11.0-1.el8sat, libcomps 0.1.18-8.el8pc, python-jq 1.6.0-3.el8pc, foreman 3.9.1.6-1.el8sat, +677 more Red Hat RHUI 4 for RHEL 8 libsolv 0.7.22-6.el8ui, libcomps 0.1.18-8.el8ui, python-jq 1.6.0-3.el8ui, python-xlrd 2.0.1-8.el8ui, python-xlwt 1.3.0-6.el8ui, python-yarl 1.8.2-4.el8ui, +201 morenot affected: vulnerable code not present
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
Timeline
- Published
- First public exploit (EDB-52474)
CISA SSVC
- Exploitation
- Proof of concept is public
- Automatable
- no
- Technical impact
- partial
- Assessed
- 17 mo ago
Exploit prediction
76.88% chance of exploitation in the next 30 days, higher than 99.5% of all scored CVEs (FIRST EPSS, 2026-11-08).
Exploits and checks
- EDB-52474 aiohttp 3.9.1 - directory traversal PoC webapps, 2026-02-04
- Nuclei template aiohttp - Directory Traversal nuclei detection template
- github.com https://github.com/aio-libs/aiohttp/security/advisories/GHSA-5h86-8mv2-jq9f referenced PoC, tagged "exploit" by a source, unverified
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 5.9 | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N |
| NVD | 3.1 | 7.5 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N |
| OSV | 3.1 | 7.5 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N |
| GitHub | 3.1 | 5.9 | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| pypi | aiohttp | >=1.0.5, <3.9.2 |
3.9.2 |
Affected products
- aio-libs aiohttp
Classification
- Weakness
-
- CWE-22 Improper Limitation of a Pathname to a Restricted Directory
References
-
github.com
/aio-libs/aiohttp/pull/8079
web, patch
-
github.com
/aio-libs/aiohttp/commit/1c335944d6a8b1298baf179b7c0b3069f10c514b
web, patch
-
github.com
/aio-libs/aiohttp/pull/8079/files
web
-
github.com
/aio-libs/aiohttp/security/advisories/GHSA-5h86-8mv2-jq9f
web, exploit, mitigation, vendor-advisory, advisory
-
lists.fedoraproject.org
/archives/list/package-announce@lists.fedoraproject.org/message/XXWVZIVAYWEBHNRIILZVB3R3SDQNNAA7/
mailing-list, article
- lists.fedoraproject.org /archives/list/package-announce@lists.fedoraproject.org/message/ICUOCFGTB25WUT336BZ4UNYLSZOUVKBD/
-
lists.debian.org
/debian-lts-announce/2025/02/msg00002.html
web
-
exploit-db.com
/exploits/52474
web
-
nvd.nist.gov
/vuln/detail/CVE-2024-23334
advisory
-
github.com
/aio-libs/aiohttp
package
-
github.com
/pypa/advisory-database/tree/main/vulns/aiohttp/PYSEC-2024-24.yaml
web
-
lists.fedoraproject.org
/archives/list/package-announce@lists.fedoraproject.org/message/ICUOCFGTB25WUT336BZ4UNYLSZOUVKBD
web
-
lists.fedoraproject.org
/archives/list/package-announce@lists.fedoraproject.org/message/XXWVZIVAYWEBHNRIILZVB3R3SDQNNAA7
web
Sources
- CVE List CVE-2024-23334
- GitHub Advisory GHSA-5h86-8mv2-jq9f
- NVD CVE-2024-23334
- OSV PYSEC-2024-24
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.