From patchwork Mon Jan 16 11:17:55 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gilad Ben-Yossef X-Patchwork-Id: 91556 Delivered-To: patch@linaro.org Received: by 10.182.3.34 with SMTP id 2csp1230997obz; Mon, 16 Jan 2017 03:18:15 -0800 (PST) X-Received: by 10.84.209.172 with SMTP id y41mr48777334plh.96.1484565495783; Mon, 16 Jan 2017 03:18:15 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u85si21265401pgb.137.2017.01.16.03.18.15; Mon, 16 Jan 2017 03:18:15 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of netdev-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of netdev-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=netdev-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751385AbdAPLSO (ORCPT + 5 others); Mon, 16 Jan 2017 06:18:14 -0500 Received: from foss.arm.com ([217.140.101.70]:50220 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751074AbdAPLSM (ORCPT ); Mon, 16 Jan 2017 06:18:12 -0500 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id AA72B1515; Mon, 16 Jan 2017 03:18:11 -0800 (PST) Received: from gby.kfn.arm.com (unknown [10.45.48.149]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 255903F220; Mon, 16 Jan 2017 03:18:09 -0800 (PST) From: Gilad Ben-Yossef To: steffen.klassert@secunet.com, herbert@gondor.apana.org.au, davem@davemloft.net, netdev@vger.kernel.org Cc: ofir.drang@arm.com, gilad.benyossef@arm.com Subject: [PATCH ipsec-next v3 1/2] IPsec: do not ignore crypto err in ah4 input Date: Mon, 16 Jan 2017 13:17:55 +0200 Message-Id: <1484565476-19371-2-git-send-email-gilad@benyossef.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1484565476-19371-1-git-send-email-gilad@benyossef.com> References: <1484565476-19371-1-git-send-email-gilad@benyossef.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org ah4 input processing uses the asynchronous hash crypto API which supplies an error code as part of the operation completion but the error code was being ignored. Treat a crypto API error indication as a verification failure. While a crypto API reported error would almost certainly result in a memcpy of the digest failing anyway and thus the security risk seems minor, performing a memory compare on what might be uninitialized memory is wrong. Signed-off-by: Gilad Ben-Yossef --- net/ipv4/ah4.c | 3 +++ 1 file changed, 3 insertions(+) -- 2.1.4 diff --git a/net/ipv4/ah4.c b/net/ipv4/ah4.c index f2a7102..22377c8 100644 --- a/net/ipv4/ah4.c +++ b/net/ipv4/ah4.c @@ -270,6 +270,9 @@ static void ah_input_done(struct crypto_async_request *base, int err) int ihl = ip_hdrlen(skb); int ah_hlen = (ah->hdrlen + 2) << 2; + if (err) + goto out; + work_iph = AH_SKB_CB(skb)->tmp; auth_data = ah_tmp_auth(work_iph, ihl); icv = ah_tmp_icv(ahp->ahash, auth_data, ahp->icv_trunc_len); From patchwork Mon Jan 16 11:17:56 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gilad Ben-Yossef X-Patchwork-Id: 91557 Delivered-To: patch@linaro.org Received: by 10.182.3.34 with SMTP id 2csp1231037obz; Mon, 16 Jan 2017 03:18:21 -0800 (PST) X-Received: by 10.84.136.7 with SMTP id 7mr36699185plk.100.1484565501811; Mon, 16 Jan 2017 03:18:21 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u85si21265401pgb.137.2017.01.16.03.18.21; Mon, 16 Jan 2017 03:18:21 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of netdev-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of netdev-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=netdev-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751381AbdAPLSU (ORCPT + 5 others); Mon, 16 Jan 2017 06:18:20 -0500 Received: from foss.arm.com ([217.140.101.70]:50234 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750994AbdAPLST (ORCPT ); Mon, 16 Jan 2017 06:18:19 -0500 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 990BC154D; Mon, 16 Jan 2017 03:18:13 -0800 (PST) Received: from gby.kfn.arm.com (unknown [10.45.48.149]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 1585F3F220; Mon, 16 Jan 2017 03:18:11 -0800 (PST) From: Gilad Ben-Yossef To: steffen.klassert@secunet.com, herbert@gondor.apana.org.au, davem@davemloft.net, netdev@vger.kernel.org Cc: ofir.drang@arm.com, gilad.benyossef@arm.com Subject: [PATCH ipsec-next v3 2/2] IPsec: do not ignore crypto err in ah6 input Date: Mon, 16 Jan 2017 13:17:56 +0200 Message-Id: <1484565476-19371-3-git-send-email-gilad@benyossef.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1484565476-19371-1-git-send-email-gilad@benyossef.com> References: <1484565476-19371-1-git-send-email-gilad@benyossef.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org ah6 input processing uses the asynchronous hash crypto API which supplies an error code as part of the operation completion but the error code was being ignored. Treat a crypto API error indication as a verification failure. While a crypto API reported error would almost certainly result in a memcpy of the digest failing anyway and thus the security risk seems minor, performing a memory compare on what might be uninitialized memory is wrong. Signed-off-by: Gilad Ben-Yossef --- net/ipv6/ah6.c | 3 +++ 1 file changed, 3 insertions(+) -- 2.1.4 diff --git a/net/ipv6/ah6.c b/net/ipv6/ah6.c index 189eb10..dda6035 100644 --- a/net/ipv6/ah6.c +++ b/net/ipv6/ah6.c @@ -474,6 +474,9 @@ static void ah6_input_done(struct crypto_async_request *base, int err) int hdr_len = skb_network_header_len(skb); int ah_hlen = (ah->hdrlen + 2) << 2; + if (err) + goto out; + work_iph = AH_SKB_CB(skb)->tmp; auth_data = ah_tmp_auth(work_iph, hdr_len); icv = ah_tmp_icv(ahp->ahash, auth_data, ahp->icv_trunc_len);