public inbox for netdev@vger.kernel.org 
 help / color / mirror / Atom feed
From: Mat Martineau <mathew.j.martineau@linux•intel.com>
To: Maxim Mikityanskiy <maximmi@nvidia•com>
Cc: "Matthieu Baerts" <matthieu.baerts@tessares•net>,
	"Jakub Kicinski" <kuba@kernel•org>,
	"David S. Miller" <davem@davemloft•net>,
	"Pablo Neira Ayuso" <pablo@netfilter•org>,
	"Jozsef Kadlecsik" <kadlec@netfilter•org>,
	"Florian Westphal" <fw@strlen•de>,
	"Toke Høiland-Jørgensen" <toke@toke•dk>,
	"Jamal Hadi Salim" <jhs@mojatatu•com>,
	"Cong Wang" <xiyou.wangcong@gmail•com>,
	"Jiri Pirko" <jiri@resnulli•us>,
	"Patrick McHardy" <kaber@trash•net>,
	"Jesper Dangaard Brouer" <brouer@redhat•com>,
	"Paolo Abeni" <pabeni@redhat•com>,
	"Christoph Paasch" <cpaasch@apple•com>,
	"Peter Krystad" <peter.krystad@linux•intel.com>,
	"Young Xiao" <92siuyang@gmail•com>,
	netdev@vger•kernel.org
Subject: Re: [PATCH net 2/3] mptcp: Fix out of bounds when parsing TCP options
Date: Wed, 9 Jun 2021 17:07:14 -0700 (PDT)	[thread overview]
Message-ID: <c7caefb9-1aed-5bc9-b429-925412994249@linux.intel.com> (raw)
In-Reply-To: <20210609142212.3096691-3-maximmi@nvidia.com>

On Wed, 9 Jun 2021, Maxim Mikityanskiy wrote:

> The TCP option parser in mptcp (mptcp_get_options) could read one byte
> out of bounds. When the length is 1, the execution flow gets into the
> loop, reads one byte of the opcode, and if the opcode is neither
> TCPOPT_EOL nor TCPOPT_NOP, it reads one more byte, which exceeds the
> length of 1.
>
> This fix is inspired by commit 9609dad263f8 ("ipv4: tcp_input: fix stack
> out of bounds when parsing TCP options.").
>
> Cc: Young Xiao <92siuyang@gmail•com>
> Fixes: cec37a6e41aa ("mptcp: Handle MP_CAPABLE options for outgoing connections")
> Signed-off-by: Maxim Mikityanskiy <maximmi@nvidia•com>
> ---
> net/mptcp/options.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/net/mptcp/options.c b/net/mptcp/options.c
> index 6b825fb3fa83..9b263f27ce9b 100644
> --- a/net/mptcp/options.c
> +++ b/net/mptcp/options.c
> @@ -356,6 +356,8 @@ void mptcp_get_options(const struct sk_buff *skb,
> 			length--;
> 			continue;
> 		default:
> +			if (length < 2)
> +				return;
> 			opsize = *ptr++;
> 			if (opsize < 2) /* "silly options" */
> 				return;
> -- 
> 2.25.1

Florian's comment on patch 1 prompted me to double-check th->doff 
validation, and for MPTCP we're covered by the check in tcp_v4_rcv(). So 
this patch looks good:

Reviewed-by: Mat Martineau <mathew.j.martineau@linux•intel.com>

If you send a v2 series, please also cc: mptcp@lists•linux.dev

Thanks!

--
Mat Martineau
Intel

  reply	other threads:[~2021-06-10  0:07 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-09 14:22 [PATCH net 0/3] Fix out of bounds when parsing TCP options Maxim Mikityanskiy
2021-06-09 14:22 ` [PATCH net 1/3] netfilter: synproxy: " Maxim Mikityanskiy
2021-06-09 14:51   ` Florian Westphal
2021-06-10  7:05     ` Maxim Mikityanskiy
2021-06-10  8:56       ` Florian Westphal
2021-06-09 14:22 ` [PATCH net 2/3] mptcp: " Maxim Mikityanskiy
2021-06-10  0:07   ` Mat Martineau [this message]
2021-06-09 14:22 ` [PATCH net 3/3] sch_cake: " Maxim Mikityanskiy
2021-06-09 21:51   ` Toke Høiland-Jørgensen
2021-06-10 11:19     ` Maxim Mikityanskiy
2021-06-10 14:33       ` Toke Høiland-Jørgensen

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=c7caefb9-1aed-5bc9-b429-925412994249@linux.intel.com \
    --to=mathew.j.martineau@linux$(echo .)intel.com \
    --cc=92siuyang@gmail$(echo .)com \
    --cc=brouer@redhat$(echo .)com \
    --cc=cpaasch@apple$(echo .)com \
    --cc=davem@davemloft$(echo .)net \
    --cc=fw@strlen$(echo .)de \
    --cc=jhs@mojatatu$(echo .)com \
    --cc=jiri@resnulli$(echo .)us \
    --cc=kaber@trash$(echo .)net \
    --cc=kadlec@netfilter$(echo .)org \
    --cc=kuba@kernel$(echo .)org \
    --cc=matthieu.baerts@tessares$(echo .)net \
    --cc=maximmi@nvidia$(echo .)com \
    --cc=netdev@vger$(echo .)kernel.org \
    --cc=pabeni@redhat$(echo .)com \
    --cc=pablo@netfilter$(echo .)org \
    --cc=peter.krystad@linux$(echo .)intel.com \
    --cc=toke@toke$(echo .)dk \
    --cc=xiyou.wangcong@gmail$(echo .)com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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