Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp45997imu; Thu, 8 Nov 2018 14:30:12 -0800 (PST) X-Google-Smtp-Source: AJdET5fm9VeQIM3CfqOh6C+udyZPAo659c/l53m1duGxRXxoF5CRzKfKt8sqoXAo2prQ9LBeQ8y4 X-Received: by 2002:a17:902:8a89:: with SMTP id p9-v6mr6469852plo.183.1541716212185; Thu, 08 Nov 2018 14:30:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541716212; cv=none; d=google.com; s=arc-20160816; b=hMB6d5zM+bibtWyY1wOCwgwPY2SUF5xN0Veur9hTKZqnn/yWJr6CmFGXPKHK6HsDw1 uS7S7zK3U1pAu5i/mn3DBzfmugMf7EdaSeIbuF6mDEe1S6u2nNlY/InMJXsq2iPKC3Zy 55G6SbOc7ReW0RgQFftFoRMvMOelPK3SSsf9Y1EmkLVEjsXA7lYMeMfUzWHvhvlmR2Y/ ViAUUfFIkeuMqJ7R1P6dOT5/+uLFKy0znya/KauVbz9k25LE0LK/k6P6OzMIQk558uKy zt3Z8KBPb5u6vgMAv0e3RI+OTS0T/UlD8h9/XwDNO2q8IUiJPw7ImrJ9d73zbrUTi1w8 xAyA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=dA+jEv2JofkiRyeQfJgXOV2NXADWV2AUXoZd/HQc2gQ=; b=IFJPYrM8PAGWlzuEB7am+v4y2aXNRcA3RGHfGWOeNc98Pdai2DHNQUjr6VVrUkkI7o ZyW/TgjhpKasj4Rq76LYRpLpPJeIzCfkvDILtqPdzp02F0lfdIdq2wz5FzUosaEHIClP x33s1zDFgUTPLHBt3sqlYC318i97jZUHMnnHHsjw0L1WCHM5WZXwbI2RU25lWtiPkGIe PjdacmNZMuQUekPyrkK5C2auSioSBJa1zBODoXBa4zK1bs6zEmsR829buzhi96LpF19W 11w65w4pRX7rn/vYi3cIL2nCuoAcFln7XoIRM+s54OyI9nprl5sWiokyXzC/+44HTdmA VmZQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=VIHOB0M9; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q10-v6si5168121pls.344.2018.11.08.14.29.56; Thu, 08 Nov 2018 14:30:12 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=VIHOB0M9; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730977AbeKIHja (ORCPT + 99 others); Fri, 9 Nov 2018 02:39:30 -0500 Received: from mail.kernel.org ([198.145.29.99]:59092 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729686AbeKIHj3 (ORCPT ); Fri, 9 Nov 2018 02:39:29 -0500 Received: from localhost (unknown [208.72.13.198]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id B34772146E; Thu, 8 Nov 2018 22:01:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1541714519; bh=v5EYIaCNuLGwybuSBXEV2ejPHjB7vBMT10cO5R2kARA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VIHOB0M94WUhka2CVcNtNAJk6f2M5XvG+IKX3e/7PaE3yaEC4mg5Y0/P8wTNPdaVb o5XBkygvq5tfjRzmX0ehFdJHyPOONgl/t6ip1ngl6l3OM4fP4ydi0Wre/VtUSCynPe TGmQkO9mv0ipKFottxyjMyfmQhSyuB5bTQe46m0A= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Air Icy , Steffen Klassert , Sasha Levin Subject: [PATCH 4.9 001/171] xfrm: Validate address prefix lengths in the xfrm selector. Date: Thu, 8 Nov 2018 13:49:31 -0800 Message-Id: <20181108215127.339176859@linuxfoundation.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181108215127.257643509@linuxfoundation.org> References: <20181108215127.257643509@linuxfoundation.org> User-Agent: quilt/0.65 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.9-stable review patch. If anyone has any objections, please let me know. ------------------ [ Upstream commit 07bf7908950a8b14e81aa1807e3c667eab39287a ] We don't validate the address prefix lengths in the xfrm selector we got from userspace. This can lead to undefined behaviour in the address matching functions if the prefix is too big for the given address family. Fix this by checking the prefixes and refuse SA/policy insertation when a prefix is invalid. Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Reported-by: Air Icy Signed-off-by: Steffen Klassert Signed-off-by: Sasha Levin --- net/xfrm/xfrm_user.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c index 6e768093d7c8..b7ac834a6091 100644 --- a/net/xfrm/xfrm_user.c +++ b/net/xfrm/xfrm_user.c @@ -151,10 +151,16 @@ static int verify_newsa_info(struct xfrm_usersa_info *p, err = -EINVAL; switch (p->family) { case AF_INET: + if (p->sel.prefixlen_d > 32 || p->sel.prefixlen_s > 32) + goto out; + break; case AF_INET6: #if IS_ENABLED(CONFIG_IPV6) + if (p->sel.prefixlen_d > 128 || p->sel.prefixlen_s > 128) + goto out; + break; #else err = -EAFNOSUPPORT; @@ -1316,10 +1322,16 @@ static int verify_newpolicy_info(struct xfrm_userpolicy_info *p) switch (p->sel.family) { case AF_INET: + if (p->sel.prefixlen_d > 32 || p->sel.prefixlen_s > 32) + return -EINVAL; + break; case AF_INET6: #if IS_ENABLED(CONFIG_IPV6) + if (p->sel.prefixlen_d > 128 || p->sel.prefixlen_s > 128) + return -EINVAL; + break; #else return -EAFNOSUPPORT; -- 2.17.1