XWiki PlantUML Macro Vulnerable to Server-Side Request Forgery (SSRF) via 'server' parameter

Description

Impact

The PlantUML Macro is vulnerable to Server-Side Request Forgery (SSRF). The macro allows users to specify an alternative PlantUML server via the server parameter. However, the application does not validate the supplied URL. An attacker can supply an internal IP address or a malicious external URL. The XWiki server will attempt to connect to this URL to "render" the diagram.

This issue affects all versions of the Plant UML Macro extension till version 2.4 included.

Patches

Version 2.4.1 of the Plant UML Macro extension fixes the issue by verifying if the supplied server domain matches one of the trusted domain configured inside of XWiki.

Workarounds

Protect the XWiki server by placing it in a DMZ so that it cannot access any other internal servers.

Resources

The issue was fixed in PLANTUML-25 by the commit c8b19bda93058794e04c8862fc7ca85c59b5fe5c.

For more information

If there are any questions or comments about this advisory:
* Open an issue in JIRA XWiki.org
* Send an email to Security Mailing List

Attribution

The issue was reported by Łukasz Rybak.

Basic information

Type
reviewed
Severity
medium
Advisory on GitHub
Open advisory ↗
Repository advisory
Open repository advisory ↗
Source code
Browse source ↗
Published (advisory)
2026-05-05 19:32:57 UTC
Updated
2026-05-05 19:32:58 UTC
GitHub reviewed
2026-05-05 19:32:57 UTC
NVD published
2026-05-04

EPSS Score

Score Percentile
0.03% 6.95%

CVSS Scores

Base score Version Severity Vector
4.4 3.1
CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:C/C:L/I:L/A:N Click to expand
Attack vector (AV:N)
Could be attacked over the internet or any normal routed network—not just someone sitting at the machine.
Attack complexity (AC:H)
Even with access, the exploit needs extra luck, timing, or a fussy environment to actually work.
Privileges required (PR:L)
A normal user session is enough; they don’t have to be admin.
User interaction (UI:R)
A real person has to do something—click, install, enable—otherwise it doesn’t land.
Scope (S:C)
Breaking this can reach past the original component and bite other resources—bigger blast radius.
Confidentiality (C:L)
Some sensitive info could get out, but not a total data dump.
Integrity (I:L)
Attackers could change some data, but it’s limited—not everything goes.
Availability (A:N)
Service keeps running; no real outage angle.

Identifiers

CWEs

CWE id Name
CWE-918 Server-Side Request Forgery (SSRF)

Credits

  • lukasz-rybak (reporter)

Affected packages (1)

Vulnerable version ranges and first patched releases as published by GitHub.

Ecosystem Package Vulnerable range First patched Vulnerable functions
maven org.xwiki.contrib.plantuml:macro-plantuml-macro < 2.4.1 2.4.1

References

cvelogic Threat Intelligence