public inbox for stable@vger.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Edward Adam Davis <eadavis@qq.com>,
	David Howells <dhowells@redhat.com>,
	Jarkko Sakkinen <jarkko@kernel.org>,
	Jeffrey E Altman <jaltman@auristor.com>,
	Wang Lei <wang840925@gmail.com>, Jeff Layton <jlayton@redhat.com>,
	Steve French <sfrench@us.ibm.com>,
	Marc Dionne <marc.dionne@auristor.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Simon Horman <horms@kernel.org>,
	syzbot+94bbb75204a05da3d89f@syzkaller.appspotmail.com
Subject: [PATCH 5.15 01/59] keys, dns: Fix missing size check of V1 server-list header
Date: Sat, 13 Jan 2024 10:49:32 +0100	[thread overview]
Message-ID: <20240113094209.351127507@linuxfoundation.org> (raw)
In-Reply-To: <20240113094209.301672391@linuxfoundation.org>

5.15-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Edward Adam Davis <eadavis@qq.com>

commit 1997b3cb4217b09e49659b634c94da47f0340409 upstream.

The dns_resolver_preparse() function has a check on the size of the
payload for the basic header of the binary-style payload, but is missing
a check for the size of the V1 server-list payload header after
determining that's what we've been given.

Fix this by getting rid of the the pointer to the basic header and just
assuming that we have a V1 server-list payload and moving the V1 server
list pointer inside the if-statement.  Dealing with other types and
versions can be left for when such have been defined.

This can be tested by doing the following with KASAN enabled:

    echo -n -e '\x0\x0\x1\x2' | keyctl padd dns_resolver foo @p

and produces an oops like the following:

    BUG: KASAN: slab-out-of-bounds in dns_resolver_preparse+0xc9f/0xd60 net/dns_resolver/dns_key.c:127
    Read of size 1 at addr ffff888028894084 by task syz-executor265/5069
    ...
    Call Trace:
      dns_resolver_preparse+0xc9f/0xd60 net/dns_resolver/dns_key.c:127
      __key_create_or_update+0x453/0xdf0 security/keys/key.c:842
      key_create_or_update+0x42/0x50 security/keys/key.c:1007
      __do_sys_add_key+0x29c/0x450 security/keys/keyctl.c:134
      do_syscall_x64 arch/x86/entry/common.c:52 [inline]
      do_syscall_64+0x40/0x110 arch/x86/entry/common.c:83
      entry_SYSCALL_64_after_hwframe+0x62/0x6a

This patch was originally by Edward Adam Davis, but was modified by
Linus.

Fixes: b946001d3bb1 ("keys, dns: Allow key types (eg. DNS) to be reclaimed immediately on expiry")
Reported-and-tested-by: syzbot+94bbb75204a05da3d89f@syzkaller.appspotmail.com
Link: https://lore.kernel.org/r/0000000000009b39bc060c73e209@google.com/
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Edward Adam Davis <eadavis@qq.com>
Signed-off-by: David Howells <dhowells@redhat.com>
Tested-by: David Howells <dhowells@redhat.com>
Cc: Edward Adam Davis <eadavis@qq.com>
Cc: Jarkko Sakkinen <jarkko@kernel.org>
Cc: Jeffrey E Altman <jaltman@auristor.com>
Cc: Wang Lei <wang840925@gmail.com>
Cc: Jeff Layton <jlayton@redhat.com>
Cc: Steve French <sfrench@us.ibm.com>
Cc: Marc Dionne <marc.dionne@auristor.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Eric Dumazet <edumazet@google.com>
Cc: Jakub Kicinski <kuba@kernel.org>
Cc: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Jeffrey E Altman <jaltman@auristor.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 net/dns_resolver/dns_key.c |   19 +++++++++----------
 1 file changed, 9 insertions(+), 10 deletions(-)

--- a/net/dns_resolver/dns_key.c
+++ b/net/dns_resolver/dns_key.c
@@ -91,8 +91,6 @@ const struct cred *dns_resolver_cache;
 static int
 dns_resolver_preparse(struct key_preparsed_payload *prep)
 {
-	const struct dns_server_list_v1_header *v1;
-	const struct dns_payload_header *bin;
 	struct user_key_payload *upayload;
 	unsigned long derrno;
 	int ret;
@@ -103,27 +101,28 @@ dns_resolver_preparse(struct key_prepars
 		return -EINVAL;
 
 	if (data[0] == 0) {
+		const struct dns_server_list_v1_header *v1;
+
 		/* It may be a server list. */
-		if (datalen <= sizeof(*bin))
+		if (datalen <= sizeof(*v1))
 			return -EINVAL;
 
-		bin = (const struct dns_payload_header *)data;
-		kenter("[%u,%u],%u", bin->content, bin->version, datalen);
-		if (bin->content != DNS_PAYLOAD_IS_SERVER_LIST) {
+		v1 = (const struct dns_server_list_v1_header *)data;
+		kenter("[%u,%u],%u", v1->hdr.content, v1->hdr.version, datalen);
+		if (v1->hdr.content != DNS_PAYLOAD_IS_SERVER_LIST) {
 			pr_warn_ratelimited(
 				"dns_resolver: Unsupported content type (%u)\n",
-				bin->content);
+				v1->hdr.content);
 			return -EINVAL;
 		}
 
-		if (bin->version != 1) {
+		if (v1->hdr.version != 1) {
 			pr_warn_ratelimited(
 				"dns_resolver: Unsupported server list version (%u)\n",
-				bin->version);
+				v1->hdr.version);
 			return -EINVAL;
 		}
 
-		v1 = (const struct dns_server_list_v1_header *)bin;
 		if ((v1->status != DNS_LOOKUP_GOOD &&
 		     v1->status != DNS_LOOKUP_GOOD_WITH_BAD)) {
 			if (prep->expiry == TIME64_MAX)



  reply	other threads:[~2024-01-13  9:59 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-13  9:49 [PATCH 5.15 00/59] 5.15.147-rc1 review Greg Kroah-Hartman
2024-01-13  9:49 ` Greg Kroah-Hartman [this message]
2024-01-13  9:49 ` [PATCH 5.15 02/59] block: Dont invalidate pagecache for invalid falloc modes Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 03/59] ALSA: hda/realtek: Fix mute and mic-mute LEDs for HP ProBook 440 G6 Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 04/59] Revert "PCI/ASPM: Remove pcie_aspm_pm_state_change()" Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 05/59] wifi: iwlwifi: pcie: dont synchronize IRQs from IRQ Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 06/59] drm/bridge: ti-sn65dsi86: Never store more than msg->size bytes in AUX xfer Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 07/59] nfc: llcp_core: Hold a ref to llcp_local->dev when holding a ref to llcp_local Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 08/59] octeontx2-af: Fix marking couple of structure as __packed Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 09/59] drm/i915/dp: Fix passing the correct DPCD_REV for drm_dp_set_phy_test_pattern Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 10/59] i40e: Fix filter input checks to prevent config with invalid values Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 11/59] igc: Report VLAN EtherType matching back to user Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 12/59] igc: Check VLAN TCI mask Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 13/59] igc: Check VLAN EtherType mask Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 14/59] ASoC: fsl_rpmsg: Fix error handler with pm_runtime_enable Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 15/59] mlxbf_gige: fix receive packet race condition Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 16/59] net: sched: em_text: fix possible memory leak in em_text_destroy() Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 17/59] r8169: Fix PCI error on system resume Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 18/59] net: Implement missing getsockopt(SO_TIMESTAMPING_NEW) Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 19/59] can: raw: add support for SO_TXTIME/SCM_TXTIME Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 20/59] can: raw: add support for SO_MARK Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 21/59] net-timestamp: extend SOF_TIMESTAMPING_OPT_ID to HW timestamps Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 22/59] ARM: sun9i: smp: Fix array-index-out-of-bounds read in sunxi_mc_smp_init Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 23/59] sfc: fix a double-free bug in efx_probe_filters Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 24/59] net: bcmgenet: Fix FCS generation for fragmented skbuffs Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 25/59] netfilter: nft_immediate: drop chain reference counter on error Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 26/59] net: Save and restore msg_namelen in sock_sendmsg Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 27/59] i40e: fix use-after-free in i40e_aqc_add_filters() Greg Kroah-Hartman
2024-01-13  9:49 ` [PATCH 5.15 28/59] ASoC: meson: g12a-toacodec: Validate written enum values Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 29/59] ASoC: meson: g12a-tohdmitx: " Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 30/59] ASoC: meson: g12a-toacodec: Fix event generation Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 31/59] ASoC: meson: g12a-tohdmitx: Fix event generation for S/PDIF mux Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 32/59] i40e: Restore VF MSI-X state during PCI reset Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 33/59] igc: Fix hicredit calculation Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 34/59] net/qla3xxx: fix potential memleak in ql_alloc_buffer_queues Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 35/59] octeontx2-af: Dont enable Pause frames by default Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 36/59] octeontx2-af: Set NIX link credits based on max LMAC Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 37/59] octeontx2-af: Always configure NIX TX link credits based on max frame size Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 38/59] octeontx2-af: Re-enable MAC TX in otx2_stop processing Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 39/59] asix: Add check for usbnet_get_endpoints Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 40/59] bnxt_en: Remove mis-applied code from bnxt_cfg_ntp_filters() Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 41/59] net: Implement missing SO_TIMESTAMPING_NEW cmsg support Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 42/59] selftests: secretmem: floor the memory size to the multiple of page_size Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 43/59] mm/memory-failure: check the mapcount of the precise page Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 44/59] firewire: ohci: suppress unexpected system reboot in AMD Ryzen machines and ASM108x/VT630x PCIe cards Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 45/59] x86/kprobes: fix incorrect return address calculation in kprobe_emulate_call_indirect Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 46/59] i2c: core: Fix atomic xfer check for non-preempt config Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 47/59] mm: fix unmap_mapping_range high bits shift bug Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 48/59] mmc: meson-mx-sdhc: Fix initialization frozen issue Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 49/59] mmc: rpmb: fixes pause retune on all RPMB partitions Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 50/59] mmc: core: Cancel delayed work before releasing host Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 51/59] mmc: sdhci-sprd: Fix eMMC init failure after hw reset Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 52/59] net: tls, update curr on splice as well Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 53/59] ipv6: remove max_size check inline with ipv4 Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 54/59] perf inject: Fix GEN_ELF_TEXT_OFFSET for jit Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 55/59] netfilter: nf_tables: Reject tables of unsupported family Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 56/59] kallsyms: Make module_kallsyms_on_each_symbol generally available Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 57/59] tracing/kprobes: Fix symbol counting logic by looking at modules as well Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 58/59] net: usb: ax88179_178a: remove redundant init code Greg Kroah-Hartman
2024-01-13  9:50 ` [PATCH 5.15 59/59] net: usb: ax88179_178a: move priv to driver_priv Greg Kroah-Hartman
2024-01-13 18:42 ` [PATCH 5.15 00/59] 5.15.147-rc1 review SeongJae Park
2024-01-14  9:41 ` Ron Economos
2024-01-15 10:01 ` Naresh Kamboju
2024-01-15 10:23 ` Jon Hunter
2024-01-15 11:35 ` Shreeya Patel
2024-01-15 16:26 ` Harshit Mogalapalli
2024-01-15 19:09 ` Florian Fainelli
2024-01-15 19:47 ` Allen

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=20240113094209.351127507@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=davem@davemloft.net \
    --cc=dhowells@redhat.com \
    --cc=eadavis@qq.com \
    --cc=edumazet@google.com \
    --cc=horms@kernel.org \
    --cc=jaltman@auristor.com \
    --cc=jarkko@kernel.org \
    --cc=jlayton@redhat.com \
    --cc=kuba@kernel.org \
    --cc=marc.dionne@auristor.com \
    --cc=pabeni@redhat.com \
    --cc=patches@lists.linux.dev \
    --cc=sfrench@us.ibm.com \
    --cc=stable@vger.kernel.org \
    --cc=syzbot+94bbb75204a05da3d89f@syzkaller.appspotmail.com \
    --cc=torvalds@linux-foundation.org \
    --cc=wang840925@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox