From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: "Michal Koutný" <mkoutny@suse.com>
Cc: cve@kernel.org, linux-kernel@vger.kernel.org,
Tao Liu <thomas.liu@ucloud.cn>,
Willem de Bruijn <willemb@google.com>
Subject: Re: CVE-2022-48936: gso: do not skip outer ip header in case of ipip and net_failover
Date: Wed, 28 Aug 2024 09:30:08 +0200 [thread overview]
Message-ID: <2024082854-reassign-uniformed-2c2f@gregkh> (raw)
In-Reply-To: <z3hh3yrf5wym3obgol6obh3dkmqoc3rwbkj23qcmadf63b47h2@nn2232wngans>
On Tue, Aug 27, 2024 at 05:02:36PM +0200, Michal Koutný wrote:
> On Thu, Aug 22, 2024 at 11:31:37AM GMT, Greg Kroah-Hartman <gregkh@linuxfoundation.org> wrote:
> > We encounter a tcp drop issue in our cloud environment. Packet GROed in
> > host forwards to a VM virtio_net nic with net_failover enabled. VM acts
> > as a IPVS LB with ipip encapsulation. The full path like:
> > host gro -> vm virtio_net rx -> net_failover rx -> ipvs fullnat
> > -> ipip encap -> net_failover tx -> virtio_net tx
> >
> > When net_failover transmits a ipip pkt (gso_type = 0x0103, which means
> > SKB_GSO_TCPV4, SKB_GSO_DODGY and SKB_GSO_IPXIP4), there is no gso
> > did because it supports TSO and GSO_IPXIP4. But network_header points to
> > inner ip header.
> >
> > Call Trace:
> > tcp4_gso_segment ------> return NULL
> > inet_gso_segment ------> inner iph, network_header points to
> > ipip_gso_segment
> > inet_gso_segment ------> outer iph
> > skb_mac_gso_segment
>
> > Afterwards virtio_net transmits the pkt, only inner ip header is modified.
> > And the outer one just keeps unchanged. The pkt will be dropped in remote
> > host.
>
> That may appear like a transient connection issue or permanently
> impossible connection?
I don't know.
> > Call Trace:
> > inet_gso_segment ------> inner iph, outer iph is skipped
> > skb_mac_gso_segment
> > __skb_gso_segment
> > validate_xmit_skb
> > validate_xmit_skb_list
> > sch_direct_xmit
> > __qdisc_run
> > __dev_queue_xmit ------> virtio_net
> > dev_hard_start_xmit
> > __dev_queue_xmit ------> net_failover
> > ip_finish_output2
> > ip_output
> > iptunnel_xmit
> > ip_tunnel_xmit
> > ipip_tunnel_xmit ------> ipip
> > dev_hard_start_xmit
> > __dev_queue_xmit
> > ip_finish_output2
> > ip_output
> > ip_forward
> > ip_rcv
> > __netif_receive_skb_one_core
> > netif_receive_skb_internal
> > napi_gro_receive
> > receive_buf
> > virtnet_poll
> > net_rx_action
> >
> > The root cause of this issue is specific with the rare combination of
> > SKB_GSO_DODGY and a tunnel device that adds an SKB_GSO_ tunnel option.
> > SKB_GSO_DODGY is set from external virtio_net. We need to reset network
> > header when callbacks.gso_segment() returns NULL.
>
> Who's in control of these configuration (who can cause this incorrect
> packet being sent)?
>
> > This patch also includes ipv6_gso_segment(), considering SIT, etc.
> >
> > The Linux kernel CVE team has assigned CVE-2022-48936 to this issue.
>
> What is the security issue here?
This was assigned as part of the import of the Linux kernel GSD entries
into CVEs as required by the CVE board of directors (hence the 2022
date). If you don't feel this should be assigned a CVE, just let me
know and I will be glad to reject it.
thanks,
greg k-h
next prev parent reply other threads:[~2024-08-28 7:30 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-22 3:31 CVE-2022-48936: gso: do not skip outer ip header in case of ipip and net_failover Greg Kroah-Hartman
2024-08-27 15:02 ` Michal Koutný
2024-08-28 7:30 ` Greg Kroah-Hartman [this message]
2024-08-29 16:17 ` Michal Koutný
2024-08-29 16:53 ` Willem de Bruijn
2024-08-29 16:58 ` Greg Kroah-Hartman
2024-08-29 17:07 ` Willem de Bruijn
2024-08-30 10:44 ` Greg Kroah-Hartman
2024-08-30 11:06 ` Michal Koutný
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=2024082854-reassign-uniformed-2c2f@gregkh \
--to=gregkh@linuxfoundation.org \
--cc=cve@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mkoutny@suse.com \
--cc=thomas.liu@ucloud.cn \
--cc=willemb@google.com \
/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.