@@ -22,13 +22,16 @@ jobs:
2222 - uses : ./.github/actions/setup-release-security-tools
2323 with :
2424 install-syft : " false"
25+ - name : Install cosign
26+ uses : sigstore/cosign-installer@6f9f17788090df1f26f669e9d70d6ae9567deba6 # v4.1.2
2527 - name : Download and verify latest supported release evidence
2628 env :
2729 GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
2830 run : |
2931 set -euo pipefail
32+ tag=$(gh release view --repo "${{ github.repository }}" --json tagName --jq .tagName)
3033 mkdir release-evidence
31- gh release download --repo "${{ github.repository }}" --dir release-evidence
34+ gh release download "$tag" --repo "${{ github.repository }}" --dir release-evidence
3235 (cd release-evidence && sha256sum -c SHA256SUMS)
3336 for file in manifest.json release-images.json tool-versions.json trivy-db.json vulnerability-policy.json; do
3437 test -s "release-evidence/$file"
@@ -46,16 +49,31 @@ jobs:
4649 "release-evidence/$image-$suffix.syft.json" \
4750 "release-evidence/$image-$suffix.spdx.json" \
4851 "release-evidence/$image-$suffix.cdx.json" \
49- "$digest" "$platform" /tmp/sbom-summary .json
50- cmp "release-evidence/$image-$suffix.sbom-summary .json" /tmp/sbom-summary .json
52+ "$digest" "$platform" /tmp/sbom-validation .json
53+ cmp "release-evidence/$image-$suffix.sbom-validation .json" /tmp/sbom-validation .json
5154 for kind in trivy policy; do
5255 test -s "release-evidence/$image-$suffix.$kind.json"
5356 done
57+ jq -e --arg ref "$repository@$digest" \
58+ '.ArtifactName == $ref and (.Results | type == "array")' \
59+ "release-evidence/$image-$suffix.license.json" >/dev/null
60+ bun scripts/check-release-vulnerabilities.ts "$image" "$platform" "$digest" "$repository" \
61+ "release-evidence/$image-$suffix.trivy.json" \
62+ release-evidence/vulnerability-policy.json /tmp/policy.json
63+ cmp "release-evidence/$image-$suffix.policy.json" /tmp/policy.json
5464 architecture=${platform#*/}
5565 docker buildx imagetools inspect "$repository@$index_digest" --raw |
5666 jq -e --arg architecture "$architecture" --arg digest "$digest" \
5767 'any(.manifests[]; .platform.os == "linux" and .platform.architecture == $architecture and .digest == $digest)' >/dev/null
5868 done
69+ lock="release-$tag.json"
70+ cosign verify-blob \
71+ --bundle "release-evidence/$lock.sigstore.json" \
72+ --certificate-identity 'https://github.com/ls1intum/Hephaestus/.github/workflows/release.yml@refs/heads/main' \
73+ --certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
74+ "release-evidence/$lock"
75+ bun scripts/release-image-lock.ts "release-evidence/$lock" \
76+ release-evidence/manifest.json "$tag" /tmp/release-lock.env
5977 - name : Rescan immutable subjects
6078 env :
6179 TRIVY_USERNAME : ${{ github.actor }}
7391 while IFS=$'\t' read -r image platform digest repository; do
7492 suffix=${platform//\//-}
7593 trivy image --scanners vuln --format json --output "reports/$image-$suffix.json" "$repository@$digest"
76- bun scripts/check-release-vulnerabilities.ts "$image" "reports/$image-$suffix.json" security/vulnerability-policy.json "reports/$image-$suffix.policy.json"
94+ bun scripts/check-release-vulnerabilities.ts "$image" "$platform" "$digest" "$repository" \
95+ "reports/$image-$suffix.json" security/vulnerability-policy.json \
96+ "reports/$image-$suffix.policy.json"
7797 done
7898 - name : Upload diagnostic reports
7999 if : always()
0 commit comments