mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Sasha Levin <Alexander.Levin@microsoft.com>
To: "stable@vger.kernel.org" <stable@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Cc: Piotr Sawicki <p.sawicki2@partner.samsung.com>,
	Casey Schaufler <casey@schaufler-ca.com>,
	Sasha Levin <Alexander.Levin@microsoft.com>
Subject: [PATCH AUTOSEL 4.9 30/43] Smack: Fix handling of IPv4 traffic received by PF_INET6 sockets
Date: Fri, 7 Sep 2018 00:38:40 +0000	[thread overview]
Message-ID: <20180907003816.57852-30-alexander.levin@microsoft.com> (raw)
In-Reply-To: <20180907003816.57852-1-alexander.levin@microsoft.com>

From: Piotr Sawicki <p.sawicki2@partner.samsung.com>

[ Upstream commit 129a99890936766f4b69b9da7ed88366313a9210 ]

A socket which has sk_family set to PF_INET6 is able to receive not
only IPv6 but also IPv4 traffic (IPv4-mapped IPv6 addresses).

Prior to this patch, the smk_skb_to_addr_ipv6() could have been
called for socket buffers containing IPv4 packets, in result such
traffic was allowed.

Signed-off-by: Piotr Sawicki <p.sawicki2@partner.samsung.com>
Signed-off-by: Casey Schaufler <casey@schaufler-ca.com>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
---
 security/smack/smack_lsm.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c
index ca3ea985c100..fb7c534fb57d 100644
--- a/security/smack/smack_lsm.c
+++ b/security/smack/smack_lsm.c
@@ -3966,15 +3966,19 @@ static int smack_socket_sock_rcv_skb(struct sock *sk, struct sk_buff *skb)
 	struct smack_known *skp = NULL;
 	int rc = 0;
 	struct smk_audit_info ad;
+	u16 family = sk->sk_family;
 #ifdef CONFIG_AUDIT
 	struct lsm_network_audit net;
 #endif
 #if IS_ENABLED(CONFIG_IPV6)
 	struct sockaddr_in6 sadd;
 	int proto;
+
+	if (family == PF_INET6 && skb->protocol == htons(ETH_P_IP))
+		family = PF_INET;
 #endif /* CONFIG_IPV6 */
 
-	switch (sk->sk_family) {
+	switch (family) {
 	case PF_INET:
 #ifdef CONFIG_SECURITY_SMACK_NETFILTER
 		/*
@@ -3992,7 +3996,7 @@ static int smack_socket_sock_rcv_skb(struct sock *sk, struct sk_buff *skb)
 		 */
 		netlbl_secattr_init(&secattr);
 
-		rc = netlbl_skbuff_getattr(skb, sk->sk_family, &secattr);
+		rc = netlbl_skbuff_getattr(skb, family, &secattr);
 		if (rc == 0)
 			skp = smack_from_secattr(&secattr, ssp);
 		else
@@ -4005,7 +4009,7 @@ static int smack_socket_sock_rcv_skb(struct sock *sk, struct sk_buff *skb)
 #endif
 #ifdef CONFIG_AUDIT
 		smk_ad_init_net(&ad, __func__, LSM_AUDIT_DATA_NET, &net);
-		ad.a.u.net->family = sk->sk_family;
+		ad.a.u.net->family = family;
 		ad.a.u.net->netif = skb->skb_iif;
 		ipv4_skb_to_auditdata(skb, &ad.a, NULL);
 #endif
@@ -4019,7 +4023,7 @@ static int smack_socket_sock_rcv_skb(struct sock *sk, struct sk_buff *skb)
 		rc = smk_bu_note("IPv4 delivery", skp, ssp->smk_in,
 					MAY_WRITE, rc);
 		if (rc != 0)
-			netlbl_skbuff_err(skb, sk->sk_family, rc, 0);
+			netlbl_skbuff_err(skb, family, rc, 0);
 		break;
 #if IS_ENABLED(CONFIG_IPV6)
 	case PF_INET6:
@@ -4035,7 +4039,7 @@ static int smack_socket_sock_rcv_skb(struct sock *sk, struct sk_buff *skb)
 			skp = smack_net_ambient;
 #ifdef CONFIG_AUDIT
 		smk_ad_init_net(&ad, __func__, LSM_AUDIT_DATA_NET, &net);
-		ad.a.u.net->family = sk->sk_family;
+		ad.a.u.net->family = family;
 		ad.a.u.net->netif = skb->skb_iif;
 		ipv6_skb_to_auditdata(skb, &ad.a, NULL);
 #endif /* CONFIG_AUDIT */
-- 
2.17.1

  parent reply	other threads:[~2018-09-07  0:41 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-07  0:38 [PATCH AUTOSEL 4.9 01/43] usb: usbtest: use irqsave() in USB's complete callback Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 02/43] iommu/arm-smmu-v3: sync the OVACKFLG to PRIQ consumer register Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 04/43] ALSA: usb-audio: Fix multiple definitions in AU0828_DEVICE() macro Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 03/43] ALSA: msnd: Fix the default sample sizes Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 05/43] xfrm: fix 'passing zero to ERR_PTR()' warning Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 06/43] gfs2: Special-case rindex for gfs2_grow Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 07/43] clk: imx6ul: fix missing of_node_put() Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 09/43] kbuild: add .DELETE_ON_ERROR special target Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 08/43] clk: clk-fixed-factor: Clear OF_POPULATED flag in case of failure Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 10/43] media: tw686x: Fix oops on buffer alloc failure Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 11/43] dmaengine: pl330: fix irq race with terminate_all Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 12/43] MIPS: ath79: fix system restart Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 13/43] media: videobuf2-core: check for q->error in vb2_core_qbuf() Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 14/43] IB/rxe: Drop QP0 silently Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 15/43] mtd/maps: fix solutionengine.c printk format warnings Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 16/43] perf test: Fix subtest number when showing results Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 18/43] iio: ad9523: Fix displayed phase Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 17/43] gfs2: Don't reject a supposedly full bitmap if we have blocks reserved Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 19/43] fbdev: omapfb: off by one in omapfb_register_client() Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 21/43] fbdev/via: fix defined but not used warning Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 20/43] video: goldfishfb: fix memory leak on driver remove Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 22/43] perf powerpc: Fix callchain ip filtering when return address is in a register Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 23/43] video: fbdev: pxafb: clear allocated memory for video modes Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 24/43] fbdev: Distinguish between interlaced and progressive modes Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 25/43] ARM: exynos: Clear global variable on init error path Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 26/43] perf powerpc: Fix callchain ip filtering Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 27/43] powerpc/powernv: opal_put_chars partial write fix Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 28/43] MIPS: jz4740: Bump zload address Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 29/43] mac80211: restrict delayed tailroom needed decrement Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 31/43] wan/fsl_ucc_hdlc: use IS_ERR_VALUE() to check return value of qe_muram_alloc Sasha Levin
2018-09-07  0:38 ` Sasha Levin [this message]
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 32/43] efi/arm: preserve early mapping of UEFI memory map longer for BGRT Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 34/43] xen-netfront: fix queue name setting Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 33/43] nfp: avoid buffer leak when FW communication fails Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 36/43] ARM: dts: qcom: msm8974-hammerhead: increase load on l20 for sdhci Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 35/43] arm64: dts: qcom: db410c: Fix Bluetooth LED trigger Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 37/43] s390/qeth: fix race in used-buffer accounting Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 38/43] s390/qeth: reset layer2 attribute on layer switch Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 39/43] platform/x86: toshiba_acpi: Fix defined but not used build warnings Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 40/43] KVM: arm/arm64: Fix vgic init race Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 42/43] dmaengine: mv_xor_v2: kill the tasklets upon exit Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 41/43] drivers/base: stop new probing during shutdown Sasha Levin
2018-09-07  0:38 ` [PATCH AUTOSEL 4.9 43/43] crypto: sharah - Unregister correct algorithms for SAHARA 3 Sasha Levin
2018-09-07  5:43 ` [PATCH AUTOSEL 4.9 01/43] usb: usbtest: use irqsave() in USB's complete callback 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=20180907003816.57852-30-alexander.levin@microsoft.com \
    --to=alexander.levin@microsoft.com \
    --cc=casey@schaufler-ca.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=p.sawicki2@partner.samsung.com \
    --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

Powered by JetHome