Miggo Logo

CVE-2023-37909:
Privilege escalation (PR)/remote code execution from account through Menu.UIExtensionSheet

8.8

CVSS Score
3.1

Basic Information

EPSS Score
0.92862%
Published
10/25/2023
Updated
11/10/2023
KEV Status
No
Technology
TechnologyJava

Technical Details

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Package NameEcosystemVulnerable VersionsFirst Patched Version
org.xwiki.platform:xwiki-platform-menumaven>= 5.1-rc-1, < 14.10.814.10.8
org.xwiki.platform:xwiki-platform-menu-uimaven>= 5.1-rc-1, < 14.10.814.10.8
org.xwiki.platform:xwiki-platform-menu-uimaven>= 15.0-rc-1, < 15.3-rc-115.3-rc-1

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability stems from missing output escaping in the Menu.UIExtensionSheet document's Velocity template. The commit diff shows three critical changes adding $escapetool.xml() escaping:

  1. Around localization render calls for extension point titles
  2. Around the extensionPointId value in option tags

Without this escaping, user-controlled input (like Groovy/Python macros in extensionPointId) would be rendered as raw HTML/script content. This matches the attack pattern described where {{/html}} closing tags and macro syntax could break out of HTML context to execute scripts. The vulnerability manifests in template rendering functions that handle UI extension configuration display, making the Velocity template code responsible for outputting these values the clear vulnerable component.

Vulnerable functions

Only Mi**o us*rs **n s** t*is s**tion

WAF Protection Rules

WAF Rule

### Imp**t *ny us*r w*o **n **it t**ir own us*r pro*il* **n *x**ut* *r*itr*ry s*ript m**ros in*lu*in* *roovy *n* Pyt*on m**ros t**t *llow r*mot* *o** *x**ution in*lu*in* unr*stri*t** r*** *n* writ* ****ss to *ll wiki *ont*nts. T*is **n ** r*pro*u***

Reasoning

T** vuln*r**ility st*ms *rom missin* output *s**pin* in t** M*nu.UI*xt*nsionS***t *o*um*nt's V*lo*ity t*mpl*t*. T** *ommit *i** s*ows t*r** *riti**l ***n**s ***in* $*s**p*tool.xml() *s**pin*: *. *roun* lo**liz*tion r*n**r **lls *or *xt*nsion point ti