Skip to main content

EGroupware EUVDEUVD-2026-45976

| CVE-2026-27823 HIGH
Path Traversal (CWE-22)
2026-07-07 https://github.com/EGroupware/egroupware GHSA-h9qx-v5xp-ph8p
8.7
CVSS 4.0 · Vendor: https://github.com/EGroupware/egroupware
Share

Severity by source

Vendor (https://github.com/EGroupware/egroupware) PRIMARY
8.7 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/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
8.8 HIGH

Network-reachable HTTP chain with low complexity and no user interaction; PR:L reflects the required low-privilege account (self-registration can lower it), and file overwrite of header.inc.php yields full C/I/A impact.

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

Primary rating from Vendor (https://github.com/EGroupware/egroupware).

CVSS VectorVendor: https://github.com/EGroupware/egroupware

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

Lifecycle Timeline

5
Source Code Evidence Fetched
Jul 20, 2026 - 16:28 vuln.today
Analysis Updated
Jul 20, 2026 - 16:28 vuln.today
v2 (cvss_changed)
Re-analysis Queued
Jul 20, 2026 - 16:22 vuln.today
cvss_changed
CVSS changed
Jul 20, 2026 - 16:22 NVD
8.7 (HIGH)
Analysis Generated
Jul 07, 2026 - 13:32 vuln.today

DescriptionCVE.org

Summary

A critical vulnerability has been identified in EGroupware that may lead to Remote Code Execution (RCE). The issue allows an authenticated attacker to execute arbitrary commands on the server. If user self-registration is enabled, the vulnerability may be exploitable without prior authentication.

The vulnerability stems from improper authorization checks combined with a file write primitive and an arbitrary file read vulnerability, which together enable full system compromise.

Details

1. Improper Authorization in SmallPartMediaRecorder::ajax_upload()

The vulnerability originates in:

EGroupware\SmallParT\Widgets\SmallPartMediaRecorder::ajax_upload()

The function attempts to verify whether the current user is a teacher of the specified course ID before allowing a file upload.

The critical authorization check ensures that the course access control list (ACL) contains:

$required_acl (self::ROLE_TEACHER, i.e., 3)

However, the course_acl value is derived from user-controlled request data.

_Bypass Technique_

A crafted request can manipulate the participant_role value inside the request body:

json
{
  "video": {
    "course_id": {
      "participants": [
        {
          "account_id": "7",
          "name": "Test",
          "joined_at": "2026-01-10",
          "participant_role": 3
        }
      ],
      "account_id": "7",
      "course_id": "1"
    },
    "video_hash": ".",
    "video_type": "file_here"
  }
}

Because the course ACL is taken from participant_role, setting it to 3 allows bypassing the isTeacher check.

2. Arbitrary File Write

After bypassing authorization, the function uploads the provided file into a controllable file path.

The file path is derived from the video_type (or video_path) value, enabling path traversal.

Due to file permission restrictions (server running as www-data), writable targets are limited. One viable target is ./header.inc.php

3. Constraints

Writing a simple PHP webshell may not immediately execute due to OPcache.

An invalid header.inc.php file will break the system and prevent the server from running.

Therefore, a valid file structure must be preserved.

4. Arbitrary File Read

A second vulnerability allows arbitrary file read via:

/egroupware/index.php?menuaction=importexport.importexport_export_ui.download&_filename=../../../usr/share/egroupware/header.inc.php&_suffix=txt&_type=text/plain&filename=leak

The issue resides in:

importexport_export_ui::download

The _filename parameter is user-controlled and used to read arbitrary files.

This allows retrieving the original header.inc.php content.

5. Achieving Remote Code Execution

By combining: Arbitrary file read (to retrieve valid header.inc.php); Arbitrary file write (to overwrite it with modified content), an attacker can inject controlled PHP code while preserving file validity.

This results in Remote Code Execution after server restart, or OPcache expiration. An alternative impact includes modifying the admin setup password to gain full system control.

Impact

Remote Code Execution Full system compromise Arbitrary file read Arbitrary file write Potential complete takeover of EGroupware instance

Reported by

This finding was discovered by Huong Kieu of Cenobe Security (https://cenobe.com/)

AnalysisAI

Remote code execution in EGroupware (composer package egroupware/egroupware) lets an authenticated low-privilege user chain an authorization bypass, an arbitrary file write, and an arbitrary file read to fully compromise the server. An attacker forges the participant_role value in a SmallPartMediaRecorder::ajax_upload() request to impersonate a course teacher, then uses path traversal to overwrite header.inc.php with attacker-controlled PHP while preserving a valid file structure recovered via the importexport download read primitive. Where user self-registration is enabled the entire chain can be reached without pre-existing credentials; no public exploit code is identified at time of analysis despite a detailed vendor advisory, and the flaw is not in CISA KEV.

Technical ContextAI

EGroupware is a PHP-based collaborative groupware suite (calendar, mail, CRM, e-learning via the SmallParT module) distributed as the Composer package egroupware/egroupware. The root cause class is CWE-22 (improper limitation of a pathname to a restricted directory, i.e., path traversal), compounded by a broken authorization model. In SmallPartMediaRecorder::ajax_upload() the teacher check reads the course ACL role from the request body's participant_role field rather than from a server-side trusted source, so client-supplied JSON dictates the privilege decision. The subsequent upload derives its destination from the user-controlled video_type/video_path value, permitting directory traversal to sensitive targets such as header.inc.php (the central EGroupware configuration bootstrap). A separate flaw in importexport_export_ui::download uses the user-controlled _filename parameter to read arbitrary files, allowing the attacker to exfiltrate the legitimate header.inc.php so a modified-but-valid replacement can be written without breaking the application. OPcache means injected PHP executes after a server restart or cache expiration.

RemediationAI

Vendor-released patch: upgrade to EGroupware 26.2.20260224 on the 26.x line, or to 23.1.20260224 on the 23.x line, per GHSA-h9qx-v5xp-ph8p (https://github.com/EGroupware/egroupware/security/advisories/GHSA-h9qx-v5xp-ph8p). Until patched, disable user self-registration to preserve the authentication barrier and prevent unauthenticated reach of the chain (side effect: new users must be provisioned manually by admins). Where feasible, disable or restrict access to the SmallParT module and block or ACL-restrict the ajax_upload endpoint and the importexport export download action (menuaction=importexport.importexport_export_ui.download) at a reverse proxy or WAF, since these carry the write and read primitives (trade-off: e-learning media recording and import/export features become unavailable to legitimate users). Ensure filesystem permissions prevent the www-data account from writing to header.inc.php and the EGroupware source tree, which removes the file-write target (verify this does not break legitimate config updates). After patching, rotate the admin/setup password and review header.inc.php for tampering, since the advisory notes password modification as an alternate impact.

More in PHP

View all
CVE-2019-11043 CRITICAL POC
9.8 Oct 28

In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it

CVE-2012-1823 CRITICAL POC
9.8 May 11

sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2, when configured as a CGI script (aka php-cgi), does not

CVE-2016-1555 CRITICAL POC
9.8 Apr 21

(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear

CVE-2018-11138 CRITICAL POC
9.8 May 31

The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by

CVE-2024-11680 CRITICAL POC
9.8 Nov 26

ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C

CVE-2025-49113 CRITICAL POC
9.9 Jun 02

Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au

CVE-2017-9841 CRITICAL POC
9.8 Jun 27

Util/PHP/eval-stdin.php in PHPUnit before 4.8.28 and 5.x before 5.6.3 allows remote attackers to execute arbitrary PHP c

CVE-2025-0108 HIGH POC
8.8 Feb 12

Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers

CVE-2021-25298 HIGH POC
8.8 Feb 15

Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re

CVE-2021-25296 HIGH POC
8.8 Feb 15

Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re

CVE-2013-4983 CRITICAL POC
10.0 Sep 10

The get_referers function in /opt/ws/bin/sblistpack in Sophos Web Appliance before 3.7.9.1 and 3.8 before 3.8.1.1 allows

CVE-2023-6553 CRITICAL POC
9.8 Dec 15

The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1

Share

EUVD-2026-45976 vulnerability details – vuln.today

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