So, I decided that I wanted to pair GitHub Attestations with Cosign signatures anyway.
The threat model is kinda weird though.
With just Attestations, if someone took over and replaced the repo with the same one, same name, then they could still push images and make attestations for that image. It's just proving that the repo named "samhclark/custom-silverblue" built the images. So if they could like, rename my account. Or delete my account and takeover the namespace.
With just the Cosign signing, if the keys were exfiltrated somehow, and an attacker got upload access to GHCR, then they could sign and upload malicious images.
So, doing both together means that I can verify:
the image was built by a repo named samhclark/custom-silverblue
the image is was signed by a key that only the currentsamhclark/custom-silverblue repo has access to
It's a little flimsy. I'm not totally sure that both were necessary. But, I'm also using this as an excuse to practice with cosign and attestations a little so it's not a big deal.
So, I decided that I wanted to pair GitHub Attestations with Cosign signatures anyway.
The threat model is kinda weird though.
With just Attestations, if someone took over and replaced the repo with the same one, same name, then they could still push images and make attestations for that image. It's just proving that the repo named "samhclark/custom-silverblue" built the images. So if they could like, rename my account. Or delete my account and takeover the namespace.
With just the Cosign signing, if the keys were exfiltrated somehow, and an attacker got upload access to GHCR, then they could sign and upload malicious images.
So, doing both together means that I can verify:
samhclark/custom-silverblue
samhclark/custom-silverblue
repo has access toIt's a little flimsy. I'm not totally sure that both were necessary. But, I'm also using this as an excuse to practice with cosign and attestations a little so it's not a big deal.