CVE-2026-21589: Atlassian's Pre-Auth File Read and What It Would Have Seen

October 11, 2026 · 15 min read

CVE-2026-21589: Atlassian's Pre-Auth File Read and What It Would Have Seen

TL;DR - Atlassian found and fixed a pre-authentication arbitrary file read in its Data Center and Server products, and shipped the advisory on 5 October 2026. It is CVE-2026-21589, scored 9.3 Critical under CVSS 4.0, and it affects every version of Bitbucket, Confluence, Jira Service Management, Jira, Bamboo, Crowd, Crucible and Fisheye from before the fixed releases. Cloud is already patched, so a fully Cloud tenant is not affected. The attacker needs no account and no login, but they do need to already know the exact file name and path, because there is no directory listing or browse available to them. Anything they can read sits inside that application's own web root folder. As of 6 October, watchTowr reports no exploitation in the wild, so this is a patch job rather than an incident. What you need to do: confirm which of the eight you actually run on-premises, patch to the fixed release from Atlassian's advisory, read the interim mitigation before you assume it closes the gap, and pull access logs looking for 200 responses on config-type paths under your install directory.


By The Numbers

ItemValue
CVECVE-2026-21589
Severity9.3 Critical (CVSS 4.0)
Self-hosted products affected8 (Bitbucket, Confluence, Jira Service Management, Jira, Bamboo, Crowd, Crucible, Fisheye)
Accounts an attacker needsNone, and the exact file name and path must already be known
Directory listing availableNo (no listing, no browse)
Files readableOnly those inside the application web root folder
Fixed versions published5 October 2026 (Atlassian Cloud already patched)
Reported exploitation as of 6 Oct 2026None (watchTowr)

I read the watchTowr piece on the morning of 6 October standing at the kitchen bench, and I went back to it twice because the headline number and the practical number are not the same number.

The headline is 9.3 Critical, pre-authentication, no login required. The practical detail is that the attacker has to already know the exact file name and path, because there is no directory browse available. Those two facts point at completely different conversations with your exec team, and most of the coverage has only had room for the first one.

Here is what Atlassian published. On 5 October 2026 they released a security advisory covering CVE-2026-21589, an arbitrary file access flaw in Atlassian Data Center and Server products, scored 9.3 Critical on CVSS 4.0. It affects all eight self-hosted products they publish under that umbrella: Bitbucket, Confluence, Jira Service Management, Jira, Bamboo, Crowd, Crucible and Fisheye. Every version before the fixed releases is in scope. Cloud was already patched, so there is nothing for cloud-only customers to do.

The other thing worth saying up front is that Atlassian found this one themselves. watchTowr published a Rapid Reaction on 6 October, it trended on r/netsec with 63 points, and their read was that no exploitation has been seen so far.

Which is where I got interested. Because if you run Confluence in an Australian organisation, the question that matters is not "is this bad", it is what would someone have read. Not what would they have written, not what would they have taken over. Read. And Confluence is where a depressing amount of Australian corporate knowledge sits, quietly, in a web root, waiting.

Slow down. That is the whole post. Let me walk you through who is exposed, what actually lives under the web root, whether the interim mitigation closes the gap, and what you go looking for in your logs.


What Atlassian actually disclosed

Worth stating plainly, because the disclosure behaviour here is one of the better ones I have read this year.

Atlassian discovered the flaw in its own products, wrote the advisory, published the fixed versions on 5 October 2026, and published interim mitigations for fleets that cannot patch immediately. No third-party researcher got there first, no negotiation window, no "we can't comment on active exploitation".

The other half belongs to watchTowr. Their post deliberately does not publish the request paths or proof-of-concept strings, and that is the right call. Publishing the exact strings would help everyone who has not patched yet, and it would cost them clicks. A researcher who withholds the weapon to give the patching window room to breathe is doing the job properly.

The bad news, and there is not much of it: eight products, every version, and a CVSS of 9.3. That is a wide fix surface for a team with a lot on the calendar.

Am I exposed? The eight-product checklist

Run this first. It takes about ten minutes and it decides whether you have a week of work or a decade of nobody-owns-this-box work.

1. Data Center or Server, or Cloud? If every Atlassian property you use is Cloud, you are done. This split is doing most of the work in this whole story, and it is the same split that decided the ServiceNow AI Platform post back in August.

2. Name your on-premises products. Tick what you actually run: Bitbucket, Confluence, Jira Service Management, Jira, Bamboo, Crowd, Crucible, Fisheye. Most organisations run two or three. Some run six and have forgotten about two of them.

3. Find the ones nobody owns. The real risk is not the Confluence instance your platform team maintains. It is the Bamboo server that ran a build pipeline in 2021 and still has a DNS record pointing at it, or the Fisheye instance from a repository migration that was meant to be decommissioned in 2022. Search DNS records, firewall rules, the asset register and your SSL certificate inventory. Anything with no named owner goes to the top of the list.

4. Get your build numbers. Every one of the eight shows its version in the admin console. Write them down next to the product name. If you cannot produce that list in ten minutes, the inventory gap is the finding, and it is worth more than the version numbers would have been.

5. Work out who can reach them, from where. Pull the internet-facing rules for each instance. Anything reachable straight from the internet with no reverse proxy, no WAF and no VPN in front of it is your highest priority in this post. Pre-auth means the attacker needs nothing you hand out, and the difficulty of the attack is not what keeps them out. Your perimeter is.

The knowledge barrier in this bug is real, but it is not an access control. It raises the cost of the attack. It does not decide whether your instance is one request from the internet or three internal hops away.

What "pre-auth" actually means for your incident timeline

Pre-auth is the phrase that should have moved you off the couch on a Sunday morning, and here is why.

An attacker using this needs no account, no session, no login form, no MFA prompt, no API token. That means the ordinary alerting does not fire. Your failed login counters do not increment. Your identity provider does not see anything. Your audit log does not get a row saying "a user did a thing", because there was no user.

Nothing about this attack leaves a user-shaped trace. That is the part that should worry you more than the CVSS score.

Now put the second fact next to it. The attacker needs the exact file name and path already. No listing, no browse, no "give me everything". So if they did use it, they brought a list with them. That list came from somewhere: an earlier breach elsewhere, a leaked backup, a config file somebody committed to a repository that is now public, a paste site, a former employee, or the stock file names that ship with the product.

That changes the shape of the hunt, and I will come back to it. But it also changes the risk. File read is reconnaissance. Reconnaissance is patient. There is no rush stage after it that the victim necessarily sees, because the value of the read is knowing, not taking. Knowing where the database credentials are written. Knowing what the disaster recovery runbook says. Knowing who to call for the firewall change process.

What lives under the web root

This is the section that changed how I think about this vulnerability, and the angle the coverage mostly skipped.

The files readable through this bug sit inside the application's web root folder. That is the folder the product installs into and serves from, the tree holding the application's own files rather than your content. The point is not that an attacker reads your wiki pages through it. The point is what else sits in that folder.

Go and look at your own install directory today. Do not take my list, take yours. On a typical Data Center install you are looking at configuration files, and configuration files are where the answers to the recon questions live. The application configuration for Atlassian Data Center and Server products carries the database connection details for the instance. Look at yours and confirm it, because the value of the read depends on these files being known to be there.

Then work outward from there:

Runbooks and recovery documentation. Most Australian organisations have a Confluence space with disaster recovery procedures, and most of those describe where the backups are written and how the restore is tested. That is a map of the most valuable data you hold, handed to an unauthenticated stranger.

Network and firewall diagrams. If your onboarding space has a diagram showing the DMZ, the vendor VPN ranges and how traffic reaches the application server from the internet, the file read has told an attacker exactly which two hops they need to get past.

Automation rules and integrations. Jira automations hold the configuration of the connected tools they talk to. Check what yours can reach.

Exports, attachments and generated files. Anything your instance wrote to disk under that tree rather than to the database.

Onboarding and offboarding documents. Access-request forms, account provisioning notes, the name of the person who does the approvals.

Everything from the last penetration test. If a report or a remediation plan sits in a space that maps to the install tree, your findings are your attacker's roadmap.

None of this needs the attacker to be clever. It needs them to have eight correct strings and a way to reach the box. Both are in scope for the attacker, and only one of them is in scope for you to change.

Does the interim mitigation close it, or just shrink it?

Atlassian published interim mitigations for fleets that cannot patch immediately, which is generous. I am not going to paraphrase a mitigation I have not read line by line, so treat this as the questions to ask, not a summary of the advisory.

Question one: does it remove the file read, or restrict the reachable files? Very different outcomes. Restricting the reachable files shrinks the surface without closing the primitive, and a shrunk primitive with a patch behind it is still a "patch this week" answer, not a "we have mitigated it" answer.

Question two: does it change how the instance must be exposed? If the mitigation assumes the instance is behind a reverse proxy or a WAF and yours is directly reachable, it does not apply to you no matter how faithfully you applied it. Check the assumptions first.

Question three: does it depend on configuration you have changed? An organisation that locked the admin console to a VPN two years ago is in a different position from one that has not, and the mitigation language may quietly assume the tighter of those two.

The honest answer for most teams: patch. The interim mitigation is for the fleet that genuinely cannot patch this month, the clinical system on a hardware refresh timeline, the instance owned by a team that no longer exists. If you have a normal change window, the fixed release is the mitigation and the debate is a distraction.

What to hunt for if someone already used it

Nobody reported exploitation as of 6 October, so this is due diligence rather than incident response. It is still worth doing, because the cost is one export and the downside of skipping it is unbounded.

1. Make sure you have logs to hunt with. This is the step most teams fail. Access logging on these applications is not always on by default and can be thin when it is. If you cannot produce 30 days of request logs, that gap is your finding. You cannot do step 2 on a log you never collected.

2. Look for a run of 200s with no 404s in it. This is the signature, and it comes straight out of the vulnerability's design. If someone is guessing file names blind, your log will be full of 404s. That is noise, and low concern. If your log shows a tight sequence of requests to distinct file paths that all returned 200, with no 404s anywhere between them, that is not guessing. That is a list somebody arrived with. Prioritise it above everything else in this post.

3. Filter for requests with no session. Pull GET requests to paths under the install and static tree and separate out the ones carrying no session cookie, no authorisation header and no authenticated user context. A file fetch that never involved a login is the shape of this bug.

4. Cross-check against analytics. Page views and user activity records will not show these requests, because a file fetch is not a page view. Pull analytics for the same window and look for source addresses that appear in the access log but not in analytics.

5. Rotate anything that was readable. If you find successful reads of configuration files, treat every credential in them as disclosed. Database credentials, mail credentials, service account keys, licence keys. Rotate them, then patch. Rotating first buys you nothing, because the next read gets you the new password.

Then hunt for the list itself. Search your own source repositories for the install paths, search paste sites for your product and version, and ask whether anyone has ever copied a config file into a ticket or a chat window. That is where the attacker's strings came from.


Key Takeaways

  • It is eight self-hosted products, not Jira alone. Bitbucket, Confluence, Jira Service Management, Jira, Bamboo, Crowd, Crucible and Fisheye, every version before the fixed releases.
  • Cloud is already patched. If your estate is entirely Atlassian Cloud, the advisory is not your problem.
  • 9.3 Critical, pre-auth, no login. No failed logins, no identity provider events, no user-shaped trace in your audit log.
  • The attacker must already know the exact file name and path. Knowledge raises the cost. It does not stop anything.
  • A run of 200s with no 404s between them is the signature. That is a list arriving, not someone guessing.
  • The fixed releases shipped on 5 October 2026, with interim mitigations for fleets that cannot patch yet.
  • No exploitation reported as of 6 October. This is a patch job, not an incident.

FAQ

Is Atlassian Confluence Cloud affected by CVE-2026-21589?

No. The advisory covers Data Center and Server deployments. Atlassian had already patched Cloud, so there is no action for cloud-only customers. If you have a hybrid arrangement with an on-premises instance, the on-premises side is the one that matters.

Which Atlassian products are in scope?

Eight self-hosted products: Bitbucket, Confluence, Jira Service Management, Jira, Bamboo, Crowd, Crucible and Fisheye. Every version before the fixed releases is affected. Pull the exact fixed version numbers from Atlassian's security bulletin rather than trusting a summary, including this one.

What can an unauthenticated attacker actually read?

Files inside the application's web root folder, using the application's own file access. Nothing outside that tree. There is no directory listing or browse function, so the attacker has to already know the exact file name and path. I am not going to publish request paths or proof-of-concept strings. watchTowr deliberately withheld them and I see no reason to reverse that.

Is CVE-2026-21589 being exploited in the wild?

Not as of 6 October 2026, according to watchTowr. Atlassian found and disclosed it themselves on 5 October. I would treat any claim to the contrary published before you patch as unverified.

How severe is CVE-2026-21589?

9.3 Critical, scored under CVSS 4.0. The severity is deserved, because it is unauthenticated and silent. But a severity score does not tell you how urgent your response is. A pre-auth file read with a knowledge precondition and no known exploitation is a patch in your normal window, not a 2 a.m. page.

What should I hunt for in my logs?

GET requests to paths under your install directory that returned 200 with no session or authentication context, especially where they form a sequence of distinct paths with no 404s between them. Cross-check those source addresses against application analytics, because a file fetch is not a page view. If you find successful reads of config files, rotate every credential they contained.

Should I bother with the interim mitigation if I cannot patch yet?

Read the advisory language first and apply the three questions above. If the mitigation removes the file read, apply it today. If it only shrinks the set of readable files, treat it as a bridge and get the fixed release scheduled.

My Take

The number I keep coming back to is not the CVSS score. It is the gap between what the fix covers and what your runbooks describe.

A 9.3 pre-auth flaw in Jira and Confluence sounds, from the outside, like an incident. It is not. Atlassian found it, said so, shipped fixes in days, published mitigations for the estates that needed time, and the research write-up withheld the weapon. That is the good version, and it is rare enough that I want to say so out loud.

The uncomfortable version is the gap between "no exploitation reported" and "no exploitation". Those are different sentences, and the difference between them is your logging. Nobody on earth is watching for a sequence of successful 200 responses on a config path at 3 a.m. on a Tuesday unless somebody decided months ago to turn the logging on and keep it.

The reframe I want you to take away is the one in the heading. Stop asking whether the file read is bad. Start asking what is under your web root, because somebody already asked, and the answer is a map of your database credentials, your recovery plan and your escalation contacts. Go and look. Ten minutes. You will find something.

Then patch, and rotate whatever needed rotating.


Mathew Clark Founder, SecureInSeconds Currently: working out which of the eight products exist in my own estate, which turned out to be four Drafted with AI assistance - read, verified, and fixed by a human.


Further Reading

Share:
Buy me a coffee

You might also like