CVE-2026-54567 json
Flask-Reuploaded: Extension-denylist bypass via case-folding asymmetry in name-override path (incomplete-fix variant of CVE-2026-27641)
published 3mo ago modified last mo. also EUVD-2026-77683 , GHSA-937x-gpqr-72gg , PYSEC-2026-3466
- cvss
- 7.5
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.6%
- EPSS 0.6% chance of exploitation in 30 days, percentile 50%
- public exploits
- 0
- none known
Summary
Flask-Reuploaded provides file uploads for Flask. From 1.5.0 until 1.6.0, UploadSet.save(storage, name=...) in src/flask_uploads/flask_uploads.py applies lowercase_ext to the default upload path but uses the case-preserving extension helper for a caller-supplied name before extension_allowed evaluates an AllExcept denylist. An attacker who controls the name override can use a mixed-case dangerous extension to bypass a lowercase denylist and store the file in the served upload directory. Exploitation requires a denylist configuration, a user-influenced name override, and a deployment that resolves or executes extensions case-insensitively; pure allowlists remain protected and path containment is not bypassed. On an execution-capable upload directory, the stored file can execute with the web server's privileges and affect confidentiality, integrity, and availability. This issue is fixed in version 1.6.0.
Patch / fix
- pypi flask-reuploaded 1.6.0
- jugmac00 flask-reuploaded 1.6.0
- github.com/jugmac00/flask-reuploaded@5ded760 commit
- github.com/jugmac00/flask-reuploaded#186 pull request
Is CVE-2026-54567 in your dependencies? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.
Check with FencerCISA SSVC
- Exploitation
- Proof of concept is public
- Automatable
- no
- Technical impact
- total
- Assessed
- last mo.
Exploit prediction
0.63% chance of exploitation in the next 30 days, higher than 50% of all scored CVEs (FIRST EPSS, 2026-11-11).
Exploits and checks
- github.com https://github.com/jugmac00/flask-reuploaded/security/advisories/GHSA-937x-gpqr-72gg referenced PoC, tagged "exploit" by a source, unverified
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 7.5 | CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H |
| GitHub | 3.1 | 7.5 | CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H |
| OSV | 3.1 | 7.5 | CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| pypi | flask-reuploaded | <1.6.0 |
1.6.0 |
Affected products
- jugmac00 flask-reuploaded
Classification
References
- github.com /jugmac00/flask-reuploaded/pull/186
-
github.com
/jugmac00/flask-reuploaded/commit/5ded76092429c6eb8a4af941b14fbde40a38fff4
web
-
github.com
/jugmac00/flask-reuploaded/security/advisories/GHSA-937x-gpqr-72gg
exploit, web
-
github.com
/jugmac00/flask-reuploaded
package
-
pypi.org
/project/flask-reuploaded
package
-
github.com
/advisories/GHSA-937x-gpqr-72gg
advisory
-
nvd.nist.gov
/vuln/detail/CVE-2026-54567
advisory
Sources
- CVE List CVE-2026-54567
- GitHub Advisory GHSA-937x-gpqr-72gg
- NVD CVE-2026-54567
- OSV PYSEC-2026-3466
Fencer Intel 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.
CPEs and fixed versions use Anchore's correction of NVD's data: Added CPE configurations because not yet analyzed by NVD.