linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, "kiyin " <kiyin@tencent.com>,
	"Herbert Xu" <herbert@gondor.apana.org.au>
Subject: [PATCH 5.9 14/15] crypto: bcm - Verify GCM/CCM key length in setkey
Date: Fri, 16 Oct 2020 11:08:16 +0200	[thread overview]
Message-ID: <20201016090437.872816378@linuxfoundation.org> (raw)
In-Reply-To: <20201016090437.170032996@linuxfoundation.org>

From: Herbert Xu <herbert@gondor.apana.org.au>

commit 10a2f0b311094ffd45463a529a410a51ca025f27 upstream.

The setkey function for GCM/CCM algorithms didn't verify the key
length before copying the key and subtracting the salt length.

This patch delays the copying of the key til after the verification
has been done.  It also adds checks on the key length to ensure
that it's at least as long as the salt.

Fixes: 9d12ba86f818 ("crypto: brcm - Add Broadcom SPU driver")
Cc: <stable@vger.kernel.org>
Reported-by: kiyin(尹亮) <kiyin@tencent.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/crypto/bcm/cipher.c |   15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

--- a/drivers/crypto/bcm/cipher.c
+++ b/drivers/crypto/bcm/cipher.c
@@ -2930,7 +2930,6 @@ static int aead_gcm_ccm_setkey(struct cr
 
 	ctx->enckeylen = keylen;
 	ctx->authkeylen = 0;
-	memcpy(ctx->enckey, key, ctx->enckeylen);
 
 	switch (ctx->enckeylen) {
 	case AES_KEYSIZE_128:
@@ -2946,6 +2945,8 @@ static int aead_gcm_ccm_setkey(struct cr
 		goto badkey;
 	}
 
+	memcpy(ctx->enckey, key, ctx->enckeylen);
+
 	flow_log("  enckeylen:%u authkeylen:%u\n", ctx->enckeylen,
 		 ctx->authkeylen);
 	flow_dump("  enc: ", ctx->enckey, ctx->enckeylen);
@@ -3000,6 +3001,10 @@ static int aead_gcm_esp_setkey(struct cr
 	struct iproc_ctx_s *ctx = crypto_aead_ctx(cipher);
 
 	flow_log("%s\n", __func__);
+
+	if (keylen < GCM_ESP_SALT_SIZE)
+		return -EINVAL;
+
 	ctx->salt_len = GCM_ESP_SALT_SIZE;
 	ctx->salt_offset = GCM_ESP_SALT_OFFSET;
 	memcpy(ctx->salt, key + keylen - GCM_ESP_SALT_SIZE, GCM_ESP_SALT_SIZE);
@@ -3028,6 +3033,10 @@ static int rfc4543_gcm_esp_setkey(struct
 	struct iproc_ctx_s *ctx = crypto_aead_ctx(cipher);
 
 	flow_log("%s\n", __func__);
+
+	if (keylen < GCM_ESP_SALT_SIZE)
+		return -EINVAL;
+
 	ctx->salt_len = GCM_ESP_SALT_SIZE;
 	ctx->salt_offset = GCM_ESP_SALT_OFFSET;
 	memcpy(ctx->salt, key + keylen - GCM_ESP_SALT_SIZE, GCM_ESP_SALT_SIZE);
@@ -3057,6 +3066,10 @@ static int aead_ccm_esp_setkey(struct cr
 	struct iproc_ctx_s *ctx = crypto_aead_ctx(cipher);
 
 	flow_log("%s\n", __func__);
+
+	if (keylen < CCM_ESP_SALT_SIZE)
+		return -EINVAL;
+
 	ctx->salt_len = CCM_ESP_SALT_SIZE;
 	ctx->salt_offset = CCM_ESP_SALT_OFFSET;
 	memcpy(ctx->salt, key + keylen - CCM_ESP_SALT_SIZE, CCM_ESP_SALT_SIZE);



  parent reply	other threads:[~2020-10-16  9:12 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-16  9:08 [PATCH 5.9 00/15] 5.9.1-rc1 review Greg Kroah-Hartman
2020-10-16  9:08 ` [PATCH 5.9 01/15] Bluetooth: A2MP: Fix not initializing all members Greg Kroah-Hartman
2020-10-16  9:08 ` [PATCH 5.9 02/15] Bluetooth: L2CAP: Fix calling sk_filter on non-socket based channel Greg Kroah-Hartman
2020-10-16  9:08 ` [PATCH 5.9 03/15] Bluetooth: MGMT: Fix not checking if BT_HS is enabled Greg Kroah-Hartman
2020-10-16  9:08 ` [PATCH 5.9 04/15] media: usbtv: Fix refcounting mixup Greg Kroah-Hartman
2020-10-16  9:08 ` [PATCH 5.9 05/15] USB: serial: option: add Cellient MPL200 card Greg Kroah-Hartman
2020-10-16  9:08 ` [PATCH 5.9 06/15] USB: serial: option: Add Telit FT980-KS composition Greg Kroah-Hartman
2020-10-16  9:08 ` [PATCH 5.9 07/15] staging: comedi: check validity of wMaxPacketSize of usb endpoints found Greg Kroah-Hartman
2020-10-16  9:08 ` [PATCH 5.9 08/15] USB: serial: pl2303: add device-id for HP GC device Greg Kroah-Hartman
2020-10-16  9:08 ` [PATCH 5.9 09/15] USB: serial: ftdi_sio: add support for FreeCalypso JTAG+UART adapters Greg Kroah-Hartman
2020-10-16  9:08 ` [PATCH 5.9 10/15] vt_ioctl: make VT_RESIZEX behave like VT_RESIZE Greg Kroah-Hartman
2020-10-16  9:08 ` [PATCH 5.9 11/15] reiserfs: Initialize inode keys properly Greg Kroah-Hartman
2020-10-16  9:08 ` [PATCH 5.9 12/15] reiserfs: Fix oops during mount Greg Kroah-Hartman
2020-10-16  9:08 ` [PATCH 5.9 13/15] Revert "drm/amdgpu: Fix NULL dereference in dpm sysfs handlers" Greg Kroah-Hartman
2020-10-16  9:08 ` Greg Kroah-Hartman [this message]
2020-10-16  9:08 ` [PATCH 5.9 15/15] crypto: qat - check cipher length for aead AES-CBC-HMAC-SHA Greg Kroah-Hartman
2020-10-16 12:21 ` [PATCH 5.9 00/15] 5.9.1-rc1 review Jeffrin Jose T
2020-10-16 16:45 ` Jon Hunter
2020-10-17 11:34   ` Greg Kroah-Hartman
2020-10-16 19:03 ` Naresh Kamboju
2020-10-17 11:34   ` Greg Kroah-Hartman
2020-10-16 21:09 ` Guenter Roeck
2020-10-17 11:34   ` Greg Kroah-Hartman
2020-10-17 16:02 ` Shuah Khan
2020-10-18  6:00   ` Greg Kroah-Hartman
2020-10-19 17:02 ` [tip: perf/urgent] Linux 5.9.1 tip-bot2 for Greg Kroah-Hartman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201016090437.872816378@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=herbert@gondor.apana.org.au \
    --cc=kiyin@tencent.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).