Group-Office is an enterprise customer relationship management and groupware tool. Prior to 26.0.25, 25.0.100, and 6.8.165, GroupOffice allows authenticated users to persist arbitrary legacy settings for any user_id via index.php?r=core/saveSetting. A separate client-side sink in the email module injects the email_font_size setting directly into JavaScript without escaping. By combining these two issues, any low-privileged authenticated user can overwrite an administrator's email_font_size setting with a JavaScript payload and trigger stored XSS in the administrator's browser when the GroupOffice web client loads views/Extjs3/modulescripts.php. This vulnerability is fixed in 26.0.25, 25.0.100, and 6.8.165.
My name is Oscar Uribe, Security Researcher at Fluid Attacks. I am reaching out because we have identified a security vulnerability in Pimcore 12.3.3 that we would like to report to you so we can coordinate a responsible disclosure together.
As part of our standard disclosure measures, we follow a timeline (outlined at https://fluidattacks.com/advisories/policy), which is aligned with ISO/IEC 29147:2018 and ISO/IEC 30111:2019. In short, the timeline works as follows: we ask for acknowledgment of the report within a few days of your first accessing it, and from there, we are happy to coordinate a joint disclosure date with you, typically within 90 days of the initial discovery. This gives your team reasonable time to assess, develop, and release a fix.
We have reserved the CVE ID **"CVE-2026-5394"** for this issue, and the advisory will eventually be published at [https://fluidattacks.com/advisories/dragons](https://fluidattacks.com/advisories/dragons). We are committed to coordinating the timing of that publication with you.
Please feel free to reach out if you have any questions about the report, the process, or the timeline. We are glad to work with you on this.
## Description
An authenticated administrative user who can import or save DataObject class definitions can inject attacker-controlled composite index metadata and trigger unintended SQL execution in the backend.
The vulnerable flow accepts `compositeIndices` from imported JSON, stores the values without strict validation, and later concatenates them directly into `ALTER TABLE ... DROP INDEX` and `ALTER TABLE ... ADD INDEX` statements executed through Doctrine DBAL.
Although the original report focused on `compositeIndices.index_key`, independent code review shows that the strongest and most reliable injection point is `compositeIndices.index_columns`, because it is inserted verbatim inside the `ADD INDEX (...)` clause. This permits injection of additional `ALTER TABLE` subclauses against Pimcore object tables without relying on stacked queries.
## Vulnerability
### Root cause
1. Source:
- `Pimcore\Model\DataObject\ClassDefinition\Service::importClassDefinitionFromJson()` accepts `compositeIndices` directly from imported JSON.
2. Assignment:
- `Pimcore\Model\DataObject\ClassDefinition::setCompositeIndices()` does not enforce an allowlist for index names or column names.
- The only special handling is a ManyToOne relation rewrite to `__id` and `__type`, which is not a security control.
3. Sink:
- `Pimcore\Model\DataObject\Traits\CompositeIndexTrait::updateCompositeIndices()` builds raw SQL with string concatenation and executes it via `$this->db->executeQuery(...)`.
4. Missing protection:
- `quoteIdentifier()` is used for the `SHOW INDEXES` query, but not for the dynamic `ALTER TABLE` statements.
- No server-side schema validation restricts `index_key` or `index_columns` to known safe identifier characters.
### Confirmed source-to-sink path
1. `importClassDefinitionFromJson()` decodes attacker-controlled JSON and forwards `compositeIndices`.
2. `setCompositeIndices()` stores those values without sanitizing identifier content.
3. `ClassDefinition::save()` reaches `ClassDefinition\Dao::update()`.
4. `Dao::update()` calls `updateCompositeIndices()` for:
- `object_store_<classId>`
- `object_query_<classId>`
5. `Localizedfield\Dao` also calls `updateCompositeIndices()` for:
- localized query tables
- localized store tables
### Why this is exploitable
The vulnerable `ADD INDEX` statement is built as:
```php
'ALTER TABLE `'.$table.'` ADD INDEX `' . $key.'` ('.$columnName.');'
```
`$columnName` is produced from `implode(',', $columns)` and is not quoted or validated. A malicious `index_columns` element such as:
```text
slider), DROP COLUMN `oo_className` --
```
produces SQL of the form:
```sql
ALTER TABLE `object_query_<id>` ADD INDEX `c_poc_idx` (slider), DROP COLUMN `oo_className` -- );
```
This remains a single `ALTER TABLE` statement, so the base vulnerability does not depend on multi-statement support. The attacker can inject additional DDL clauses affecting the target Pimcore object table.
### Impact
The issue allows a privileged attacker to alter backend SQL behavior during class-definition import/save and modify schema on Pimcore object tables associated with the affected class.
Practical impact includes:
- unauthorized schema modification on object query/store tables
- backend denial of service by breaking expected table layout
- data integrity impact for DataObject storage and queries
`index_key` is also concatenated into SQL without proper identifier escaping, but the most defensible exploitation path is through `index_columns`.
Relevant code:
- `models/DataObject/ClassDefinition/Service.php:92-137`
- `models/DataObject/ClassDefinition.php:994-1006`
- `models/DataObject/Traits/CompositeIndexTrait.php:30-85`
- `models/DataObject/ClassDefinition/Dao.php:217-218`
- `models/DataObject/Localizedfield/
phpMyFAQ before 4.1.3 contains an unauthenticated password reset vulnerability in the user password update API endpoint that allows attackers to change account passwords without token validation. Attackers can enumerate valid username and email pairs and force immediate password changes by sending PUT requests to the /api/index.php/user/password/update endpoint, causing account disruption and invalidating legitimate user credentials.
CVE-2026-9583 is a medium severity vulnerability in SourceCodester CET Automated Grading System with AI Predictive Analytics version 1.0. It involves information exposure through error messages in the SQL Handler component located in /index.php. The vulnerability can be exploited remotely without user interaction or privileges. Although the exploit code is publicly available, there is no confirmed patch or official remediation at this time.
CVE-2026-9575 is a medium severity SQL injection vulnerability in itsourcecode Student Transcript Processing System version 1.0. The issue arises from improper handling of the 'ID' parameter in the /admin/modules/class/index.php? view=view endpoint, allowing remote attackers to inject SQL commands. The vulnerability has been publicly disclosed, but no official patch or remediation guidance is currently available.
CVE-2026-9573 is a SQL injection vulnerability in itsourcecode Student Transcript Processing System version 1.0. The issue occurs in the /admin/modules/student/index.php file when manipulating the studentId parameter. This vulnerability can be exploited remotely without authentication. The exploit code is publicly available. The vulnerability has a CVSS 4.0 base score of 6.9, indicating medium severity.
A vulnerability was determined in hemant6488 CodeIgniter-StudentManagementSystem. The affected element is an unknown function of the file /index.php/students/addStudentView of the component Student Management Handler. Executing a manipulation can lead to improper access controls. The attack can be executed remotely. The exploit has been publicly disclosed and may be utilized. This product implements a rolling release for ongoing delivery, which means version information for affected or updated releases is unavailable. The project was informed of the problem early through an issue report but has not responded yet.
A vulnerability was determined in 546669204 vps-inventory-monitoring up to 98c00b370668c96ae75e91c15548d9ea113652d9. This issue affects the function eval of the file app/index/command/VpsTest.php of the component VpsTest Console. Executing a manipulation of the argument vf can lead to code injection. The attack may be performed from remote. The exploit has been publicly disclosed and may be utilized. This product utilizes a rolling release system for continuous delivery, and as such, version information for affected or updated releases is not disclosed. The project was informed of the problem early through an issue report but has not responded yet.
CtrlPanel is open-source billing software for hosting providers. In versions 1.1.1 and prior, the web-based installer (public/installer/index.php) is vulnerable to unauthenticated Remote Code Execution (RCE) because it performs the install.lock check only after including and executing form handler files, leaving installer endpoints reachable on already-installed instances. The handlers also pass unsanitized user input directly into shell commands, allowing an attacker to submit crafted requests that execute arbitrary commands on the server. The vulnerability stems from two combined weaknesses: (1) premature form handler execution before the lock file gate, and (2) unsafe use of user input in shell command construction. This issue is reported to be actively exploited in the wild. The issue has been fixed in version 1.2.0.
Vvveb before 1.0.8.3 contains an unrestricted file upload vulnerability in the plugin upload endpoint that allows super_admin users to execute arbitrary PHP code by uploading a malicious plugin ZIP file. Attackers can craft a ZIP containing a plugin.php with a valid Slug header and a public/index.php file with arbitrary PHP code, which executes as the web server user once accessed via subsequent unauthenticated HTTP requests to the plugin's public path.
PhpSpreadsheet is a pure PHP library for reading and writing spreadsheet files. Prior to 1.30.4, 2.1.16, 2.4.5, 3.10.5, and 5.7.0, the SpreadsheetML XML reader (Reader\Xml) does not validate the ss:Index row attribute against the maximum allowed row count (AddressRange::MAX_ROW = 1,048,576). An attacker can craft a SpreadsheetML XML file with ss:Index="999999999" on a <Row> element, which inflates the internal cachedHighestRow to ~1 billion. Any subsequent call to getRowIterator() without an explicit end row will attempt to iterate ~1 billion rows, causing CPU exhaustion and denial of service. This vulnerability is fixed in 1.30.4, 2.1.16, 2.4.5, 3.10.5, and 5.7.0.
SQL Injection in MuuCMF T6 v1.9.4.20260115 allows an unauthenticated attacker to compromise the entire database, achieve unauthorized administrative access, and potentially gain remote code execution by writing malicious files to the server's file system via the keyword parameter in the /index/controller/Search.php endpoint.
CVE-2026-8136 is a cross-site scripting (XSS) vulnerability in SourceCodester Pharmacy Sales and Inventory System version 1.0. The flaw exists in the /index.php? page=users endpoint where manipulation of the 'Name' argument can lead to XSS. The vulnerability can be exploited remotely and an exploit has been published. The CVSS score is 4.8, indicating medium severity. No official patch or remediation guidance is currently available from the vendor.
CVE-2025-67888 is a command injection vulnerability in Control Web Panel (CWP) versions before 0.9.8.1209. It arises from improper sanitization of user input passed via the "key" GET parameter to /admin/index.php when the "api" parameter is set. This flaw allows unauthenticated attackers to execute arbitrary OS commands with root privileges on the web server, but only if Softaculous or SitePad is present. The vulnerability has a high severity rating with a CVSS score of 7.3. No official patch or remediation guidance is currently provided.
CVE-2024-51092 is a critical remote code execution vulnerability in LibreNMS versions before 24.10.0. It involves OS command injection through specific PHP files: AboutController.php's index(), SettingsController.php's update(), and PollDevice.php's initRrdDirectory(). The vulnerability allows an attacker with low privileges to execute arbitrary code without user interaction. The CVSS score is 9.1, indicating a high severity with significant confidentiality, integrity, and availability impacts.
SourceCodester Pizzafy Ecommerce System version 1.0 contains a cross-site scripting (XSS) vulnerability in the /admin/index.php file. The vulnerability arises from improper handling of the 'page' argument, allowing remote attackers to inject malicious scripts. This issue has been publicly disclosed but there are no known exploits in the wild. The vulnerability has a medium severity rating with a CVSS score of 5.3.
CVE-2026-7716 is a SQL injection vulnerability in the Gym Management System In PHP and Windows NT 1.0, specifically in the /index.php file. The vulnerability arises from manipulation of the 'day' argument, allowing remote attackers to perform SQL injection. The vulnerability has a medium severity score of 6.3 and public exploit code is available.