svn commit: r359797 - in head/sys: net netinet netinet6
Alexander V. Chernikov
melifaro at freebsd.org
Sat Apr 11 22:30:36 UTC 2020
11.04.2020, 21:58, "Ian Lepore" <ian at freebsd.org>:
> On Sat, 2020-04-11 at 13:02 -0700, Conrad Meyer wrote:
>> Hi Alexander,
>>
>> On Sat, Apr 11, 2020 at 12:37 AM Alexander V. Chernikov
>> <melifaro at freebsd.org> wrote:
>> >
>> > Author: melifaro
>> > Date: Sat Apr 11 07:37:08 2020
>> > New Revision: 359797
>> > URL: https://svnweb.freebsd.org/changeset/base/359797
>> >
>> > Log:
>> > Remove per-AF radix_mpath initializtion functions.
>> >
>> > Split their functionality by moving random seed allocation
>> > to SYSINIT and calling (new) generic multipath function from
>> > standard IPv4/IPv5 RIB init handlers.
>> > ...
>> > --- head/sys/net/radix_mpath.c Sat Apr 11 07:31:16
>> > 2020 (r359796)
>> > +++ head/sys/net/radix_mpath.c Sat Apr 11 07:37:08
>> > 2020 (r359797)
>> > @@ -290,38 +290,18 @@ rtalloc_mpath_fib(struct route *ro, uint32_t
>> > hash, u_i
>> > ...
>> > +static void
>> > +mpath_init(void)
>> > {
>> > - struct rib_head *rnh;
>> >
>> > hashjitter = arc4random();
>> > - if (in6_inithead(head, off, fibnum) == 1) {
>> > - rnh = (struct rib_head *)*head;
>> > - rnh->rnh_multipath = 1;
>> > - return 1;
>> > - } else
>> > - return 0;
>> > }
>> > +SYSINIT(mpath_init, SI_SUB_PROTO_DOMAIN, SI_ORDER_ANY, mpath_init,
>> > NULL);
>>
>> This is pretty early in boot to be asking for random numbers. We
>> don't have interrupts yet, for example. If the system doesn't have a
>> saved /boot/entropy loaded (PPC, or installer, or some other embedded
>> system perhaps), we will either deadlock boot or get not especially
>> random numbers here (depending on availability behavior of arc4random
>> — currently we err on the side of low quality random numbers).
>>
>> If this number is predictable to an attacker, is it easier to DoS the
>> system? Do we need the random number before userspace starts? (I
>> would imagine networking does not really start chatting with remote
>> hosts prior to userspace boot, but this is just a guess.)
>>
>> Best,
>> Conrad
>
> I believe the earliest use of networking during boot is for mounting
> the rootfs using nfs. So SI_SUB_ROOT_CONF-1 might be good.
Yep, that's a good one. Generally you're right.
In this particular case, this random value is only used when we have multiple paths to a particular destination. Such configuraition implies having either routing daemon up, or static route(8) configuration applied, which will happen at least after SI_SUB_KTHREAD_INIT. With all this in mind I'm thinking of moving it to the SI_SUB_LAST to increase the chance of getting good entropy. Does this sound good to you?
>
> -- Ian
More information about the svn-src-head
mailing list