Skip to content

Commit

Permalink
sign/ed25519: Verify signatures are minimum length
Browse files Browse the repository at this point in the history
The ed25519 signature verification code does not
check that the signature is a minimum/correct length.
As a result, if the signature is too short, libsodium will end up
reading a few bytes out of bounds.

Reported-by: Demi Marie Obenour <demi@invisiblethingslab.com>
Co-authored-by: Demi Marie Obenour <demi@invisiblethingslab.com>

Closes: GHSA-gqf4-p3gv-g8vw
  • Loading branch information
cgwalters committed Jul 14, 2022
1 parent ed11467 commit 83e6357
Showing 1 changed file with 3 additions and 0 deletions.
3 changes: 3 additions & 0 deletions src/libostree/ostree-sign-ed25519.c
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,9 @@ gboolean ostree_sign_ed25519_data_verify (OstreeSign *self,
g_autoptr (GVariant) child = g_variant_get_child_value (signatures, i);
g_autoptr (GBytes) signature = g_variant_get_data_as_bytes(child);

if (g_bytes_get_size (signature) != crypto_sign_BYTES)
return glnx_throw (error, "Invalid signature length of %" G_GSIZE_FORMAT " bytes, expected %" G_GSIZE_FORMAT, (gsize) g_bytes_get_size (signature), (gsize) crypto_sign_BYTES);

g_autofree char * hex = g_malloc0 (crypto_sign_PUBLICKEYBYTES*2 + 1);

g_debug("Read signature %d: %s", (gint)i, g_variant_print(child, TRUE));
Expand Down

0 comments on commit 83e6357

Please sign in to comment.