Gitsign is a keyless Sigstore to signing tool for Git commits with your a GitHub / OIDC identity. gitsign may select the wrong Rekor entry to use during online verification when multiple entries are returned by the log. gitsign uses Rekor's search API to fetch entries that apply to a signature being verified. The parameters used for the search are the public key and the payload. The search API returns entries that match either condition rather than both. When gitsign's credential cache is used, there can be multiple entries that use the same ephemeral keypair / signing certificate. As gitsign assumes both conditions are matched by Rekor, there is no additional validation that the entry's hash matches the payload being verified, meaning that the wrong entry can be used to successfully pass verification. Impact is minimal as while gitsign does not match the payload against the entry, it does ensure that the certificate matches. This would need to be exploited during the certificate validity window (10 minutes) by the key holder.
Gitsign es una herramienta de firma de Sigstore sin clave para las confirmaciones de Git con su identidad de GitHub/OIDC. gitsign puede seleccionar la entrada de Rekor incorrecta para usar durante la verificación en línea cuando el registro devuelve varias entradas. gitsign usa la API de búsqueda de Rekor para obtener las entradas que se aplican a una firma que se está verificando. Los parámetros utilizados para la búsqueda son la clave pública y el payload. La API de búsqueda devuelve las entradas que coinciden con una de las condiciones en lugar de ambas. Cuando se usa el caché de credenciales de gitsign, puede haber varias entradas que usen el mismo certificado de firma/par de claves efímeras. Como gitsign asume que Rekor cumple con ambas condiciones, no hay una validación adicional de que el hash de la entrada coincida con el payload que se está verificando, lo que significa que se puede usar la entrada incorrecta para pasar la verificación con éxito. El impacto es mínimo ya que, si bien gitsign no compara el payload con la entrada, sí garantiza que el certificado coincida. Esto debería ser explotado durante la ventana de validez del certificado (10 minutos) por el titular de la clave.