---
id: "CVE-2025-9566"
kind: "vulnerability"
aliases: ["CVE-2025-9566", "GHSA-wp3j-xq48-xpjw"]
title: "podman kube play symlink traversal vulnerability"
severity: "high"
cvss: 8.1
epss: 0.01159
exploited: false
status: "open"
category: "runtime"
products: [{"name": "github.com/containers/podman/v5", "fixed": ["5.6.1"], "affected": "<= 5.6.0", "ecosystem": "go"}, {"name": "github.com/containers/podman/v4", "fixed": [], "affected": "<= 4.9.5", "ecosystem": "go"}]
ecosystems: ["go"]
tags: ["containers", "cwe-22", "cwe-61", "kube-play", "linux", "podman", "runtime"]
not_affected_if: ["no-configmap-or-secret-mounts", "no-kube-play", "single-start-volumes"]
published_at: "2025-09-04T20:01:54+00:00"
first_seen_at: "2026-11-03T06:31:20+00:00"
updated_at: "2026-11-03T06:33:21+00:00"
sources: [{"source": "ghsa", "url": "https://github.com/advisories/GHSA-wp3j-xq48-xpjw", "first_seen_at": "2026-11-03T06:31:20+00:00"}, {"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2025-9566", "first_seen_at": "2026-11-03T06:49:03+00:00"}]
---

# podman kube play symlink traversal vulnerability

When podman kube play mounts a ConfigMap or Secret volume that already holds a symlink to a host file, running the same kube file again makes podman write the YAML-defined contents to that host path. An attacker who controls a container can use this to write arbitrary files on the host, though not choose what gets written.

_Summary, check and fix written by a model from the sources; labelled as such._

## Affected

- go:github.com/containers/podman/v5 affected <= 5.6.0 fixed 5.6.1
- go:github.com/containers/podman/v4 affected <= 4.9.5 fixed ?

## How to check

- Run `podman version` and compare the version against the fixed release.
- Search kube YAML files for ConfigMap or Secret volume mounts used with `podman kube play`.
- Check whether those volumes are reused across repeated starts.

## Fix

- podman v5: move to `5.6.1` or later.
- podman v4: unknown (no fixed version stated in the sources).

## Timeline

- 2026-11-03T06:31:20+00:00 ghsa https://github.com/advisories/GHSA-wp3j-xq48-xpjw
- 2026-11-03T06:49:03+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2025-9566

## Documents

- [advisory] Maintainer's advisory: api.github.com https://api.github.com/repos/podman-container-tools/podman/security-advisories/GHSA-wp3j-xq48-xpjw
- [advisory] Maintainer's advisory: github.com https://github.com/containers/podman/security/advisories/GHSA-wp3j-xq48-xpjw
- [fix] Patch: github.com https://github.com/containers/podman/commit/43fbde4e665fe6cee6921868f04b7ccd3de5ad89

## From the sources

### Impact

The podman kube play command can overwrite host files when the kube file contains a ConfigMap or Secret volume mount and the volume already contains a symlink to a host file.
This allows a malicious container to write to arbitrary files on the host BUT the attacker only controls the target path not the contents that will be written to the file. The contents are defined in the yaml file by the end user.

### Requirements to exploit:
podman kube play must be used with a ConfigMap or Secret volume mount AND must be run more than once on the same volume. All the attacker has to do is create the malicious symlink on the volume the first time it is started. After that all following starts would follow the symlink and write to the host location. 


### Patches
Fixed in podman v5.6.1
https://github.com/containers/podman/commit/43fbde4e665fe6cee6921868f04b7ccd3de5ad89

### Workarounds

Don't use podman kube play with ConfigMap or Secret volume mounts.

### PR with test for CI

Adding on 9/8/2025 by @TomSweeneyRedHat , this is the PR containing the test in CI: https://github.com/containers/podman/pull/27001

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
