Hi everybody!

Harlan Lieberman-Berg:
> Thanks for weighing in, PaX Team.  (And thank you for the awesome you
> and spender do on kernel security!)

+1 :)

> To summarize, it seems that we have a couple different options to choose
> from:

> * Switch to a dedicated microkernel that does a memory wipe, and kexec
>   into it.  This could be something custom, or an enhancement of the
>   preexisting solution.

>   Advantages are that it will (probably) give us the most clean wipe, as
>   we can reduce the amount of space the kernel takes up and drop all
>   functionality that's not absolutely needed.  On the negative side, it
>   will require continuing to support a separate codeline that's not
>   going to be reused elsewhere, limiting testing and development
>   effort.  It also requires us to reenable kexec functionality, which
>   exposes a risk of code injection unless we get signed kexec support.

> * Rely on PAX_MEMORY_SANITIZE.  This either takes the form of enhancing
>   cleaning memory on shutdown, or kexec'ing into the same version of the
>   kernel that's already running to rely on the buddy allocator clearing
>   everything again.

>   Definite pro in that it reduces the amount of code maintained
>   downstream by the Tails team to ~zero.  Cons are increased reliance on
>   more complex functionality in the kernel, and potentially relying on a
>   somewhat undocumented and unplanned functionality in the kernel.  (It
>   seems unlikely that it'll change any time without us noticing, but
>   it's possible.)

> * Do it in userspace.  Add functionality into the initramfs as
>   necessary to wipe memory, and simply run an abbreviated shutdown.

>   This lets us not have to deal with the potential for kexec's attack
>   surface, and is probably some medium amount of code between the above
>   two options.  Downside is that it potentially is less reliable in
>   terms of clearing memory than the other options, and is probably
>   slower time-to-first-bit-erased than the other options.

> Does that seem like a fair summary to everyone?

It does seem like it to me.

> If so, which path seems the best for us to move forward on?

I prefer the two first options (mostly because the third one is
essentially what we're already doing, and are trying to
improve/replace).

Not sure which one of those two yet, but the next thing to do in both
cases is the same: make it possible to allow kexec without disabling
GRKERNSEC_KMEM entirely.

I don't know what configuration interface would be best: move kexec
disabling out of GRKERNSEC_KMEM, to another kernel build-time config
setting? Leave it as part of GRKERNSEC_KMEM, but add a sysctl to allow
re-enabling kexec at runtime? pipacs, spender: what do you think?

Cheers,
-- 
intrigeri
_______________________________________________
Tails-dev mailing list
Tails-dev@boum.org
https://mailman.boum.org/listinfo/tails-dev
To unsubscribe from this list, send an empty email to 
tails-dev-unsubscr...@boum.org.

Reply via email to