Live › vulnerability › CVE-2022-24840
Go to dashboarddjango-s3file trusts attacker-supplied file paths in form data, so a request can point at any file in the configured AWS S3 bucket. An attacker can then read, move or delete those files, and the flaw is injected by middleware so any view can be abused.
Summary written from the sources below. Check the originals before acting.
First seen by InfraStack 2026-10-28 13:16 UTC, 0h before NVD. All times on this page are UTC.
Any Django site that uses django-s3file to handle file uploads through an AWS S3 bucket is exposed when running a version before 5.5.1. The advisory says that if all file-handling views require authentication or special permission, the flaw is limited to privileged users, but it still exists. Sites that do not use django-s3file, or that run the patched version, are not affected.
| Product | Ecosystem | Affected | Fixed in |
|---|---|---|---|
| django-s3file | pypi | < 5.5.1 | 5.5.1 |
| django-s3file project django-s3file | vendor | < 5.5.1 | 5.5.1 |
pip show django-s3file and compare it to 5.5.1.django-s3file in requirements.txt, pyproject.toml or the lock file to find the pinned version.AWS_LOCATION is set in Django settings, since it limits how far traversal reaches.django-s3file to 5.5.1 or later.Each row is the first time that source carried this signal. The analyst’s rows are its own findings.
It was possible to traverse the entire AWS S3 bucket and in most cases to access or delete files. The issue was discovered by the maintainer. There were no reports of the vulnerability being known to or exploited by a third party, before the release of the patch.
If the AWS_LOCATION setting was set, traversal was limited to that location only.
If all your files handling views (like form views) require authentication or special permission, the thread is limited to privileged users.
The vulnerability has been fixed in version 5.5.1 and above.
There is no feasible workaround. We must urge all users to immediately updated to a patched version.
An attacker may use a request with malicious form data to traverse the entire AWS S3 bucket and perform destructive operations.
An attack could look as follows:
curl -X POST -F "s3file=file" -F "file=/priviliged/location/secrets.txt" https://www.example.com/any/path/will/work/
This will result in a request with files set and opened:
>>> request.FILES.getlist("file")
[File("/priviliged/location/secrets.txt")]
Since this behavior is injected via a middleware, any view can be called this way and will carry any files defined by the attacker.
Via the s3file form field, any input name can be specified, including multiple inputs. For each input, multiple files can be freely
picked of the S3 bucket.
There are four scenarios that would be considered practical in most setups:
An attacker knows the location of a privileged file, like a static asset. Next, the file is injected into a form view. The upload to function will move the file to a new location. This is effectively deleting the file, since the previous references to it are invalid, and will cause S3 to return a 404. Furthermore, the new location is unknown to the site operator.
An attacker knows the URL of a secret file and injects it into a form view. The view will move the file to a public location, making it accessible to the attacker. Since most form views will not be rate limited, this could also be used to guess files and traverse the file tree.
An attacker uses any form to upload a file to the temporary upload location. Next, the attacker injects that file into a request, does not validate the contents or is not equipped to handle the mime type. The latter could be used as a potential DOS vector.
In practice, this is not a practical risk in most hardened setup. Files should always be sanitized before processing, since files can be included in a request even without this security issues.
If you have any questions or comments about this advisory:
This page as .md · .json · in your agent: get_signal("CVE-2022-24840")
GitHub Advisory Database, CC-BY 4.0 · NVD data is provided by NIST and is public domain. Posts quoted belong to their authors.