Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1000 CNY

100.0%

CVE-2025-53547 PoC — Helm Chart Dependency Updating With Malicious Chart.yaml Content And Symlink Can Lead To Code Execution

Source
Associated Vulnerability
Title:Helm Chart Dependency Updating With Malicious Chart.yaml Content And Symlink Can Lead To Code Execution (CVE-2025-53547)
Description:Helm is a package manager for Charts for Kubernetes. Prior to 3.18.4, a specially crafted Chart.yaml file along with a specially linked Chart.lock file can lead to local code execution when dependencies are updated. Fields in a Chart.yaml file, that are carried over to a Chart.lock file when dependencies are updated and this file is written, can be crafted in a way that can cause execution if that same content were in a file that is executed (e.g., a bash.rc file or shell script). If the Chart.lock file is symlinked to one of these files updating dependencies will write the lock file content to the symlinked file. This can lead to unwanted execution. Helm warns of the symlinked file but did not stop execution due to symlinking. This issue has been resolved in Helm v3.18.4.
Description
CVE-2025-53547 one of poc code
Readme
# CVE-2025-53547 POC

this is a poc for CVE-2025-53547

`Chart.lock` links test file to /tmp/1.txt

/tmp/1.txt inject a command that create /tmp/2.txt

In real product enviroment, you can change `Chart.lock` link file to inject any command you want such as:

* /root/.bash_rc
* /root/.bash_profile
* /etc/profile
......

or any can run shell script file.

then change the `Chart.yaml` dependency repository url params to run other command.

## Usage

helm <= 3.18.3


first run

```bash
helm dependency update
```

then you'll find `/tmp/1.txt` 

then run

```bash
bash /tmp/1.txt
```

then you'll find `/tmp/2.txt`


## Reference

https://github.com/helm/helm/security/advisories/GHSA-557j-xg8c-q2mm
https://github.com/helm/helm/compare/v3.18.3...v3.18.4
File Snapshot

[4.0K] /data/pocs/13c73bac84bd0a138bd0b9de3a28de9f80accfd7 ├── [ 10] Chart.lock -> /tmp/1.txt ├── [ 423] Chart.yaml └── [ 756] README.md 0 directories, 3 files
Shenlong Bot has cached this for you
Remarks
    1. It is advised to access via the original source first.
    2. Local POC snapshots are reserved for subscribers — if the original source is unavailable, the local mirror is part of the paid plan.
    3. Mirroring, verifying, and maintaining this POC archive takes ongoing effort, so local snapshots are a paid feature. Your subscription keeps the archive online — thank you for the support. View subscription plans →