Moderate severityOSV Advisory· Published Jan 10, 2026· Updated Jan 12, 2026
XWiki Full Calendar Macro vulnerable to data leak through Calendar.JSONService
CVE-2025-65090
Description
XWiki Full Calendar Macro displays objects from the wiki on the calendar. Prior to version 2.4.6, users with the rights to view the Calendar.JSONService page (including guest users) can exploit the data leak vulnerability by accessing database info, with the exception of passwords. This issue has been patched in version 2.4.6.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
org.xwiki.contrib:macro-fullcalendar-pomMaven | < 2.4.6 | 2.4.6 |
Affected products
1- Range: macro-fullcalendar-1.1.6, macro-fullcalendar-1.1.7, macro-fullcalendar-1.1.8, …
Patches
125bc14c181c9Merge commit from fork
2 files changed · +36 −9
macro-fullcalendar-ui/src/main/resources/Calendar/JSONService.xml+34 −9 modified@@ -1,5 +1,4 @@ <?xml version="1.0" encoding="UTF-8"?> - <!-- * See the NOTICE file distributed with this work for additional * information regarding copyright ownership. @@ -39,7 +38,34 @@ <minorEdit>false</minorEdit> <syntaxId>xwiki/2.0</syntaxId> <hidden>true</hidden> - <content>{{velocity filter="html" wiki="false"}} + <content>{{velocity output='false'}} +#macro (getField $classField $useDisplay) + #set ($result = $escapetool.xml($services.localization.render('xwiki.calendar.jsonservice.invalid'))) + #set ($propertyClass = $itemdoc.getFirstObject($classField).getProperty($classField).getPropertyClass()) + #if ($propertyClass) + #if (($propertyClass.getClassType() != 'Email' || !$services.mail.general.shouldObfuscate()) && + $propertyClass.getClassType() != "Password") + #if ($useDisplay) + #set ($result = $itemdoc.display($classField)) + #else + #set ($result = $itemdoc.getValue($classField)) + #set ($xdom = $services.rendering.parse($result, 'xwiki/2.1')) + #set ($result = $services.rendering.render($xdom, 'plain/1.0')) + #end + #else + #set ($userRef = $xcontext.getUserReference()) + #if ($isGuest) + #set ($userRef = 'guest user') + #end + #set ($discard = $services.logging.getLogger('Calendar.JSONService').warn("Forbidden access attempt: + User: ${userRef} + Class: ${request.classname} + Field: ${classField}")) + #end + #end +#end +{{/velocity}} +{{velocity filter="html" wiki="false"}} #if ($xcontext.action == 'get' && $services.csrf.isTokenValid($request.form_token)) #if ("$!{request.outputSyntax}" == 'plain') $response.setContentType('application/json') @@ -84,13 +110,12 @@ ## Display the description as plain text. It is expected to be the content of a textarea field, so it has ## to be be processed. The $doc.display() method returns the content wrapped in {{html}} macro, which ## doesn't help in a wiki="false" environment. - #set ($description = $itemdoc.getValue($extraFields[0].trim())) - #set ($xdom = $services.rendering.parse($description, 'xwiki/2.1')) - #set ($description = $services.rendering.render($xdom, 'plain/1.0')) - #set ($currentResult.description = $description) - - #set ($currentResult.location = $itemdoc.display($extraFields[1].trim())) - #set ($currentResult.status = $itemdoc.display($extraFields[2].trim())) + #getField($extraFields[0].trim() false) + #set ($currentResult.description = $result) + #getField($extraFields[1].trim() true) + #set ($currentResult.location = $result) + #getField($extraFields[2].trim() true) + #set ($currentResult.status = $result) #end #if ($end) #set ($discard = $currentResult.put('end', $end))
macro-fullcalendar-ui/src/main/resources/Calendar/Translations.xml+2 −0 modified@@ -71,6 +71,8 @@ xwiki.calendar.notification.error=Failed to save the document. Reason: update fa xwiki.calendar.notification.loading=Loading calendar... xwiki.calendar.notification.loaded=Calendar loaded +xwiki.calendar.jsonservice.invalid=Field not allowed or invalid. + rendering.macro.calendar.name=Calendar rendering.macro.calendar.description=Displays a Calendar rendering.macro.calendar.parameter.gApiKey.name=gApiKey
Vulnerability mechanics
Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
5- github.com/advisories/GHSA-637h-ch24-xp9mghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2025-65090ghsaADVISORY
- github.com/xwiki-contrib/macro-fullcalendar/commit/25bc14c181c9a92f493b20ac264388c7ba171884ghsax_refsource_MISCWEB
- github.com/xwiki-contrib/macro-fullcalendar/security/advisories/GHSA-637h-ch24-xp9mghsax_refsource_CONFIRMWEB
- jira.xwiki.org/browse/FULLCAL-82ghsax_refsource_MISCWEB
News mentions
0No linked articles in our index yet.