CVE-2025-22170
Executive Summary
CVE-2025-22170 is an authorization bypass vulnerability in Jira Align. A low-privilege user without sufficient permissions can perform an action they are not authorized to by including a specific state-related parameter associated with a privileged user. This flaw allows privilege escalation and unauthorized operations within the application. No public exploit code or proof-of-concept is currently available, and the vendor has not released a patch. The vulnerability is classified under MITRE Tactic T1548 (Abuse Elevation Control Mechanism) and CWE-862 (Missing Authorization).
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
CVSS Breakdown & Threat Level
- CVSS Score: 0.0 (No official vector assigned)
- Attack Vector: Network (likely)
- Attack Complexity: Low
- Privileges Required: Low
- User Interaction: None
- Scope: Unchanged
- Confidentiality Impact: High
- Integrity Impact: High
- Availability Impact: High
Threat Level: Critical (based on impact and ease of exploitation)
Deep Dive & Mechanics
The vulnerability resides in Jira Align’s authorization logic. When a low-privilege user sends a request to perform an action, the application checks the user’s permissions. However, if the request includes a state-related parameter (e.g., a session token, user ID, or role indicator) that belongs to a user with sufficient privileges, the authorization check is bypassed. This allows the attacker to execute actions as if they were the privileged user.
Root Cause: The application fails to validate that the state parameter matches the authenticated user’s identity. Instead, it trusts the parameter value to determine authorization.
Attack Vector: An authenticated low-privilege user crafts a request (e.g., HTTP POST/GET) containing a state parameter (e.g., user_id=admin or role=admin) and sends it to a sensitive endpoint. The server processes the request using the provided state, granting elevated privileges.
Impact: Unauthorized data access, modification, deletion, or configuration changes. Full compromise of Jira Align instance.
Vulnerable vs. Patched Code
No official patch or code diff is available. The vulnerable code likely resembles:
# Vulnerable pseudocode
def perform_action(request):
user = get_user_from_session(request)
state_param = request.GET.get('state')
if state_param:
# BUG: Uses state_param to determine permissions instead of user
if has_permission(state_param, 'admin_action'):
execute_admin_action()
else:
if has_permission(user, 'admin_action'):
execute_admin_action()
A patched version would validate the state parameter against the authenticated user:
# Patched pseudocode
def perform_action(request):
user = get_user_from_session(request)
state_param = request.GET.get('state')
if state_param:
# Validate that state_param belongs to the same user
if state_param == user.state_token:
if has_permission(user, 'admin_action'):
execute_admin_action()
else:
raise PermissionDenied()
else:
if has_permission(user, 'admin_action'):
execute_admin_action()
Exploitation & Lab Setup
Red Team
Prerequisites:
- Valid low-privilege account on Jira Align
- Knowledge of a privileged user’s state parameter (e.g., via session hijacking, information disclosure, or brute-force)
Exploitation Steps:
- Log in as low-privilege user.
- Capture a valid request to a sensitive endpoint (e.g.,
/api/admin/deleteUser). - Modify the request to include the privileged user’s state parameter (e.g.,
state=admin_session_token). - Send the modified request.
- Observe that the action is executed with elevated privileges.
Example HTTP Request (cURL):
curl -X POST https://jira-align.example.com/api/admin/deleteUser \
-H "Cookie: session=lowpriv_session" \
-d "user_id=target&state=admin_session_token"
Blue Team
Detection:
- Monitor for requests where the
stateparameter value does not match the authenticated user’s session. - Alert on multiple failed authorization attempts followed by a successful action.
- Use the Sigma rule below to detect anomalous state parameters.
Mitigation:
- Implement strict server-side validation of state parameters against the authenticated user.
- Apply principle of least privilege.
- Enable logging of all authorization decisions.
Indicators of Compromise (IOCs)
- Network: HTTP requests containing a
stateparameter with a value that differs from the session user’s identifier. - Logs: Authorization logs showing a low-privilege user performing admin actions.
- File: No specific file IOCs.
Detection Engineering
YARA Rule
rule CVE_2025_22170_Jira_Align_Auth_Bypass {
meta:
description = "Detects exploitation attempts of CVE-2025-22170 in Jira Align"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-22170"
strings:
$state_param = /state=[a-zA-Z0-9_-]{10,}/ nocase
$admin_action = /admin|delete|modify|create/i
condition:
$state_param and $admin_action
}
Sigma Rule
title: Jira Align Authorization Bypass via State Parameter
id: 12345678-1234-1234-1234-123456789abc
status: experimental
description: Detects HTTP requests with a state parameter that may indicate CVE-2025-22170 exploitation
author: Valters IT
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains: 'state='
cs-username|contains: 'lowpriv'
condition: selection
falsepositives:
- Legitimate use of state parameters in multi-step workflows
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-22170 Jira Align Authorization Bypass"; flow:to_server; content:"state="; http_uri; pcre:"/state=[a-zA-Z0-9_-]{10,}/"; classtype:attempted-admin; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the vulnerable endpoint if possible.
- Implement additional authorization checks in a Web Application Firewall (WAF) to block requests where the
stateparameter does not match the session user. - Monitor logs for suspicious activity.
Long-term Fix:
- Apply vendor patch when released.
- Conduct a code review of authorization logic.
- Implement robust server-side validation of all state parameters.
Workaround:
- Restrict access to sensitive endpoints via network segmentation or IP whitelisting.
Valters IT