CVE-2025-69907
Executive Summary
CVE-2025-69907 is an unauthenticated information disclosure vulnerability in Newgen OmniDocs, a document management and workflow automation platform. The flaw resides in the /omnidocs/GetListofCabinet API endpoint, which lacks authentication and access control mechanisms. A remote, unauthenticated attacker can query this endpoint to retrieve sensitive internal configuration data, including cabinet names and database-related metadata. This exposure allows for unauthorized enumeration of backend deployment details, which can be leveraged to plan further targeted attacks against the organization's infrastructure.
The vulnerability is classified under CWE-306 (Missing Authentication for Critical Function) and carries a CVSS v3.1 base score of 7.5 (High), with the vector AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N. The attack complexity is low, requires no privileges or user interaction, and impacts confidentiality at a high level. No public exploit code or Nuclei template has been released at this time, but the vulnerability is considered publicly known due to the NVD description.
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 NPM, PyPI, Go, or Ruby package. It is a proprietary enterprise application (Newgen OmniDocs) and does not fall under the supply chain package security scope.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
- Base Score: 7.5 (High)
- Attack Vector (AV): Network – The vulnerability is exploitable remotely over the network.
- Attack Complexity (AC): Low – No special conditions or race conditions are required.
- Privileges Required (PR): None – No authentication is needed.
- User Interaction (UI): None – No user action is required.
- Scope (S): Unchanged – The vulnerable component and the impacted component are the same.
- Confidentiality (C): High – Sensitive configuration data (cabinet names, database metadata) is exposed.
- Integrity (I): None – No data modification is possible.
- Availability (A): None – No denial of service impact.
Threat Level: High. The ease of exploitation (no auth, low complexity) combined with the potential for reconnaissance makes this a critical finding for any organization using Newgen OmniDocs.
Deep Dive & Mechanics
The /omnidocs/GetListofCabinet endpoint is designed to return a list of document cabinets and associated metadata. In a properly secured implementation, this endpoint would require authentication (e.g., a valid session token or API key) and enforce access control to ensure only authorized users can enumerate cabinets. However, in vulnerable versions of Newgen OmniDocs, the endpoint does not validate any credentials or session tokens.
How the vulnerability works:
- An attacker sends an HTTP GET request to
https://target-omnidocs-instance/omnidocs/GetListofCabinet. - The server processes the request without checking for authentication headers or session cookies.
- The response contains a JSON or XML payload listing all configured cabinets, including internal names, database connection strings (or references), and other metadata.
- The attacker can parse this information to understand the backend architecture, database types, and naming conventions.
Potential impact of disclosed information:
- Cabinet names may reveal business units, project codes, or sensitive document categories.
- Database metadata (e.g., server names, table prefixes) can be used to craft SQL injection or other database-level attacks.
- Knowledge of internal naming conventions aids in social engineering or brute-force attacks on other endpoints.
Vulnerable vs. Patched Code
Since no official patch or source code diff is available, the following is a conceptual comparison based on the vulnerability description.
Vulnerable Code (Conceptual):
# Vulnerable endpoint - no authentication check
@app.route('/omnidocs/GetListofCabinet', methods=['GET'])
def get_cabinet_list():
cabinets = db.query("SELECT name, metadata FROM cabinets")
return jsonify(cabinets)
Patched Code (Conceptual):
# Patched endpoint - authentication required
@app.route('/omnidocs/GetListofCabinet', methods=['GET'])
@require_auth # decorator that validates session token
def get_cabinet_list():
cabinets = db.query("SELECT name, metadata FROM cabinets")
return jsonify(cabinets)
The patch would involve adding an authentication middleware or decorator that checks for a valid session token or API key before processing the request. Additionally, access control checks should be implemented to ensure the authenticated user has permission to view cabinet lists.
Exploitation & Lab Setup
Red Team (Offensive)
Lab Setup:
- Deploy a vulnerable instance of Newgen OmniDocs (version unknown, but any version without the patch).
- Ensure the
/omnidocs/GetListofCabinetendpoint is accessible without authentication.
Exploitation Steps:
- Identify the target OmniDocs instance (e.g., via Shodan or manual discovery).
- Send a GET request to the vulnerable endpoint:
curl -X GET http://target-omnidocs-instance/omnidocs/GetListofCabinet - Parse the response to extract cabinet names and metadata.
- Use the disclosed information to plan further attacks (e.g., SQL injection on database endpoints, brute-force on admin panels).
Example Output (Simulated):
{
"cabinets": [
{
"name": "HR_Confidential",
"database": "omnidocs_db",
"server": "db01.internal.corp"
},
{
"name": "Finance_2025",
"database": "omnidocs_fin",
"server": "db02.internal.corp"
}
]
}
Blue Team (Defensive)
Detection:
- Monitor for requests to
/omnidocs/GetListofCabinetfrom unauthenticated sources. - Alert on any response containing cabinet names or database metadata.
- Correlate with other reconnaissance patterns (e.g., directory brute-forcing).
Hunting:
- Search web server logs for
GET /omnidocs/GetListofCabinetentries. - Look for anomalous IPs making multiple requests to this endpoint.
- Check for subsequent attacks targeting database endpoints or admin interfaces.
Indicators of Compromise (IOCs)
- Network IOCs:
- HTTP GET requests to
/omnidocs/GetListofCabinetwithout authentication headers. - Responses containing JSON/XML with keys like
cabinet,database,server,metadata.
- HTTP GET requests to
- File IOCs:
- Web server logs showing repeated access to the vulnerable endpoint.
- Behavioral IOCs:
- Unusual enumeration of cabinet names followed by attempts to access other API endpoints.
Detection Engineering
YARA Rule
rule CVE_2025_69907_OmniDocs_InfoDisclosure {
meta:
description = "Detects exploitation attempts of CVE-2025-69907 in Newgen OmniDocs"
author = "Valters IT"
date = "2025-04-10"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2025-69907"
strings:
$s1 = "/omnidocs/GetListofCabinet" ascii wide nocase
$s2 = "cabinet" ascii wide nocase
$s3 = "database" ascii wide nocase
condition:
any of ($s*) and #s1 > 0
}
Sigma Rule
title: CVE-2025-69907 - Unauthenticated Access to OmniDocs Cabinet List
id: 8a4b3c2d-1e5f-4a7b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects HTTP requests to the vulnerable /omnidocs/GetListofCabinet endpoint without authentication
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
service: access_log
detection:
selection:
cs-method: 'GET'
cs-uri-stem: '/omnidocs/GetListofCabinet'
condition: selection
falsepositives:
- Legitimate authenticated users (if endpoint is later patched)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-69907 - OmniDocs Cabinet List Enumeration"; flow:to_server; content:"GET"; http_method; content:"/omnidocs/GetListofCabinet"; http_uri; classtype:attempted-recon; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Restrict Network Access: Block external access to the
/omnidocs/GetListofCabinetendpoint using a web application firewall (WAF) or reverse proxy. - Implement Authentication: Add authentication checks to the endpoint. Ensure only authenticated users with proper roles can access cabinet lists.
- Apply Input Validation: Even after authentication, validate that the user has permission to view the requested data.
Long-Term Fixes:
- Contact Newgen for an official patch or upgrade to a patched version.
- Conduct a security audit of all API endpoints to ensure consistent authentication and authorization.
- Implement logging and monitoring for all API access, especially for endpoints that expose sensitive metadata.
Workarounds:
- If patching is not immediately possible, disable the endpoint entirely by modifying the application configuration or using a reverse proxy to return a 403 Forbidden for requests to
/omnidocs/GetListofCabinet.
Valters IT Signature:
This report was generated by Valters IT Cyber Threat Intelligence. For questions or further analysis, contact threatintel@valtersit.com.
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.