Skip to main content

Typemill CVE-2026-49133

HIGH
Path Traversal (CWE-22)
2026-06-17 VulnCheck
7.1
CVSS 4.0 · Vendor: VulnCheck
Share

Severity by source

Vendor (VulnCheck) PRIMARY
7.1 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
vuln.today AI
6.5 MEDIUM

Network-reachable API with Author-level auth required (PR:L), no user interaction, deterministic traversal (AC:L); arbitrary file read yields high confidentiality only, no integrity or availability impact.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
X

Lifecycle Timeline

2
Source Code Evidence Fetched
Jun 17, 2026 - 21:30 vuln.today
Analysis Generated
Jun 17, 2026 - 21:30 vuln.today

DescriptionCVE.org

Typemill before 2.24.0 contains a path traversal vulnerability that allows authenticated attackers with Author-level privileges to read arbitrary files outside the content directory by supplying traversal sequences in the path query parameter passed to Storage::getFile() with an empty folder argument. Attackers can bypass traversal-prevention controls in Storage::getFolderPath() to access sensitive files.

AnalysisAI

Arbitrary file read in Typemill before 2.24.0 allows authenticated Author-level users to traverse outside the content directory by injecting traversal sequences in the path query parameter when the folder argument is empty, defeating sanitization in Storage::getFolderPath(). Reported by VulnCheck with a vendor patch shipped in 2.24.0/2.24.2; no public exploit identified at time of analysis, and the CVSS 4.0 base score of 7.1 reflects high confidentiality impact with low-privilege network access.

Technical ContextAI

Typemill is a PHP-based flat-file CMS where content and media are stored on the filesystem and brokered through a Storage class. The root cause is CWE-22 (Improper Limitation of a Pathname to a Restricted Directory): Storage::getFolderPath() implements traversal-prevention checks, but Storage::getFile() can be invoked via a controller API (the ControllerApiImage::getPageMedia path referenced in VulnCheck's advisory) with an empty folder argument, allowing crafted ../ sequences in the path parameter to escape the intended content/media directory. The affected CPE is cpe:2.3:a:typemill:typemill:*:*:*:*:*:*:*:* up to 2.24.0, and the upstream fix is commit bfbb27001acd5c56ad62166dbefe6a59798cf1c0 included in the v2.24.2 release.

RemediationAI

Upgrade to Typemill 2.24.0 or, preferably, 2.24.2 which bundles this fix together with patches for password-reset poisoning, 2FA brute force, and unique-user issues (release notes at https://github.com/typemill/typemill/releases/tag/v2.24.2; fix commit bfbb27001acd5c56ad62166dbefe6a59798cf1c0). If immediate patching is not possible, restrict who can hold Author-level accounts (disable open registration, audit and rotate existing Author credentials), and front the Typemill admin/API with a reverse-proxy rule that blocks requests to the page-media API endpoint or rejects path query parameters containing ../, .., or URL-encoded variants (%2e%2e, ..%2f) - note that blocking the media API will break legitimate image management in the editor, so this is a stopgap. Additionally, run the PHP process under a least-privileged OS user with filesystem ACLs that deny read access to system files and other webroots, limiting the blast radius of any residual traversal.

Share

CVE-2026-49133 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy