CVE-2024-39900
Executive Summary
CVE-2024-39900 is a missing authorization vulnerability in the OpenSearch Dashboards Reports plugin. The flaw allows a user with the ‘Report Owner’ role to access private tenant resources (e.g., notebooks) that belong to other users. The system fails to verify if the requesting user is the actual resource author when accessing resources in a private tenant, leading to potential unauthorized data disclosure. The vulnerability is patched in OpenSearch 2.14.0.
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 affects the OpenSearch Dashboards Reports plugin, which is distributed as part of the OpenSearch project. The plugin is not an NPM, PyPI, Go, or Ruby package, but is a core component of the OpenSearch Dashboards ecosystem. Users should ensure they are using the patched version (2.14.0 or later) from the official OpenSearch repository.
CVSS Breakdown & Threat Level
- CVSS Score: 5.4 (Medium)
- Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: Low (Report Owner role)
- User Interaction: None
- Scope: Unchanged
- Confidentiality Impact: Low (unauthorized access to private tenant resources)
- Integrity Impact: Low (potential modification of accessed resources)
- Availability Impact: None
The threat level is medium due to the low complexity and the potential for data leakage from private tenants.
Deep Dive & Mechanics
The vulnerability resides in the authorization logic of the OpenSearch Dashboards Reports plugin. When a user with the ‘Report Owner’ role attempts to access a resource (e.g., a notebook) within a private tenant, the system does not verify that the user is the actual owner or author of that resource. This allows a malicious user to enumerate and access resources in private tenants that they should not have access to.
The root cause is a missing check in the resource access control mechanism. The plugin should validate that the requesting user’s ID matches the resource’s owner ID before granting access. The patch in OpenSearch 2.14.0 adds this check.
Vulnerable vs. Patched Code
Vulnerable Code (Conceptual):
// Vulnerable: No ownership check
function getPrivateResource(resourceId, user) {
const resource = db.getResource(resourceId);
if (resource.tenant === 'private') {
// Missing check: if (resource.ownerId !== user.id) throw new Error('Unauthorized');
return resource;
}
// ... other logic
}
Patched Code (Conceptual):
// Patched: Ownership check added
function getPrivateResource(resourceId, user) {
const resource = db.getResource(resourceId);
if (resource.tenant === 'private') {
if (resource.ownerId !== user.id) {
throw new Error('Unauthorized: You do not own this resource');
}
return resource;
}
// ... other logic
}
Exploitation & Lab Setup
Red Team
- Setup: Deploy OpenSearch Dashboards 2.13.0 with the Reports plugin enabled.
- Create Users: Create two users:
attacker(with Report Owner role) andvictim(with Report Owner role). - Victim Action: Log in as
victim, create a private notebook in their private tenant. - Exploit: Log in as
attacker. Use the Reports plugin API to enumerate resources in the victim’s private tenant. For example:
The vulnerable plugin will return the victim’s private notebook.GET /api/reports/resources?tenant=private&owner=victim - Data Exfiltration: The attacker can now view and potentially export the victim’s private data.
Blue Team
- Detection: Monitor API logs for unauthorized access attempts to private tenant resources. Look for patterns where a user accesses resources owned by another user.
- Mitigation: Immediately upgrade to OpenSearch 2.14.0 or later.
- Audit: Review access logs for any suspicious activity related to the Reports plugin.
Indicators of Compromise (IOCs)
- Log Entries: API requests to
/api/reports/resourceswith parameters indicating access to another user’s private tenant. - Network Traffic: Unusual patterns of data export from OpenSearch Dashboards.
- File Hashes: No specific file hashes available.
Detection Engineering
YARA Rule
rule CVE_2024_39900_OpenSearch_Reports {
meta:
description = "Detects exploitation attempts of CVE-2024-39900 in OpenSearch Dashboards Reports plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2024-39900"
strings:
$s1 = "/api/reports/resources" ascii wide nocase
$s2 = "private" ascii wide nocase
$s3 = "owner" ascii wide nocase
condition:
all of them
}
Sigma Rule
title: CVE-2024-39900 OpenSearch Reports Unauthorized Access
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects attempts to access private tenant resources via the OpenSearch Reports plugin
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: opensearch
detection:
selection:
cs-method: 'GET'
cs-uri-stem: '/api/reports/resources'
cs-uri-query|contains: 'tenant=private'
condition: selection
falsepositives:
- Legitimate access by resource owner
level: medium
Suricata Rule
alert http any any -> any any (
msg:"CVE-2024-39900 OpenSearch Reports Unauthorized Access";
flow:to_server,established;
content:"GET"; http_method;
content:"/api/reports/resources"; http_uri;
content:"tenant=private"; http_uri;
classtype:attempted-recon;
sid:1000001;
rev:1;
)
Remediation & Mitigation
- Immediate: Upgrade OpenSearch Dashboards to version 2.14.0 or later.
- Workaround: If upgrade is not possible, restrict access to the Reports plugin API using network policies or reverse proxy rules.
- Monitoring: Enable detailed logging for the Reports plugin and monitor for unauthorized access attempts.
- Review: Audit all user roles and permissions to ensure least privilege.
Valters IT
Securing Digital Frontiers