Why this vulnerability is serious
CVE-2026-21589 is a path traversal triggered by a double-colon sequence (::) in HTTP request paths. An attacker who can reach your instance over the network — no credentials required — can read arbitrary files from the application web root and its subdirectories. Depending on your deployment layout, that may include configuration files, internal tokens, or cached data that were never intended to be publicly accessible.
The CVSS v4.0 base score of 9.3 reflects three compounding factors: no authentication required, no user interaction needed, and broad availability impact across the entire product family. Atlassian confirmed the patch on 5 October 2026. At the time of writing, proof-of-concept tooling circulates privately; public exploitation is expected to follow within days of advisory publication, as has been the pattern for previous high-severity Atlassian CVEs.
Cloud-hosted Atlassian accounts (Jira Cloud, Confluence Cloud) are not affected — the patch was applied automatically by Atlassian. This advisory concerns only self-hosted Data Center deployments.
Affected products and versions
- Confluence Data Center — all versions prior to 9.2.26 (LTS line) and 10.2.19 (current line)
- Jira Software Data Center — all versions prior to 9.12.40 (LTS line), 10.3.26, or 11.3.12
- Jira Service Management Data Center — all versions prior to 5.12.40 (LTS line), 10.3.26, or 11.3.12
- Bitbucket Data Center — see the official advisory at advisories.atlassian.com for the specific fixed version
- Bamboo Data Center — see the official advisory
- Crowd — see the official advisory
- Crucible / Fisheye — see the official advisory
- Atlassian Cloud — not affected
Prerequisites before upgrading
Before applying any patch, run a full backup of your database and home directory. For Confluence, this means both the database and the confluence.home directory (attachments, plugins, configuration). For Jira, back up the database and jira.home. Verify that your backup is readable before proceeding.
Check whether you are on a supported upgrade path. Atlassian publishes upgrade matrices; upgrading from a very old release to a current fixed version in a single step is sometimes unsupported and requires an intermediate stop. Use the Atlassian Upgrade Path Checker at my.atlassian.com before you start.
Confirm you have enough disk space: the installer unpacks a full distribution alongside the running instance. For large Confluence deployments, plan for at least 10 GB of free space on the installation volume.
Check your version and apply the patch
Identify your current version
For Confluence, navigate to Administration → General Configuration → About Confluence or read the
atlassian.versionkey fromconfluence.home/confluence.cfg.xml. For Jira, go to Administration → System → System Info and look for the Build field, or rungrep -m1 'version' /opt/atlassian/jira/atlassian-jira/META-INF/MANIFEST.MFon the host. Record the exact version string before continuing.Download the fixed installer
Fetch the patched installer from the official Atlassian download centre at
www.atlassian.com/software/confluence/download-archives(Confluence) or the equivalent page for your product. Verify the SHA-256 checksum against the value published on the download page before running anything. Do not use third-party mirrors.Put the application in maintenance mode
For Confluence DC: go to Administration → Maintenance and enable maintenance mode. This prevents new sessions from starting while active sessions drain. For Jira DC, the equivalent option is under Administration → System → Maintenance. Wait for active sessions to drop to zero or accept a brief interruption window.
Stop the application service
Run
sudo systemctl stop confluence(orjira, depending on your init configuration). Confirm the process is no longer listening:ss -tlnp | grep 8090should return nothing for Confluence's default port. If you use a custom port, adjust accordingly.Run the installer or unpack the archive
If you use the
.bininstaller, mark it executable withchmod +x atlassian-confluence-9.2.26-x64.binand run it as root. Choose Upgrade when prompted, pointing the installer at your existing installation directory. If you manage deployments manually via the.tar.gzarchive, replace the installation directory contents while preserving yourconfluence.homesymlinks andserver.xmlcustomisations.Restart and verify the service is up
Start the service with
sudo systemctl start confluenceand tail the log:tail -f /opt/atlassian/confluence/logs/atlassian-confluence.log. Watch for theServer startup inline. Then open the admin UI and confirm the version number displayed matches the patched release.For Data Center clusters: roll each node
In a cluster, remove one node from the load balancer, patch it, start it, wait for it to rejoin the cluster (check Administration → Clustering), then repeat for the next node. Never take all nodes offline simultaneously; doing so triggers the cluster's split-brain protection and may require manual recovery.
Test basic functionality and check logs for errors
After the upgrade, run a smoke test: create a page in Confluence or a ticket in Jira, check that attachments upload correctly, and verify that any SSO integration still works. Review
atlassian-confluence.logoratlassian-jira.logfor stack traces introduced by the upgrade.
Temporary workaround if patching is not immediately possible
If you cannot apply the patch right now, the most effective interim measure is to block external access to the instance entirely. Place the application behind a reverse proxy (nginx or Apache httpd) and restrict access to known IP ranges using allow / deny directives. At the nginx level, you can also add a location block that rejects requests containing the double-colon sequence: if ($request_uri ~* '::') { return 403; }. This is a heuristic filter, not a proper fix — it can be bypassed by encoding variants — but it reduces opportunistic scanning. Do not rely on this as a permanent solution. Patch as soon as your maintenance window allows.
Note: generic WAF rules that inspect the URL path may or may not catch all encoding variants of the :: traversal. Atlassian's own advisory explicitly states that network-level filtering is not a sufficient substitute for the patch.
Verify your instance is no longer vulnerable
After patching, confirm the version in the admin UI matches the fixed release. You can also perform a basic sanity check from a machine that has network access to the instance by sending a crafted request and verifying it returns a 400 or 403 rather than file content. A safe test path is to request http://your-domain.com/confluence/setup/::WEB-INF/web.xml — a fixed instance returns an error; a vulnerable one returns the file.
For a more rigorous check, use a tool like nuclei with the Atlassian CVE-2026-21589 template (available in the community nuclei-templates repository once the template is published). Run the scan from a network segment that can reach the instance and confirm zero findings.
Finally, review your application logs for any historical access patterns that match the :: traversal pattern, which would indicate exploitation attempts or actual exploitation before the patch. Search for the literal string :: in your access log: grep '::' /opt/atlassian/confluence/logs/access.log. Any hit before your patch date warrants a deeper incident review.
Long-term hardening measures
Patching CVE-2026-21589 addresses the immediate risk, but the broader lesson is about exposure surface. A few measures make your Atlassian deployment significantly harder to exploit in the future.
Restrict network exposure. If your team is not distributed globally, restrict port 443 to your office IP ranges and VPN exit nodes at the firewall level. Atlassian products have no business being directly reachable from the open internet unless your use case genuinely requires it. A VPS with a properly configured ufw ruleset can drop scan traffic before it ever reaches the application.
Run behind a reverse proxy with request filtering. nginx as a reverse proxy allows you to normalise request paths before they reach Atlassian, reject oversized headers, rate-limit the login endpoint, and log structured access data. The proxy_pass model also means your real application port (8090 for Confluence, 8080 for Jira) is never exposed directly.
Automate vulnerability scanning. Tools like trivy or grype can scan the installed Atlassian JAR files and flag known CVEs. Integrate this into a weekly cron job and route alerts to your monitoring system. Atlassian also maintains an RSS feed at advisories.atlassian.com — subscribe to it so you receive new advisories within hours of publication.
Keep a tested rollback procedure. Every upgrade should have a documented rollback step. Snapshot your VPS disk before patching, or at minimum verify your database backup is restorable. A rollback that has never been tested is not a rollback — it is a hope.
Vulnerable vs fixed versions for the three main products
Scroll the table
| Product | Vulnerable versions | Fixed version |
|---|---|---|
| Confluence Data Center | All versions < 9.2.26 (LTS) or < 10.2.19 | 9.2.26 (LTS) · 10.2.19 |
| Jira Software Data Center | All versions < 9.12.40 (LTS), < 10.3.26, or < 11.3.12 | 9.12.40 (LTS) · 10.3.26 · 11.3.12 |
| Jira Service Management DC | All versions < 5.12.40 (LTS), < 10.3.26, or < 11.3.12 | 5.12.40 (LTS) · 10.3.26 · 11.3.12 |
Conclusion
CVE-2026-21589 is one of the more serious Atlassian vulnerabilities in recent years: unauthenticated, wide product coverage, and a CVSS of 9.3. Patching is straightforward if your deployment follows Atlassian's standard layout, and the fixed versions are available now. The interim nginx filter buys time, but it is not a substitute for the upgrade.
If you are running Atlassian tools on a VPS and want a baseline that includes proper firewall configuration, automated snapshots, and a reverse proxy setup, the ServOrbit managed VPS offering is designed for exactly this workload.
Related reading: [Migrer Jira vers OpenProject ou Plane sur VPS](/blog/migrer-jira-openproject-plane-vps-2026) · [Authentik vs Authelia — SSO self-hosted](/blog/authentik-vs-authelia-sso-self-hosted) · [CrowdSec vs fail2ban — sécurité VPS](/blog/crowdsec-vs-fail2ban-securite-vps)