A Helm contributor discovered that a specially crafted Chart.yaml
file along with a specially linked Chart.lock
file can lead to local code execution when dependencies are updated.
Impact
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 affects when dependencies are updated. When using the helm
command this happens when helm dependency update
is run. helm dependency build
can write a lock file when one does not exist but this vector requires one to already exist. This affects the Helm SDK when the downloader Manager
performs an update.
Patches
This issue has been resolved in Helm v3.18.4
Workarounds
Ensure the Chart.lock
file in a chart is not a symlink prior to updating dependencies.
For more information
Helm’s security policy is spelled out in detail in our SECURITY document.
Credits
Disclosed by Jakub Ciolek at AlphaSense.
A Helm contributor discovered that a specially crafted
Chart.yaml
file along with a specially linkedChart.lock
file can lead to local code execution when dependencies are updated.Impact
Fields in a
Chart.yaml
file, that are carried over to aChart.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., abash.rc
file or shell script). If theChart.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 affects when dependencies are updated. When using the
helm
command this happens whenhelm dependency update
is run.helm dependency build
can write a lock file when one does not exist but this vector requires one to already exist. This affects the Helm SDK when the downloaderManager
performs an update.Patches
This issue has been resolved in Helm v3.18.4
Workarounds
Ensure the
Chart.lock
file in a chart is not a symlink prior to updating dependencies.For more information
Helm’s security policy is spelled out in detail in our SECURITY document.
Credits
Disclosed by Jakub Ciolek at AlphaSense.