CVE-2026-15687
Executive Summary
CVE-2026-15687 is a Low severity vulnerability in the Kubernetes Java client library. The flaw allows a compromised pod to create new files in arbitrary locations on the client machine executing copy operations via the copyDirectoryFromPod method when enableTarCompressing is set to false. This is a path traversal vulnerability (CWE-22) that requires local access to the client machine and user interaction.
Business Impact: Organizations using the Kubernetes Java client library for automated operations, particularly in CI/CD pipelines or administrative tooling, are at risk. The likely attacker is a malicious insider or an attacker who has already compromised a pod within the cluster. Industries with multi-tenant Kubernetes environments, such as cloud service providers, SaaS companies, and large enterprises, are most at risk.
Urgency Assessment: With a CVSS score of 2.7 (Low) and an EPSS exploitation probability of 0.0%, this vulnerability is not considered an immediate threat. The attack vector is local, requires high attack complexity, and user interaction, making it difficult to exploit in real-world scenarios. No active exploitation has been reported as of 2026-07-23.
Key Facts:
- Vendor: Kubernetes
- Affected Software: Kubernetes Java client library
- Patch Status: None available as of 2026-07-23
- CISA KEV: Not listed
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:L/AC:H/PR:L/UI:R/S:U/C:N/I:L/A:N
Metric Decomposition:
- AV:L (Local): The attacker must have local access to the client machine executing the copy operation. This is not a network-accessible vulnerability.
- AC:H (High): Exploitation requires specific conditions:
enableTarCompressingmust befalse, and the attacker must control a pod that can trigger the copy operation. - PR:L (Low): The attacker needs low-level privileges, such as access to a compromised pod.
- UI:R (Required): User interaction is required. A user on the client machine must execute the
copyDirectoryFromPodmethod. - S:U (Unchanged): The vulnerability does not affect resources beyond the vulnerable component.
- C:N (None): No confidentiality impact. The attacker cannot read files.
- I:L (Low): Low integrity impact. The attacker can create new files but cannot modify existing ones.
- A:N (None): No availability impact.
Qualitative Severity: Low
EPSS Interpretation: An EPSS score of 0.0% indicates that the probability of exploitation in the wild is negligible. This is consistent with the high complexity and specific preconditions required for exploitation.
Historical Comparison: This vulnerability is similar to CVE-2022-3172 (Kubernetes API Server path traversal) and CVE-2021-25741 (Kubernetes symlink exchange), both of which involve path traversal in Kubernetes components. However, CVE-2026-15687 is less severe due to its local attack vector and user interaction requirement.
Temporal/Environmental Considerations: No patch is available, and no exploit exists. The temporal score remains unchanged. In environments where enableTarCompressing is commonly set to false and untrusted pods are allowed to initiate copy operations, the environmental score may be slightly elevated.
Technical Deep Dive & Attack Mechanics
Root Cause Analysis: The vulnerability stems from insufficient input validation in the copyDirectoryFromPod method of the Kubernetes Java client library. When enableTarCompressing is false, the library performs a non-tar copy operation. The attacker-controlled pod can manipulate the directory structure or file paths returned during the copy, leading to path traversal.
Step-by-Step Exploitation:
- Precondition: The attacker has compromised a pod in the Kubernetes cluster. The client machine uses the Kubernetes Java client library with
enableTarCompressingset tofalse. - Trigger: A user on the client machine executes
copyDirectoryFromPodto copy a directory from the compromised pod to the client machine. - Exploitation: The compromised pod responds with crafted directory entries containing path traversal sequences (e.g.,
../../malicious_dir/). - Outcome: The client library writes files to arbitrary locations on the client machine, such as
~/.ssh/authorized_keysor/etc/cron.d/.
Attack Surface: The attack surface is limited to the client machine running the Kubernetes Java client library. The vulnerability is not exploitable over the network directly.
Pre-conditions:
- The attacker must have compromised a pod.
- The client must use
copyDirectoryFromPodwithenableTarCompressing=false. - A user must initiate the copy operation.
Why Standard Defenses May Fail: Standard network-based defenses (WAF, firewalls) are ineffective because the attack occurs over legitimate Kubernetes API calls. Endpoint detection may miss the file creation if it mimics legitimate administrative activity.
Vulnerable vs. Patched Code Analysis
Vulnerable Code (Pseudocode):
public void copyDirectoryFromPod(String podName, String srcPath, String destPath, boolean enableTarCompressing) {
if (!enableTarCompressing) {
// Non-tar copy - vulnerable to path traversal
List<FileEntry> entries = getPodDirectoryListing(podName, srcPath);
for (FileEntry entry : entries) {
String targetPath = destPath + "/" + entry.getName(); // No sanitization
writeFile(targetPath, entry.getContent());
}
}
}
Patched Code (Expected):
public void copyDirectoryFromPod(String podName, String srcPath, String destPath, boolean enableTarCompressing) {
if (!enableTarCompressing) {
List<FileEntry> entries = getPodDirectoryListing(podName, srcPath);
for (FileEntry entry : entries) {
String sanitizedName = sanitizePath(entry.getName()); // Added sanitization
String targetPath = destPath + "/" + sanitizedName;
// Validate targetPath is within destPath
if (!targetPath.startsWith(destPath)) {
throw new SecurityException("Path traversal detected");
}
writeFile(targetPath, entry.getContent());
}
}
}
Patch Analysis: The fix adds path sanitization and validation to ensure that the target path remains within the intended destination directory. This prevents directory traversal attacks.
Regression Considerations: The patch may break workflows that rely on relative paths or symlinks within copied directories. Teams should test thoroughly after applying the patch.
Timeline & Disclosure History
- CVE Publication Date: 2026-07-23T18:43:25.357Z
- Estimated Discovery: Likely discovered through internal security review or bug bounty program.
- Disclosure Process: The vulnerability was reported to the Kubernetes security team and coordinated through the CVE program.
- Known Exploitation: No known active exploitation as of 2026-07-23.
- CISA KEV: Not listed.
Threat Intelligence Context
Threat Actor Profile: This vulnerability is most likely to be exploited by:
- Insider threats: Malicious developers or operators with access to pods.
- Post-compromise actors: Attackers who have already established a foothold in a pod and are seeking lateral movement or persistence on client machines.
Attack Campaign Context: No known campaigns are exploiting this CVE. It is not associated with any APT groups or ransomware operations.
Geographic Targeting: No specific geographic targeting patterns are known.
Industry Verticals at Risk:
- Cloud service providers
- SaaS companies
- Large enterprises with multi-tenant Kubernetes clusters
- CI/CD pipeline operators
Historical Connection: Similar to CVE-2022-3172 (Kubernetes API Server path traversal) and CVE-2021-25741 (Kubernetes symlink exchange), which also involve path traversal in Kubernetes components.
Exploitation & Lab Setup
Red Team Section
Lab Setup:
- Environment: Docker-based Kubernetes cluster with a single node.
- Prerequisites:
- Kubernetes cluster (e.g., using kind or minikube)
- Java application using Kubernetes Java client library (version with
enableTarCompressing=false) - A compromised pod (simulated by deploying a pod with a malicious file structure)
- Network Config: Ensure the client machine can communicate with the Kubernetes API server.
Exploitation Walkthrough:
- Deploy a malicious pod with a crafted directory structure containing path traversal entries.
- On the client machine, execute:
java -jar client.jar --copy-from-pod malicious-pod /data /tmp/output --no-tar - The client library will write files to
/tmp/output/../../etc/cron.d/maliciousinstead of/tmp/output/.
Expected Output: Files are created in arbitrary locations on the client machine, such as /etc/cron.d/ or ~/.ssh/.
Post-Exploitation: The attacker can achieve persistence (e.g., cron job) or privilege escalation (e.g., SSH key injection) on the client machine.
Blue Team Section
Detection:
- Monitor for file creation events in unexpected directories (e.g.,
/etc/cron.d/,~/.ssh/) originating from Java processes. - Log entries showing
copyDirectoryFromPodcalls withenableTarCompressing=false. - Network traffic showing large directory listings from pods to client machines.
Log Entries:
- Kubernetes audit logs showing
copyoperations from pods. - File system audit logs (e.g.,
auditd) showing file creation in sensitive directories.
Network Traffic Signatures:
- Unusually large responses from pods to client machines during copy operations.
- Directory listings containing path traversal sequences (
../).
Endpoint Behavioral Indicators:
- Java process writing files outside its expected working directory.
- Unexpected file creation in system directories.
Indicators of Compromise (IOCs)
No confirmed IOCs available — the following patterns are illustrative of exploitation attempts:
Network IOCs:
- Kubernetes API calls with
copyoperation from a pod to a client machine. - Large directory listings from pods containing
../sequences.
HTTP Request Patterns:
- POST requests to
/api/v1/namespaces/{namespace}/pods/{pod}/execwithcommand=copyparameters.
File System Artifacts:
- Unexpected files in
/etc/cron.d/,~/.ssh/,/tmp/with suspicious content. - Files created by Java processes in non-standard locations.
Process Execution Anomalies:
- Java processes with file write operations to system directories.
Log Entries:
auditdlogs:type=SYSCALL msg=audit(...): arch=... syscall=openat success=yes exit=... a0=... a1=/etc/cron.d/malicious ...
STIX-like IOC List:
| Type | Value | Description |
|---|---|---|
| file | /etc/cron.d/malicious | [EXAMPLE — not a real IOC] |
| process | java -jar client.jar --copy-from-pod | [EXAMPLE — not a real IOC] |
| network | POST /api/v1/namespaces//pods//exec | [EXAMPLE — not a real IOC] |
Detection Engineering
YARA Rule
rule CVE-2026_15687_Detection {
meta:
description = "Detects exploitation of CVE-2026-15687 in Kubernetes Java client"
author = "Valters IT Hub"
date = "2026-07-23"
reference = "https://www.valtersit.com/cve/cve-2026-15687"
strings:
$path_traversal = "../" ascii wide nocase
$copy_method = "copyDirectoryFromPod" ascii wide nocase
$no_tar = "enableTarCompressing" ascii wide nocase
condition:
all of them
}
Sigma Rule (SIEM)
title: CVE-2026-15687 Kubernetes Exploitation Detection
id: b5e11154-9b88-4f38-9f8a-92f9cbee17ac
status: experimental
description: Detects exploitation attempts targeting CVE-2026-15687 in Kubernetes Java client
author: Valters IT Hub
date: 2026-07-23
references:
- https://www.valtersit.com/cve/cve-2026-15687
logsource:
category: process_creation
product: linux
detection:
selection:
Image|endswith: '/java'
CommandLine|contains|all:
- 'copyDirectoryFromPod'
- 'enableTarCompressing'
- 'false'
condition: selection
falsepositives:
- Legitimate administrative use of non-tar copy operations
level: high
Suricata IDS Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2026-15687 Kubernetes Java Client Path Traversal"; flow:to_server,established; content:"POST"; http_method; content:"/api/v1/namespaces/"; http_uri; content:"/exec"; http_uri; content:"copy"; http_client_body; pcre:"/\.\.\//"; classtype:attempted-admin; sid:1000001; rev:1;)
Elastic (EQL) Query
process where event.type == "start" and
process.name == "java" and
process.command_line contains "copyDirectoryFromPod" and
process.command_line contains "enableTarCompressing" and
process.command_line contains "false"
Splunk SPL Query
index=main sourcetype=process_linux
| search process_name=java AND command_line="*copyDirectoryFromPod*" AND command_line="*enableTarCompressing*" AND command_line="*false*"
| table _time, host, user, process_name, command_line
Wazuh Rule
<group name="kubernetes,">
<rule id="100001" level="12">
<if_sid>550</if_sid>
<field name="process.name">java</field>
<field name="process.command_line">\.*copyDirectoryFromPod\.*</field>
<field name="process.command_line">\.*enableTarCompressing\.*</field>
<field name="process.command_line">\.*false\.*</field>
<description>CVE-2026-15687: Kubernetes Java client non-tar copy operation detected</description>
<mitre>
<id>T1204</id>
</mitre>
</rule>
</group>
Remediation & Mitigation
Immediate Actions (0-24 hours)
- Patch: No patch available. Monitor the Kubernetes security advisory page for updates.
- Compensating Controls:
- Set
enableTarCompressing=truein all Java client configurations. - Restrict pod-to-client copy operations using Kubernetes RBAC.
- Implement network policies to limit pod-to-client communication.
- Set
- Network-Level Mitigation: Block outbound connections from pods to client machines on non-standard ports.
- Authentication Hardening: Ensure only trusted users can execute copy operations.
Short-term (1-7 days)
- Configuration Hardening: Audit all Java client configurations to ensure
enableTarCompressingis set totrue. - Monitoring Implementation: Deploy the detection rules provided above.
- Vulnerability Scanning: Use
kubectlto identify pods with suspicious file structures:kubectl exec <pod> -- find / -name "*.txt" -path "*../*"
Long-term
- Architecture Changes: Use tar-based copy operations exclusively.
- Security Control Improvements: Implement file integrity monitoring on client machines.
- Developer Training: Educate developers on path traversal vulnerabilities in file copy operations.
Validation
- Confirm
enableTarCompressing=truein all Java client configurations. - Test copy operations with a malicious pod to ensure path traversal is blocked.
- Verify that detection rules generate alerts for non-tar copy operations.
References & Resources
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-15687
- CVE.org: https://www.cve.org/CVERecord?id=CVE-2026-15687
- Vendor advisory: See vendor security page
- OSV: https://osv.dev/vulnerability/CVE-2026-15687
- Related CWE: https://cwe.mitre.org/data/definitions/22.html
- MITRE ATT&CK: https://attack.mitre.org/techniques/T1204/
Report generated by Valters IT Hub Neural Engine v25 | 2026-07-23 | https://www.valtersit.com/cve/cve-2026-15687