Subject: Re: [PATCH resend 1/2] capability: introduce sysctl for controlled user-ns capability whitelist

From: "Serge E. Hallyn" <[email-masked]>
Date: Thu, 9 Nov 2017 11:30:37 -0600

Quoting Mahesh Bandewar ([email-masked]):
> From: Mahesh Bandewar <[email-masked]>
> 
> Add a sysctl variable kernel.controlled_userns_caps_whitelist. This

I understand the arguments in favor of whitelists in most cases for
security purposes.  But given that you've said the goal here is to
prevent use of a capability in a user namespace when a CVE has been
found, a whitelist seems the wrong choice, since

1. it means that an attacker may through some other means be able
to add a capability back into the whitelist when you specifically
wanted to drop it.  With a blacklist, you could say "once a cap has
been dropped it can never be re-added without rebooting".
2. it means by default all capabilities will be denied once the
switch is pulled which is specifically not what you want in this
case.
3. the admin can't just say "drop CAP_NET_ADMIN", but needs to
know to echo ~CAP_NET_ADMIN.

Why not make it a blacklist, and once a cap is dropped it can
never be re-added?

-serge