
Cloud Vulnerability DB
A community-led vulnerabilities database
CVE-2026-53502 is a path traversal vulnerability in Thumbor, an open-source photo thumbnail service by globo.com, affecting all versions up to and including 7.7.7. The flaw exists in file_loader.py, where percent-encoded path traversal sequences bypass the root-boundary security check and are later decoded into actual directory traversal sequences. It was privately reported and published on June 10, 2026, with the GitHub Advisory Database entry updated on July 31, 2026. The vulnerability carries a CVSS v4 base score of 8.7 (High) (Github Advisory).
The root cause (CWE-22: Path Traversal) lies in the ordering of operations in thumbor/loaders/file_loader.py: the abspath() + startswith() security check is performed on the raw, still-encoded path, and unquote() is only called afterward. An attacker supplies double-encoded sequences (e.g., %252e%252e for ..) via the watermark or frame filter URL parameters; Tornado decodes %25 to %, yielding %2e%2e, which abspath() treats as a literal directory name (not ..), so the startswith(ROOT) check passes. When the literal path does not exist on disk, unquote() is then called, converting %2e%2e to .., and the OS resolves the traversal outside FILE_LOADER_ROOT_PATH. The watermark and frame filters pass their URL parameters directly to the loader without re-encoding, unlike the main image URL flow. A public PoC is included in the advisory (Github Advisory, Thumbor Security Advisory).
Successful exploitation enables arbitrary file read on the Thumbor server, limited to files readable by the Thumbor process. When the targeted file is a valid image format, its content is returned embedded as a watermark in the HTTP response, directly exposing the data to the attacker. Sensitive targets include application configuration files, private keys, credentials, and system files such as /etc/passwd. There is no integrity or availability impact; the vulnerability is purely a confidentiality breach (Github Advisory).
file_loader (the default loader) and has ALLOW_UNSAFE_URL = True (the default setting).some-valid-image.jpg)... becomes %252e%252e (Tornado decodes %25 → %, leaving %2e%2e for file_loader to later decode to ..). Construct the target path to the desired file, e.g., /etc/passwd becomes %252e%252e/%252e%252e/%252e%252e/%252e%252e/etc/passwd.watermark filter:curl 'http://thumbor-host:8888/unsafe/filters:watermark(%252e%252e/%252e%252e/%252e%252e/%252e%252e/etc/passwd,0,0,100)/some-valid-image.jpg'filters:watermark( or filters:frame( with %252e or %2e sequences in the filter parameter; requests targeting paths like /etc/passwd, /etc/shadow, .env, or other sensitive files encoded in the filter argument.%252e%252e) in the filters:watermark() or filters:frame() parameter; repeated requests with varying traversal depths (e.g., %252e%252e/%252e%252e/%252e%252e/).FILE_LOADER_ROOT_PATH may be observable in OS-level audit logs (e.g., auditd records for file reads on /etc/passwd, private key files, or application config files by the Thumbor process).python/thumbor) opening files outside the configured FILE_LOADER_ROOT_PATH directory, observable via lsof or OS audit frameworks (Github Advisory).Upgrade Thumbor to version 7.8.0, which fixes the vulnerability by decoding percent-encoded paths before the root-boundary security check, and replaces the startswith() guard with os.path.commonpath() to prevent sibling-prefix escapes (Thumbor Release 7.8.0, Patch Commit). As an interim workaround where upgrading is not immediately possible, consider setting ALLOW_UNSAFE_URL = False and enforcing URL signing to restrict filter parameter injection, or disabling the watermark and frame filters by removing them from BUILTIN_FILTERS. Network-level controls (e.g., WAF rules blocking %25 or %2e sequences in Thumbor filter parameters) can reduce exposure but are not a substitute for patching (Github Advisory).
The vulnerability was reported by security researchers q1uf3ng and 0xHunSec and privately disclosed to the Thumbor maintainers before public advisory publication. The Thumbor maintainer (marcelometal) published the fix in version 7.8.0 and strongly encouraged all production users to upgrade, noting the release addresses multiple privately reported security issues (Thumbor Release 7.8.0). No significant broader media coverage or notable social media reactions were identified at time of report generation.
Source: This report was generated using AI
Free Vulnerability Assessment
Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.
Get a personalized demo
"Best User Experience I have ever seen, provides full visibility to cloud workloads."
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
"We know that if Wiz identifies something as critical, it actually is."