Skip to content
Fencer Vulns
medium 5.9

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

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-tower
    affected: 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.el9ap
    fixed: 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.el8pc
    fixed: 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.el8pc
    fixed: 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.el8ui
    fixed: 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 more
    not 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

  1. Published
  2. 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

Sources

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.