GHSA-66M2-V9V9-95C3

Vulnerability from github – Published: 2026-03-30 16:19 – Updated: 2026-03-31 18:39
VLAI?
Summary
ci4-cms-erp/ci4ms: System Settings (Mail Settings) Full Platform Compromise & Full Account Takeover for All-Roles & Privilege-Escalation via Stored DOM XSS
Details

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

Show details on source website

{
  "affected": [
    {
      "database_specific": {
        "last_known_affected_version_range": "\u003c= 0.28.6.0"
      },
      "package": {
        "ecosystem": "Packagist",
        "name": "ci4-cms-erp/ci4ms"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "0.31.0.0"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    }
  ],
  "aliases": [
    "CVE-2026-27599"
  ],
  "database_specific": {
    "cwe_ids": [
      "CWE-79"
    ],
    "github_reviewed": true,
    "github_reviewed_at": "2026-03-30T16:19:05Z",
    "nvd_published_at": "2026-03-30T21:17:08Z",
    "severity": "MODERATE"
  },
  "details": "## Summary\n### **Vulnerability: Stored DOM XSS via System Settings \u2013 Mail Settings (Same-Page Attribute Breakout \u0026 Persistent Payload Injection)**\n- Stored Cross-Site Scripting via Unsanitized Mail Settings Configuration Fields\n\n### Description\nThe application fails to properly sanitize user-controlled input within **System Settings \u2013 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.\n\nUnlike 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.\n\nThis represents different functionality and a separate vulnerability from landing-page injection.\n\n### Example Affected Fields\n- Mail Server: `test`\n- Mail Port: `465`\n- Email Address: `simple@gmail.com`\n- Email Password: (any input)\n- Mail Protocol: `SMTP`\n- Domain: `simple@domain.com`\n\n### Affected Functionality\n- System Settings \u2013 Mail Settings configuration\n- Same-page rendering of user-controlled input fields\n- DOM attribute injection within form inputs\n- Storage and retrieval of mail configuration values\n\n### Attack Scenario\n- An attacker injects a malicious JavaScript payload into one or more Mail Settings fields.\n- The payload breaks out of the HTML attribute context.\n- The application stores and re-renders the payload without sanitization or encoding.\n- The payload executes immediately on the same settings page.\n- The script executes in the browser context of the authenticated user managing Mail Settings.\n\n### Impact\n- Persistent Stored XSS\n- Immediate Same-Page DOM XSS execution\n- Execution of arbitrary JavaScript in victims\u2019 browsers\n- Administrative privilege escalation\n- Full administrator account takeover\n- Full account takeover across all roles\n- Full compromise of the entire platform\n\nEndpoints:\n- `/backend/settings/` (Mail Settings)\n\n## Steps To Reproduce (POC)\n1. Navigate to System Settings -\u003e Mail Settings\n2. Insert the following XSS payload into any Mail Settings field:\n`test\"\u003e\u003cimg src=1 onerror=alert()\u003e\" class=\"form-control\" placeholder=\"Name\" required\u003e`\n3. Save the settings\n4. Observe that the payload breaks out of the input attribute context\n5. The XSS executes immediately on the same page\n\n## Remediation\n- Never use .html() or any innerHTML-style sinks for user-controlled input in PHP or JavaScript.\n- Apply proper **HTML encoding and input sanitization** for all configuration fields.\n- Enforce CSP, HttpOnly, SameSite, and Secure flags for cookies to reduce the severity of XSS and potential CSRF escalation.\n- Audit all other system settings fields for similar attribute injection vulnerabilities.\n\n# Ready Video POC:\nhttps://mega.nz/file/KRNhUI6Q#NGC3Bow3RlnmdU1H2bGu1BGbpfIc-awi6IlvTp08V1s",
  "id": "GHSA-66m2-v9v9-95c3",
  "modified": "2026-03-31T18:39:50Z",
  "published": "2026-03-30T16:19:05Z",
  "references": [
    {
      "type": "WEB",
      "url": "https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-66m2-v9v9-95c3"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-27599"
    },
    {
      "type": "PACKAGE",
      "url": "https://github.com/ci4-cms-erp/ci4ms"
    },
    {
      "type": "WEB",
      "url": "https://mega.nz/file/KRNhUI6Q#NGC3Bow3RlnmdU1H2bGu1BGbpfIc-awi6IlvTp08V1s"
    }
  ],
  "schema_version": "1.4.0",
  "severity": [
    {
      "score": "CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:L/A:L",
      "type": "CVSS_V3"
    }
  ],
  "summary": "ci4-cms-erp/ci4ms: System Settings (Mail Settings) Full Platform Compromise \u0026 Full Account Takeover for All-Roles \u0026 Privilege-Escalation via Stored DOM XSS"
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.


Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…