From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org,
Tudor Ambarus <tudor.ambarus@microchip.com>,
Eric Biggers <ebiggers@google.com>,
Herbert Xu <herbert@gondor.apana.org.au>
Subject: [PATCH 4.9 62/72] crypto: dh - Dont permit p to be 0
Date: Sun, 19 Nov 2017 15:39:06 +0100 [thread overview]
Message-ID: <20171119143534.915327956@linuxfoundation.org> (raw)
In-Reply-To: <20171119143532.376035495@linuxfoundation.org>
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Eric Biggers <ebiggers@google.com>
commit 199512b1234f09e44d592153ec82b44212b2f0c4 upstream.
If 'p' is 0 for the software Diffie-Hellman implementation, then
dh_max_size() returns 0. In the case of KEYCTL_DH_COMPUTE, this causes
ZERO_SIZE_PTR to be passed to sg_init_one(), which with
CONFIG_DEBUG_SG=y triggers the 'BUG_ON(!virt_addr_valid(buf));' in
sg_set_buf().
Fix this by making crypto_dh_decode_key() reject 0 for 'p'. p=0 makes
no sense for any DH implementation because 'p' is supposed to be a prime
number. Moreover, 'mod 0' is not mathematically defined.
Bug report:
kernel BUG at ./include/linux/scatterlist.h:140!
invalid opcode: 0000 [#1] SMP KASAN
CPU: 0 PID: 27112 Comm: syz-executor2 Not tainted 4.14.0-rc7-00010-gf5dbb5d0ce32-dirty #7
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.3-20171021_125229-anatol 04/01/2014
task: ffff88006caac0c0 task.stack: ffff88006c7c8000
RIP: 0010:sg_set_buf include/linux/scatterlist.h:140 [inline]
RIP: 0010:sg_init_one+0x1b3/0x240 lib/scatterlist.c:156
RSP: 0018:ffff88006c7cfb08 EFLAGS: 00010216
RAX: 0000000000010000 RBX: ffff88006c7cfe30 RCX: 00000000000064ee
RDX: ffffffff81cf64c3 RSI: ffffc90000d72000 RDI: ffffffff92e937e0
RBP: ffff88006c7cfb30 R08: ffffed000d8f9fab R09: ffff88006c7cfd30
R10: 0000000000000005 R11: ffffed000d8f9faa R12: ffff88006c7cfd30
R13: 0000000000000000 R14: 0000000000000010 R15: ffff88006c7cfc50
FS: 00007fce190fa700(0000) GS:ffff88003ea00000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007fffc6b33db8 CR3: 000000003cf64000 CR4: 00000000000006f0
Call Trace:
__keyctl_dh_compute+0xa95/0x19b0 security/keys/dh.c:360
keyctl_dh_compute+0xac/0x100 security/keys/dh.c:434
SYSC_keyctl security/keys/keyctl.c:1745 [inline]
SyS_keyctl+0x72/0x2c0 security/keys/keyctl.c:1641
entry_SYSCALL_64_fastpath+0x1f/0xbe
RIP: 0033:0x4585c9
RSP: 002b:00007fce190f9bd8 EFLAGS: 00000216 ORIG_RAX: 00000000000000fa
RAX: ffffffffffffffda RBX: 0000000000738020 RCX: 00000000004585c9
RDX: 000000002000d000 RSI: 0000000020000ff4 RDI: 0000000000000017
RBP: 0000000000000046 R08: 0000000020008000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000216 R12: 00007fff6e610cde
R13: 00007fff6e610cdf R14: 00007fce190fa700 R15: 0000000000000000
Code: 03 0f b6 14 02 48 89 f8 83 e0 07 83 c0 03 38 d0 7c 04 84 d2 75 33 5b 45 89 6c 24 14 41 5c 41 5d 41 5e 41 5f 5d c3 e8 fd 8f 68 ff <0f> 0b e8 f6 8f 68 ff 0f 0b e8 ef 8f 68 ff 0f 0b e8 e8 8f 68 ff 20
RIP: sg_set_buf include/linux/scatterlist.h:140 [inline] RSP: ffff88006c7cfb08
RIP: sg_init_one+0x1b3/0x240 lib/scatterlist.c:156 RSP: ffff88006c7cfb08
Fixes: 802c7f1c84e4 ("crypto: dh - Add DH software implementation")
Reviewed-by: Tudor Ambarus <tudor.ambarus@microchip.com>
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
crypto/dh_helper.c | 8 ++++++++
1 file changed, 8 insertions(+)
--- a/crypto/dh_helper.c
+++ b/crypto/dh_helper.c
@@ -90,6 +90,14 @@ int crypto_dh_decode_key(const char *buf
params->p = (void *)(ptr + params->key_size);
params->g = (void *)(ptr + params->key_size + params->p_size);
+ /*
+ * Don't permit 'p' to be 0. It's not a prime number, and it's subject
+ * to corner cases such as 'mod 0' being undefined or
+ * crypto_kpp_maxsize() returning 0.
+ */
+ if (memchr_inv(params->p, 0, params->p_size) == NULL)
+ return -EINVAL;
+
return 0;
}
EXPORT_SYMBOL_GPL(crypto_dh_decode_key);
next prev parent reply other threads:[~2017-11-19 14:41 UTC|newest]
Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-19 14:38 [PATCH 4.9 00/72] 4.9.64-stable review Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 01/72] media: imon: Fix null-ptr-deref in imon_probe Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 02/72] media: dib0700: fix invalid dvb_detach argument Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 03/72] [PATCH -stable] arm: crypto: reduce priority of bit-sliced AES cipher Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 04/72] Bluetooth: btusb: fix QCA Rome suspend/resume Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 05/72] extcon: Remove potential problem when calling extcon_register_notifier() Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 06/72] extcon: palmas: Check the parent instance to prevent the NULL Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 07/72] fm10k: request reset when mbx->state changes Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 08/72] ARM: dts: Fix compatible for ti81xx uarts for 8250 Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 09/72] ARM: dts: Fix am335x and dm814x scm syscon to probe children Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 10/72] ARM: OMAP2+: Fix init for multiple quirks for the same SoC Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 11/72] ARM: dts: Fix omap3 off mode pull defines Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 12/72] ARM: dts: omap5-uevm: Allow bootloader to configure USB Ethernet MAC Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 13/72] ata: ATA_BMDMA should depend on HAS_DMA Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 14/72] ata: SATA_HIGHBANK " Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 15/72] ata: SATA_MV " Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 16/72] drm/sti: sti_vtg: Handle return NULL error from devm_ioremap_nocache Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 17/72] igb: reset the PHY before reading the PHY ID Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 18/72] igb: close/suspend race in netif_device_detach Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 19/72] igb: Fix hw_dbg logging in igb_update_flash_i210 Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 20/72] scsi: ufs-qcom: Fix module autoload Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 21/72] scsi: ufs: add capability to keep auto bkops always enabled Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 22/72] tcp: provide timestamps for partial writes Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 23/72] staging: rtl8188eu: fix incorrect ERROR tags from logs Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 25/72] scsi: lpfc: Add missing memory barrier Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 26/72] scsi: lpfc: FCoE VPort enable-disable does not bring up the VPort Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 27/72] scsi: lpfc: Correct host name in symbolic_name field Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 28/72] scsi: lpfc: Correct issue leading to oops during link reset Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 29/72] scsi: lpfc: Clear the VendorVersion in the PLOGI/PLOGI ACC payload Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 30/72] rtc: rx8010: change lock mechanism Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 31/72] power: supply: axp288_fuel_gauge: Read 15 bit values 2 registers at a time Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 32/72] power: supply: axp288_fuel_gauge: Read 12 " Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 33/72] ALSA: vx: Dont try to update capture stream before running Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 34/72] ALSA: vx: Fix possible transfer overflow Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 35/72] drm/omap: panel-sony-acx565akm.c: Add MODULE_ALIAS Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 37/72] backlight: adp5520: Fix error handling in adp5520_bl_probe() Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 38/72] gpu: drm: mgag200: mgag200_main:- Handle error from pci_iomap Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 39/72] ALSA: hda/realtek - Add new codec ID ALC299 Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 40/72] arm64: dts: NS2: reserve memory for Nitro firmware Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 41/72] ixgbe: Configure advertised speeds correctly for KR/KX backplane Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 42/72] ixgbe: fix AER error handling Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 43/72] ixgbe: handle close/suspend race with netif_device_detach/present Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 44/72] ixgbe: Fix reporting of 100Mb capability Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 45/72] ixgbe: Reduce I2C retry count on X550 devices Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 46/72] ixgbe: add mask for 64 RSS queues Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 47/72] ixgbe: do not disable FEC from the driver Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 48/72] staging: rtl8712: fixed little endian problem Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 49/72] staging: wilc1000: Fix endian sparse warning Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 50/72] staging: greybus: add host device function pointer checks Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 51/72] MIPS: End asm function prologue macros with .insn Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 52/72] MIPS: init: Ensure bootmem does not corrupt reserved memory Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 53/72] MIPS: init: Ensure reserved memory regions are not added to bootmem Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 54/72] MIPS: traps: Ensure L1 & L2 ECC checking match for CM3 systems Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 55/72] MIPS: Netlogic: Exclude netlogic,xlp-pic code from XLR builds Greg Kroah-Hartman
2017-11-19 14:39 ` [PATCH 4.9 56/72] Revert "crypto: xts - Add ECB dependency" Greg Kroah-Hartman
2017-11-19 14:39 ` [PATCH 4.9 57/72] Revert "uapi: fix linux/rds.h userspace compilation errors" Greg Kroah-Hartman
2017-11-19 14:39 ` [PATCH 4.9 58/72] uapi: fix linux/rds.h userspace compilation error Greg Kroah-Hartman
2017-11-19 14:39 ` [PATCH 4.9 59/72] uapi: fix linux/rds.h userspace compilation errors Greg Kroah-Hartman
2017-11-19 14:39 ` [PATCH 4.9 60/72] Revert "dt-bindings: Add vendor prefix for LEGO" Greg Kroah-Hartman
2017-11-19 14:39 ` [PATCH 4.9 61/72] Revert "dt-bindings: Add LEGO MINDSTORMS EV3 compatible specification" Greg Kroah-Hartman
2017-11-19 14:39 ` Greg Kroah-Hartman [this message]
2017-11-19 14:39 ` [PATCH 4.9 63/72] crypto: dh - Dont permit key or g size longer than p Greg Kroah-Hartman
2017-11-19 14:39 ` [PATCH 4.9 64/72] USB: usbfs: compute urb->actual_length for isochronous Greg Kroah-Hartman
2017-11-19 14:39 ` [PATCH 4.9 65/72] USB: Add delay-init quirk for Corsair K70 LUX keyboards Greg Kroah-Hartman
2017-11-19 14:39 ` [PATCH 4.9 66/72] usb: gadget: f_fs: Fix use-after-free in ffs_free_inst Greg Kroah-Hartman
2017-11-19 14:39 ` [PATCH 4.9 67/72] USB: serial: qcserial: add pid/vid for Sierra Wireless EM7355 fw update Greg Kroah-Hartman
2017-11-19 14:39 ` [PATCH 4.9 68/72] USB: serial: garmin_gps: fix I/O after failed probe and remove Greg Kroah-Hartman
2017-11-19 14:39 ` [PATCH 4.9 69/72] USB: serial: garmin_gps: fix memory leak on probe errors Greg Kroah-Hartman
2017-11-19 14:39 ` [PATCH 4.9 72/72] staging: greybus: spilib: fix use-after-free after deregistration Greg Kroah-Hartman
2017-11-20 6:22 ` [PATCH 4.9 00/72] 4.9.64-stable review Naresh Kamboju
2017-11-20 19:25 ` Greg Kroah-Hartman
2017-11-20 14:10 ` Guenter Roeck
2017-11-20 15:10 ` Greg Kroah-Hartman
2017-11-20 21:17 ` Shuah Khan
-- strict thread matches above, loose matches on Subject: below --
2017-11-19 14:38 [4.9,24/72] x86/irq, trace: Add __irq_entry annotation to x86s platform IRQ handlers Greg Kroah-Hartman
2017-11-19 14:38 ` [PATCH 4.9 24/72] " Greg Kroah-Hartman
2017-11-19 14:39 [4.9,70/72] x86/MCE/AMD: Always give panic severity for UC errors in kernel context Greg Kroah-Hartman
2017-11-19 14:39 ` [PATCH 4.9 70/72] " 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=20171119143534.915327956@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=ebiggers@google.com \
--cc=herbert@gondor.apana.org.au \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=tudor.ambarus@microchip.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.