- The Mess: A flaw in Apache Shiro’s Jakarta EE integration can let a low-privileged user craft an HTTP request that makes the server connect to an attacker-controlled URL and send attacker-controlled data.
- The Damage: The bug creates a server-side request path that can potentially turn a trusted application server into a connection proxy for an attacker.
- The Fix: Upgrade Apache Shiro to 3.0.1 or later. If an immediate upgrade is impossible, restrict the form resubmission host and port using the configuration options provided by Apache.
Your authentication framework is supposed to control where users go.
This bug can make it control where your server goes.
CVE-2026-58301 affects Apache Shiro deployments using the Jakarta EE integration module.
A low-privileged user can craft an HTTP request that causes the vulnerable server to initiate a connection to an attacker-controlled URL.
The server then sends attacker-controlled data to that destination.
That’s not a normal redirect.
That’s the application server making the connection.
The Server Becomes the Client
That distinction matters.
Normally, an attacker sitting outside a network can only directly reach services exposed to them.
But when a vulnerable server makes a request on the attacker’s behalf, the network position changes.
The attacker is no longer asking:
“Can I reach this from the Internet?”
The interesting question becomes:
“What can the application server reach?”
That is why server-side request vulnerabilities are dangerous.
The vulnerable machine may have access to infrastructure the attacker cannot directly touch.
Jakarta EE Deployments Are the Target
Not every Apache Shiro deployment is affected.
According to Apache, the vulnerability impacts:
- Apache Shiro 2.x
- Apache Shiro 3.0.0
And only deployments using the Jakarta EE integration module.
That limitation matters.
Administrators should not blindly assume every application using Shiro is vulnerable.
They need to check whether the affected integration module is actually present in the deployment.
A Low-Privileged User Is Enough
This isn’t described as a completely anonymous Internet attack.
Apache states that a low-privileged user can craft the malicious HTTP request.
That changes the threat model.
The attacker may already have:
- a basic account
- access to a restricted application area
- limited credentials
- a compromised low-privileged user session
Normally, that account would remain trapped inside the permissions assigned to it.
CVE-2026-58301 creates a possible route for that user to influence connections initiated by the server itself.
And servers usually have a more interesting network position than users.
The Network Trust Problem
Application servers frequently communicate with:
- databases
- internal APIs
- authentication services
- management interfaces
- cloud metadata services
- other backend systems
Those services may not be publicly reachable.
They don’t have to be.
The application server is already inside the network.
That is exactly why server-side request flaws can become much more serious than they initially appear.
The attacker isn’t necessarily breaking through the firewall.
They may be convincing a trusted machine to make the connection for them.
The Request Is the Weapon
The vulnerable functionality involves Apache Shiro’s form resubmission behavior.
A crafted request can influence where the server reconnects during that process.
The dangerous part isn’t downloading a malicious executable.
There doesn’t need to be malware.
The attacker is abusing normal HTTP behavior.
The server receives a request.
The framework processes it.
The framework initiates another connection.
The attacker controls where that connection goes.
Upgrade to 3.0.1
Apache’s primary fix is simple:
upgrade Apache Shiro to version 3.0.1 or later.
The patched release closes the vulnerable behavior.
For organizations that cannot upgrade immediately, Apache also provides a mitigation.
Administrators can restrict the host and port Shiro is allowed to connect to during form resubmission.
The relevant system properties are:
org.apache.shiro.form-resubmit-host
and:
org.apache.shiro.form-resubmit-port
The important point is to restrict the destination.
Don’t leave the application free to connect wherever attacker-controlled input tells it to go.
Check Before You Patch
Before applying the fix, identify whether the application actually uses:
Shiro + Jakarta EE integration
Then determine:
- the installed Shiro version
- whether the Jakarta EE module is enabled
- which applications expose the affected functionality
- what network resources those servers can reach
A server with access only to public services has a different risk profile than one connected to internal databases and administrative infrastructure.
SSRF Is About Position
That’s the thing developers sometimes miss.
The attacker doesn’t need the vulnerable application to contain valuable data.
They need the application to sit somewhere useful.
A server sitting inside a trusted network is already in a better position than an Internet attacker.
Give the attacker partial control over the server’s outbound requests and suddenly that position becomes part of the exploit.
Don’t Assume “Authenticated” Means Safe
The requirement for a low-privileged account may sound reassuring.
It shouldn’t.
Low-privileged accounts get compromised.
Credentials get reused.
Applications allow self-registration.
Attackers frequently start with limited access.
Modern compromises rarely end where they begin.
A restricted account can become:
restricted user → application flaw → internal network access
That’s why privilege boundaries inside web applications matter.
Bugstoday Opinion
This isn’t the loudest vulnerability of the week.
There is no unauthenticated RCE.
No kernel panic.
No router takeover.
But the logic behind it is ugly.
A low-privileged user can influence where a trusted server makes a connection.
That’s enough to turn a boring web request into a network problem.
And network position matters.
Attackers love systems that can reach things they cannot.
Bugstoday verdict: don’t underestimate server-side request bugs just because the attacker needs an account. If a low-privileged user can tell your application server where to connect, the real question isn’t what permissions the user has. It’s what the server can see.
Today’s Bugs. Tomorrow’s Breaches.
Sources
- Apache Shiro — Security Reports
- NVD — CVE-2026-58301




