lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAF1oqRAtZfLdhUUodcU0d-dG_3AMcU6DdGvCfREaOcJTTybG6g@mail.gmail.com>
Date:   Tue, 12 Feb 2019 15:13:53 +0100
From:   Alin Năstac <alin.nastac@...il.com>
To:     David Miller <davem@...emloft.net>
Cc:     netdev@...r.kernel.org
Subject: Re: [PATCH] ipv6: fix icmp6_send() route lookup

On Mon, Feb 11, 2019 at 9:38 PM David Miller <davem@...emloft.net> wrote:
>
> From: Alin Nastac <alin.nastac@...il.com>
> Date: Thu,  7 Feb 2019 16:05:31 +0100
>
> > Original packet destination address must be used as saddr for the
> > route lookup performed by icmp6_send() even when this address is
> > not local. This fixes the IPv6 router ability to send back
> > destination unreachable ICMPv6 errors for forwarded packets when
> > the route toward the saddr of the original packet is source
> > filtered (e.g. a default route with a "from PD" attribute, where
> > PD is the delegated prefix).
> >
> > Signed-off-by: Alin Nastac <alin.nastac@...il.com>
>
> Yes, but however this will change behavior for a lot of situations
> not just the one you are interested in.
>
> The base ipv6_chk_addr() test has been there for more than a decade
> and I'm not comfortable with changing this logic until I see you
> write up a full audit of all of the use cases of icmp6_send() and
> how they are impacted by your changes.

Please consider these:
 - saddr variable is used only to perform route lookup towards the skb
originator and is explicitly reset to NULL when skb is multicast (see
the if statement below the change).
 - In order for icmp6_send() to perform its duty, this route lookup
must succeed.
 - As long as your IPv6 routes don't use source filtering or
source-based routing, this change will have absolutely no effect on
the kernel behavior because route lookup will succeed regardless of
the fl6.saddr value.

I don't contest the usefulness of ipv6_chk_addr(), it clearly has its
purpose. However when it comes to generating ICMPv6 errors, both
routers and hosts are entitled to generate them (see RFC 4443), hence
this test shouldn't be called here.

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ