🛡️ CVE-2026-55825 — contao

🟢 CVSS 3.1 — Low ✅ No Known Exploit CWE-22 NVD
3.1
CVSS Score
0 Low4 Medium7 High9 Critical10

Description

Contao: Possible path traversal in job download URIs

Summary

An authenticated backend user who can access one job can request an attachment identifier containing ../ segments and make the job attachment download endpoint read a file from another job directory inside var/job-attachments.

The controller authorizes only the jobUuid route parameter. The later attachment lookup joins that authorized job UUID with the attacker-controlled identifier, then passes the combined path to the virtual filesystem. VirtualFilesystem::resolve() canonicalizes the whole path and only rejects paths that escape the filesystem mount, so authorized-job/../victim-job/debug_log.csv becomes victim-job/debug_log.csv.

This is a cross-job authorization bypass for known job attachment paths. It is not a practical brute-force against unknown jobs because job directories are UUID v4 values.

Root Cause

JobsController::downloadJobAttachment() checks access to the route jobUuid before loading the attachment:

```php

$job = $this->jobs->getByUuid($jobUuid);

if (!$job || !$this->jobs->hasAccess($job)) {

throw $this->createNotFoundException();

}

$attachment = $this->jobs->getAttachment($jobUuid, $identifier);

```

Jobs::getAttachment() then resolves a path built from the authorized job UUID and the attacker-controlled identifier:

```php

$fileItem = $this->jobAttachmentsStorage->get($this->getAttachmentIdentifier($job, $identifier));

```

```php

return $job->getUuid().'/'.$identifier;

```

VirtualFilesystem::resolve() canonicalizes the combined path. It rejects absolute paths and paths that start with .., but it does not preserve the authorized job directory as a boundary:

```php

$path = Path::canonicalize($location);

if (str_starts_with($path, '..')) {

throw new \OutOfBoundsException(...);

}

return Path::join($this->prefix, $path);

```

Therefore:

```text

<authorized-job>/../<victim-job>/debug_log.csv

```

canonicalizes to:

```text

<victim-job>/debug_log.csv

```

which remains inside the job-attachments filesystem mount and is accepted.

Recommended Fix

Treat the attachment identifier as a filename, not a path:

  • Reject /, \, NUL, and dot-segment components in identifier.
  • Add a route requirement that prevents slashes in {identifier} if nested attachment paths are not intended.
  • After resolving, assert the canonical relative path starts with <authorized-job-uuid>/ before returning a FilesystemItem.
  • Apply the same identifier validation in Jobs::addAttachment() so future producers/extensions cannot write outside the owning job directory.

Impact

A low-privileged backend user can read another job's attachment if they know or obtain the target job UUID and attachment filename. Built-in crawler jobs attach CSV logs such as debug_log.csv, broken-link-checker_log.csv, and search-index_log.csv, which can contain crawled URLs, referring URLs, tags, and error messages.

How this vulnerability can be exploited

This issue can be reached over the network, attack complexity is high, an attacker needs low-level privileges on the target. No user interaction is required. The scope is unchanged, so the impact stays within the vulnerable component. Rated impact: confidentiality low, integrity none, availability none.

Weakness class

CVE-2026-55825 is classified as CWE-22: Path Traversal. A file path built from user input is not confined to the intended directory, letting an attacker reach files elsewhere on the filesystem.

Affected software

CVE-2026-55825 is recorded against 3 packages.

  • contao/contao (from 5.7.0 up to 5.7.7)
  • contao/core-bundle (from 5.7.0 up to 5.7.7)
  • unknown

Timeline and source

Published on 6 August 2026. No public exploit is currently recorded for this entry. Record sourced from NVD.

References

github.com (Web)
nvd.nist.gov (Advisory)
contao.org (Web)
github.com (Web)
github.com (Web)
github.com (Package)

Details

Severity LOW
CVSS Score 3.1
CVSS Vector CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:N
CWE CWE-22
Public Exploit ✅ No
Source NVD
Published 2026-08-06
Updated 2026-08-12
Modified 2026-08-06
Fix URL N/A

Affected Packages

Software From version Fixed in
contao/contao 5.7.0 5.7.7
contao/core-bundle 5.7.0 5.7.7
unknown

Similar Threats

Free Vulnerability Check

Is your site affected by CVE-2026-55825?

BotEraser helps you identify potentially vulnerable plugins and themes by checking your installation against CVE-2026-55825 and other known CVE records.

Scan My Site Free →

No credit card required  ·  Results in minutes

ⓘ Data Notice: The information presented above has been compiled from publicly available internet sources. Boteraser aggregates this data solely for informational purposes and does not independently classify, evaluate, or endorse any findings about the vulnerabilities listed. The accuracy and completeness of this information is the sole responsibility of the original publishers. Boteraser and its operators accept no liability for any decisions made based on this data.