CVE-2021-21610 is a medium-severity (CVSS 6.1) Cross-site Scripting (XSS) vulnerability in org.jenkins-ci.main:jenkins-core. A fix is available for org.jenkins-ci.main:jenkins-core — see the affected versions and patch details below.
Reflected XSS vulnerability in Jenkins markup formatter preview
EPSS Exploitation Probability
Probability of exploitation in the next 30 days, from FIRST.org EPSS.
How urgent is this, really
Where this sits among everything scored
Real-World Exposure
org.jenkins-ci.main:jenkins-core☕org.jenkins-ci.main:jenkins-coreReal-time download stats are indexed for npm and PyPI packages. This vulnerability affects Maven packages — download data is not available via public APIs for these ecosystems.
Description
Jenkins allows administrators to choose the markup formatter to use for descriptions of jobs, builds, views, etc. displayed in Jenkins. When editing such a description, users can choose to have Jenkins render a formatted preview of the description they entered.
Jenkins 2.274 and earlier, LTS 2.263.1 and earlier does not implement any restrictions for the URL rendering the formatted preview of markup passed as a query parameter. This results in a reflected cross-site scripting (XSS) vulnerability if the configured markup formatter does not prohibit unsafe elements (JavaScript) in markup, like Anything Goes Formatter Plugin.
Jenkins 2.275, LTS 2.263.2 requires that preview URLs are accessed using POST and sets Content-Security-Policy headers that prevent execution of unsafe elements when the URL is accessed directly.
In case of problems with this change, these protections can be disabled by setting the Java system properties hudson.markup.MarkupFormatter.previewsAllowGET to true and/or hudson.markup.MarkupFormatter.previewsSetCSP to false. Doing either is discouraged.
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| ☕Maven | org.jenkins-ci.main:jenkins-core | all versions | 2.263.2org.jenkins-ci.main:jenkins-core:2.263.2 |
| ☕Maven | org.jenkins-ci.main:jenkins-core | ≥ 2.264&&< 2.275 | 2.275org.jenkins-ci.main:jenkins-core:2.275 |
Affected Products
jenkinsjenkinsDetection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for org.jenkins-ci.main:jenkins-core, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update org.jenkins-ci.main:jenkins-core to 2.263.2 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms CVE-2021-21610 is resolved across your whole dependency graph.
Workarounds
Escape or sanitise the affected output on the server side rather than relying on client-side filtering, and add a Content-Security-Policy that blocks inline script execution so injected markup cannot run even if it reaches the page.
Fixing This On Your OS
If you run this on a Linux distribution, patch through your package manager against the distro's own security advisory below — it tracks the exact backported fix for your release, which can ship on a different timeline (and sometimes a different severity) than the upstream project.
| Product | Fixed in | Advisory |
|---|---|---|
| Red Hat OpenShift Container Platform 3.11 | jenkins-0:2.263.3.1612433584-1.el7 | RHSA-2021:0637 |
| Red Hat OpenShift Container Platform 4.5 | conmon-2:2.0.21-1.rhaos4.5.el7 | RHSA-2021:0429 |
| Red Hat OpenShift Container Platform 4.6 | jenkins-0:2.263.3.1612434510-1.el8 | RHSA-2021:0423 |
| Red Hat OpenShift Container Platform 4.8 | atomic-openshift-service-idler-0:4.8.0-202106281541.p0.git.39cfc66.assembly.stream.el8 | RHSA-2021:2437 |
Frequently Asked Questions
Is CVE-2021-21610 in your dependencies?
Find it across Maven, including transitive dependencies.