Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: allow customers to define the trusted QEMU images #519

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

scme0
Copy link
Contributor

@scme0 scme0 commented Nov 7, 2024

What

There is a security risk if arbitary qemu images can be used by build steps - espcially for SaaS.

The solution is to allow customers to set a list of predetermined safe images via an env var that can be set on the helm chart. This is the last change to make that happen.

Other changes are:
engine: https://github.com/codefresh-io/engine/pull/1476
docker-builder: https://github.com/codefresh-io/cf-docker-builder/pull/68

Why

Qemu images are run in a privileged context so bad actors could get access to the host machines infrastructure from an image run as a qemu image.

Notes

Jira: https://codefresh-io.atlassian.net/browse/CR-25903

@scme0 scme0 requested a review from a team as a code owner November 7, 2024 15:21
@scme0 scme0 changed the title update helm chart fix: allow customers to define the trusted QEMU images Nov 7, 2024
@@ -536,6 +536,8 @@ runtime:
METRICS_PROMETHEUS_HOST: '0.0.0.0'
# -- Port for Prometheus metrics server
METRICS_PROMETHEUS_PORT: 9100
# -- Trusted QEMU images used for docker builds - when left blank only 'tonistiigi/binfmt' is trusted.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wouldn't it be better to just put tonistiigi/binfmt as default value here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe. Are there other ways that the runtime can be deployed? I mean instead of using helm? In those cases removing the hard-coded default from the code and putting it here as a default instead would be a breaking change. And I didn't want to set the default here leading people to assume that if they set it to empty, that it would effectively stop the default from being accepted.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not aware of any other way. As an operator I prefer explicit configs over some source code magic. And as a safeguard I'm believer in "it's better to crash that produce unexpected result", so just fail pre-flight check on startup in case someone managed to launch it with empty list.

But that's just my opinion, waiting for someone else to chime in.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's a fair opinion and I tend to agree with you. I had a bit of a closer look and it seems as though there are still customers using the CLI to install their runners in which case removing the default from the code would be a breaking change unless I also update the CLI to provide the default. In this case I think to make things easier I'll keep it as is and once the CLI is no longer used we can tidy this up.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants