🛡️ CVE-2026-45016 — egroupware

⚪ Unknown ✅ No Known Exploit CWE-73 OSV
N/A
CVSS Score
0 Low4 Medium7 High9 Critical10

Description

EGroupware Vulnerable to Local File Inclusion via file:// URI in Mail Compose

Summary

The function processes image URLs embedded in an HTML email body without validating or restricting URI schemes. The check !str_starts_with($myUrl, 'http') evaluates to true for file:// URIs, causing file_get_contents($basedir . urldecode($myUrl)) to read arbitrary files from the server filesystem and embed them as inline MIME attachments in outgoing email.

str_starts_with('file:///etc/passwd', 'http') → false

!false → true

```php

// api/src/Mail.php

foreach($images[2] as $i => $url)

{

//$isData = false;

$basedir = $data = '';

$needTempFile = true;

$attachmentData = ['name' => '', 'type' => '', 'file' => '', 'tmp_name' => ''];

try

{

// do not change urls for absolute images (thanks to corvuscorax)

if (!str_starts_with($url, 'data:'))

{

$attachmentData['name'] = basename($url); // need to resolve all sort of url

if (($directory = dirname($url)) == '.') $directory = '';

$ext = pathinfo($attachmentData['name'], PATHINFO_EXTENSION);

$attachmentData['type'] = MimeMagic::ext2mime($ext);

if ( strlen($directory) > 1 && !str_ends_with($directory, '/')) { $directory .= '/'; }

..

...

....

// processURL2InlineImages function

if ( $myUrl[0]!='/' && strlen($basedir) > 1 && !str_ends_with($basedir, '/')) { $basedir .= '/'; }

if ($needTempFile && empty($attachment) && !str_starts_with($myUrl, "http"))

{

try {

$data = file_get_contents($basedir.urldecode($myUrl));

}

catch (\Throwable $e) {

_egw_log_exception($e);

}

}

}

if (str_starts_with($url, 'data:'))

```

PoC

1. Log in as any authenticated EGroupware user with mail access and open the mail compose window.

2. Switch to HTML body mode and insert: <img src="file:///etc/passwd">.

3. The server executes file_get_contents('file:///etc/passwd'), writes the content to a temp file, and attaches it as an inline MIME part.

Impact

An authenticated attacker can read arbitrary files accessible by the web server process, including /etc/passwd, application configuration files containing database credentials, private TLS keys, and environment files.

Remediation

Enforce a strict URI scheme allowlist before calling file_get_contents(). Replace the check !str_starts_with($myUrl, 'http') with if (!preg_match('#^https?://#i', $myUrl)) { continue; } to reject file://, ftp://, php://, data://, and any other non-HTTP scheme.

How this vulnerability can be exploited

This issue can be reached over the network, attack complexity is low, 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 high, integrity none, availability none.

Weakness class

CVE-2026-45016 is classified as CWE-73: External Control of File Name or Path. A caller can influence which file the application opens or writes, extending an operation to files that were never meant to be reachable.

Affected software

CVE-2026-45016 is recorded against 1 package.

  • egroupware/egroupware (fixed in 23.1.20260601)

Timeline and source

Published on 7 July 2026. No public exploit is currently recorded for this entry. Record sourced from OSV.

References

github.com (Web)
github.com (Package)

Details

Severity Unknown
CVSS Score N/A
CVSS Vector CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
CWE CWE-73
Public Exploit ✅ No
Source OSV
Published 2026-07-07
Updated 2026-08-12
Modified 2026-07-07
Fix URL N/A

Affected Packages

Software From version Fixed in
egroupware/egroupware 23.1.20260601

Similar Threats

Free Vulnerability Check

Is your site affected by CVE-2026-45016?

BotEraser helps you identify potentially vulnerable plugins and themes by checking your installation against CVE-2026-45016 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.