All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Andy Whitcroft <apw@canonical.com>,
	Steffen Klassert <steffen.klassert@secunet.com>,
	Linus Torvalds <torvalds@linux-foundation.org>
Subject: [PATCH 4.4 02/14] xfrm_user: validate XFRM_MSG_NEWAE XFRMA_REPLAY_ESN_VAL replay_window
Date: Thu, 30 Mar 2017 11:58:36 +0200	[thread overview]
Message-ID: <20170330094945.369454932@linuxfoundation.org> (raw)
In-Reply-To: <20170330094944.906915050@linuxfoundation.org>

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

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

From: Andy Whitcroft <apw@canonical.com>

commit 677e806da4d916052585301785d847c3b3e6186a upstream.

When a new xfrm state is created during an XFRM_MSG_NEWSA call we
validate the user supplied replay_esn to ensure that the size is valid
and to ensure that the replay_window size is within the allocated
buffer.  However later it is possible to update this replay_esn via a
XFRM_MSG_NEWAE call.  There we again validate the size of the supplied
buffer matches the existing state and if so inject the contents.  We do
not at this point check that the replay_window is within the allocated
memory.  This leads to out-of-bounds reads and writes triggered by
netlink packets.  This leads to memory corruption and the potential for
priviledge escalation.

We already attempt to validate the incoming replay information in
xfrm_new_ae() via xfrm_replay_verify_len().  This confirms that the user
is not trying to change the size of the replay state buffer which
includes the replay_esn.  It however does not check the replay_window
remains within that buffer.  Add validation of the contained
replay_window.

CVE-2017-7184
Signed-off-by: Andy Whitcroft <apw@canonical.com>
Acked-by: Steffen Klassert <steffen.klassert@secunet.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 net/xfrm/xfrm_user.c |    3 +++
 1 file changed, 3 insertions(+)

--- a/net/xfrm/xfrm_user.c
+++ b/net/xfrm/xfrm_user.c
@@ -415,6 +415,9 @@ static inline int xfrm_replay_verify_len
 	if (nla_len(rp) < ulen || xfrm_replay_state_esn_len(replay_esn) != ulen)
 		return -EINVAL;
 
+	if (up->replay_window > up->bmp_len * sizeof(__u32) * 8)
+		return -EINVAL;
+
 	return 0;
 }
 

  parent reply	other threads:[~2017-03-30  9:59 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-30  9:58 [PATCH 4.4 00/14] 4.4.59-stable review Greg Kroah-Hartman
2017-03-30  9:58 ` [PATCH 4.4 01/14] xfrm: policy: init locks early Greg Kroah-Hartman
2017-03-30  9:58 ` Greg Kroah-Hartman [this message]
2017-03-30  9:58 ` [PATCH 4.4 03/14] xfrm_user: validate XFRM_MSG_NEWAE incoming ESN size harder Greg Kroah-Hartman
2017-03-30  9:58 ` [PATCH 4.4 04/14] virtio_balloon: init 1st buffer in stats vq Greg Kroah-Hartman
2017-03-30  9:58 ` [PATCH 4.4 05/14] pinctrl: qcom: Dont clear status bit on irq_unmask Greg Kroah-Hartman
2017-03-30  9:58 ` [PATCH 4.4 06/14] c6x/ptrace: Remove useless PTRACE_SETREGSET implementation Greg Kroah-Hartman
2017-03-30  9:58 ` [PATCH 4.4 07/14] h8300/ptrace: Fix incorrect register transfer count Greg Kroah-Hartman
2017-03-30  9:58 ` [PATCH 4.4 08/14] mips/ptrace: Preserve previous registers for short regset write Greg Kroah-Hartman
2017-03-30  9:58 ` [PATCH 4.4 09/14] sparc/ptrace: " Greg Kroah-Hartman
2017-03-30  9:58 ` [PATCH 4.4 10/14] metag/ptrace: " Greg Kroah-Hartman
2017-03-30  9:58 ` [PATCH 4.4 11/14] metag/ptrace: Provide default TXSTATUS for short NT_PRSTATUS Greg Kroah-Hartman
2017-03-30  9:58 ` [PATCH 4.4 12/14] metag/ptrace: Reject partial NT_METAG_RPIPE writes Greg Kroah-Hartman
2017-03-30  9:58 ` [PATCH 4.4 13/14] fscrypt: remove broken support for detecting keyring key revocation Greg Kroah-Hartman
2017-03-30  9:58 ` [PATCH 4.4 14/14] sched/rt: Add a missing rescheduling point Greg Kroah-Hartman
2017-03-30 18:52 ` [PATCH 4.4 00/14] 4.4.59-stable review Shuah Khan
2017-03-31  3:45 ` Guenter Roeck

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=20170330094945.369454932@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=apw@canonical.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=steffen.klassert@secunet.com \
    --cc=torvalds@linux-foundation.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 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.