[openssh-commits] [openssh] 78/87: upstream: check RSA keys decoded from PEM against our hard size
git+noreply at mindrot.org
git+noreply at mindrot.org
Fri Oct 30 20:21:55 AEDT 2026
This is an automated email from the git hooks/post-receive script.
djm pushed a commit to branch master
in repository openssh.
commit 9006a5d709d13cc830d9cda7416fa580276c8aba
Author: djm at openbsd.org <djm at openbsd.org>
AuthorDate: Fri Oct 30 09:02:03 2026 +0000
upstream: check RSA keys decoded from PEM against our hard size
limits
Anthropic ANT-2026-YPAO7WLH
OpenBSD-Commit-ID: 905fcd43f5f540a041b317d7bf4b74b0dba22429
---
sshkey.c | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/sshkey.c b/sshkey.c
index 6375d58bd..4de85589b 100644
--- a/sshkey.c
+++ b/sshkey.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sshkey.c,v 1.167 2026/10/30 03:22:47 djm Exp $ */
+/* $OpenBSD: sshkey.c,v 1.168 2026/10/30 09:02:03 djm Exp $ */
/*
* Copyright (c) 2000, 2001 Markus Friedl. All rights reserved.
* Copyright (c) 2008 Alexander von Gernler. All rights reserved.
@@ -3552,6 +3552,7 @@ sshkey_parse_private_pem_fileblob(struct sshbuf *blob, int type,
BIO *bio = NULL;
int r;
RSA *rsa = NULL;
+ const BIGNUM *rsa_n = NULL, *rsa_e = NULL;
EC_KEY *ecdsa = NULL;
if (keyp != NULL)
@@ -3594,6 +3595,20 @@ sshkey_parse_private_pem_fileblob(struct sshbuf *blob, int type,
#ifdef DEBUG_PK
RSA_print_fp(stderr, rsa, 8);
#endif
+ /*
+ * libcrypto doesn't limit the size of the integers it decodes
+ * from PEM, and RSA_blinding_on() below computes a modular
+ * exponentiation using n and e. Apply the same upper bound
+ * that sshbuf_get_bignum2() enforces for the other key formats
+ * before doing any arithmetic on the key.
+ */
+ RSA_get0_key(rsa, &rsa_n, &rsa_e, NULL);
+ if (rsa_n == NULL || rsa_e == NULL ||
+ BN_num_bits(rsa_n) > SSHBUF_MAX_BIGNUM * 8 ||
+ BN_num_bits(rsa_e) > SSHBUF_MAX_BIGNUM * 8) {
+ r = SSH_ERR_KEY_LENGTH;
+ goto out;
+ }
if (RSA_blinding_on(rsa, NULL) != 1 ||
EVP_PKEY_set1_RSA(pk, rsa) != 1) {
r = SSH_ERR_LIBCRYPTO_ERROR;
--
To stop receiving notification emails like this one, please contact
djm at mindrot.org.
More information about the openssh-commits
mailing list