flawopen.com/Referensi/Bypass verifikasi Cosign
Cosign GHSA-fx35-mq7g-6g98: bypass verifikasi bundle lama
Bayangkan petugas memeriksa tiket sekaligus nama pada kartu identitas resmi. Jalur bundle lama yang rentan dapat salah menganggap kunci lepas sebagai kartu identitas lalu menerima tiket tanpa memeriksa nama. Tanda tangan mungkin sah secara matematis, tetapi identitas workflow yang diwajibkan belum terbukti.
Bagian yang gagal pada verifikasi blob Cosign
GHSA-fx35-mq7g-6g98 berdampak pada `cosign verify-blob` dan `cosign verify-blob-attestation` ketika verifikasi keyless memakai flag identitas dan issuer (atau variasi regex-nya) bersama `--bundle` JSON lama. Jika kolom `cert` bundle tidak dapat diurai sebagai sertifikat X.509, versi terdampak memuatnya sebagai kunci publik. Hal itu mengatur verifier tanda tangan internal sehingga jalur berikutnya melewati validasi rantai sertifikat dan `CheckCertificatePolicy`; akibatnya, batasan identitas dan issuer tidak diterapkan. Tanda tangan yang valid untuk kunci tertanam dapat dinyatakan berhasil. Kunci dalam bundle juga dapat menggantikan `--key` yang diberikan secara eksplisit. Advisory menyebut verifikasi image kontainer dan jalur format bundle protobuf Sigstore standar tidak terdampak. Tidak ada CVE yang diketahui; advisory upstream mengklasifikasikannya High, CVSS 7.4, CWE-295, dan CWE-347.
Alur bypass verifikasi
Job CI menerima artefak dan bundle JSON lama
Artefak dan bundle bisa berasal dari workflow rilis, cache, mirror, atau masukan pipeline lain. Job penerima harus menganggap keduanya tidak tepercaya sampai pemeriksaan kebijakan selesai.
Parser rentan menerima kunci saat mengharapkan sertifikat
Pada versi terdampak, kegagalan parsing X.509 memicu fallback ke kunci publik. Ini mengatur verifier tanda tangan dan melewati penegakan kebijakan sertifikat pada verifikasi keyless.
Tanda tangan lolos tanpa membuktikan identitas workflow yang diwajibkan
Verifikasi dapat berhasil tanpa memastikan identitas sertifikat dan issuer OIDC yang ditentukan. Pipeline yang hanya memeriksa kode keluar dapat memakai artefak tanpa otorisasi.
Tetapkan versi Cosign yang sudah diperbaiki dan identitas penanda tangan
Kedua contoh menetapkan identitas GitHub Actions dan issuer OIDC yang sama secara tepat. Perintah rentan memakai rilis Cosign terdampak; parser dapat melewati pemeriksaan tersebut pada bundle JSON lama. Perintah yang diperkuat memakai rilis yang diperbaiki dan opsi nilai persis, bukan regex. Tetapkan binary atau kontainer Cosign di CI berdasarkan versi dan digest yang ditinjau. Perintah memverifikasi artefak; tidak membuat atau menampilkan bundle berbahaya.
# Risk: affected versions accept legacy JSON bundles in this path
# cosign v2.6.4 or earlier, or v3.1.2 or earlier
cosign verify-blob release.tar.gz \
--bundle release.sigstore.json \
--certificate-identity-regexp "^https://github\.com/acme/service/\.github/workflows/release\.yml@refs/heads/main$" \
--certificate-oidc-issuer-regexp "^https://token\.actions\.githubusercontent\.com$"
# Require Cosign v2.6.5+ or v3.1.3+ in the pinned CI toolchain
cosign verify-blob release.tar.gz \
--bundle release.sigstore.json \
--certificate-identity "https://github.com/acme/service/.github/workflows/release.yml@refs/heads/main" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com"
Daftar periksa remediasi dan peluncuran
- ✓Inventarisasi job CI yang menjalankan `cosign verify-blob` atau `cosign verify-blob-attestation`; periksa versi yang benar-benar digunakan, termasuk alat yang diunduh atau berada di dalam kontainer.
- ✓Perbarui instalasi v2 terdampak ke v2.6.5+ dan v3 ke v3.1.3+; pilih rilis yang masih didukung dan tetapkan provenance serta digest-nya.
- ✓Tetapkan `--certificate-identity` dan `--certificate-oidc-issuer` secara tepat untuk workflow penandatanganan yang diharapkan. Hindari kebijakan `.*` yang menerima identitas lain.
- ✓Jika memungkinkan, migrasikan bundle JSON lama ke format bundle Sigstore standar. Advisory menyatakan jalur verifikasi format tersebut tidak terdampak; validasi perilaku versi alat yang tepat saat rollout.
- ✓Hubungkan provenance artefak dengan bundle, hentikan proses jika verifikasi gagal, dan izinkan publikasi hanya setelah verifikasi berhasil di job terkontrol yang sama.
- ✓Periksa apakah artefak yang diverifikasi dengan versi terdampak kemudian dipublikasikan atau diterapkan. Verifikasi ulang artefak tersimpan dengan Cosign yang sudah diperbaiki dan kebijakan identitas yang diharapkan; selidiki provenance yang tidak cocok.
- Sigstore Cosign security advisory GHSA-fx35-mq7g-6g98
- Cosign fix PR #5040 — removal of raw-key fallback
- Sigstore CI Quickstart — keyless signing and verification
- Cosign releases — patched versions