linux/kernel
Eric W. Biederman 0542f17bf2 userns: Document what the invariant required for safe unprivileged mappings.
The rule is simple.  Don't allow anything that wouldn't be allowed
without unprivileged mappings.

It was previously overlooked that establishing gid mappings would
allow dropping groups and potentially gaining permission to files and
directories that had lesser permissions for a specific group than for
all other users.

This is the rule needed to fix CVE-2014-8989 and prevent any other
security issues with new_idmap_permitted.

The reason for this rule is that the unix permission model is old and
there are programs out there somewhere that take advantage of every
little corner of it.  So allowing a uid or gid mapping to be
established without privielge that would allow anything that would not
be allowed without that mapping will result in expectations from some
code somewhere being violated.  Violated expectations about the
behavior of the OS is a long way to say a security issue.

Cc: stable@vger.kernel.org
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
2014-12-05 19:07:26 -06:00
..
bpf bpf: split eBPF out of NET 2014-10-27 19:09:59 -04:00
configs
debug
events uprobes, x86: Fix _TIF_UPROBE vs _TIF_NOTIFY_RESUME 2014-11-23 14:25:28 -08:00
gcov gcov: add ARM64 to GCOV_PROFILE_ALL 2014-10-29 16:33:14 -07:00
irq
locking
power PM / sleep: Fix entering suspend-to-IDLE if no freeze_oops is set 2014-11-08 22:30:05 +01:00
printk
rcu rcu: Make rcu_barrier() understand about missing rcuo kthreads 2014-10-28 13:24:13 -07:00
sched sched: Provide update_curr callbacks for stop/idle scheduling classes 2014-11-23 14:14:40 -08:00
time sched/cputime: Fix cpu_timer_sample_group() double accounting 2014-11-16 10:04:18 +01:00
trace tracing: Do not risk busy looping in buffer splice 2014-11-10 16:47:31 -05:00
.gitignore
acct.c
async.c
audit.c Merge branch 'stable-3.18' of git://git.infradead.org/users/pcmoore/audit 2014-11-13 09:36:39 -08:00
audit.h
audit_tree.c audit: keep inode pinned 2014-11-11 14:20:22 -05:00
audit_watch.c
auditfilter.c Merge git://git.infradead.org/users/eparis/audit 2014-10-19 16:25:56 -07:00
auditsc.c Merge git://git.infradead.org/users/eparis/audit 2014-10-19 16:25:56 -07:00
backtracetest.c
bounds.c
capability.c
cgroup.c
cgroup_freezer.c
compat.c
configs.c
context_tracking.c sched: stop the unbound recursion in preempt_schedule_context() 2014-10-28 10:46:05 +01:00
cpu.c rcu: More on deadlock between CPU hotplug and expedited grace periods 2014-10-23 07:51:17 -07:00
cpu_pm.c
cpuset.c
crash_dump.c
cred.c
delayacct.c
dma.c
elfcore.c
exec_domain.c
exit.c
extable.c
fork.c
freezer.c freezer: remove obsolete comments in __thaw_task() 2014-10-21 23:44:20 +02:00
futex.c futex: Fix a race condition between REQUEUE_PI and task death 2014-10-26 16:16:18 +01:00
futex_compat.c
groups.c groups: Consolidate the setgroups permission checks 2014-12-05 17:19:27 -06:00
hung_task.c
irq_work.c
jump_label.c
kallsyms.c
kcmp.c
Kconfig.freezer
Kconfig.hz
Kconfig.locks
Kconfig.preempt
kexec.c
kmod.c kernel/kmod: fix use-after-free of the sub_info structure 2014-10-29 16:33:14 -07:00
kprobes.c
ksysfs.c
kthread.c
latencytop.c
Makefile bpf: split eBPF out of NET 2014-10-27 19:09:59 -04:00
module-internal.h
module.c
module_signing.c
notifier.c
nsproxy.c
padata.c
panic.c kernel/panic.c: update comments for print_tainted 2014-11-13 16:17:06 -08:00
params.c
pid.c
pid_namespace.c
profile.c
ptrace.c
range.c
reboot.c
relay.c
res_counter.c
resource.c
seccomp.c
signal.c
smp.c
smpboot.c
smpboot.h
softirq.c
stacktrace.c
stop_machine.c
sys.c
sys_ni.c
sysctl.c sched/fair: Fix division by zero sysctl_numa_balancing_scan_size 2014-10-28 10:46:04 +01:00
sysctl_binary.c
system_certificates.S
system_keyring.c
task_work.c
taskstats.c
test_kprobes.c
torture.c
tracepoint.c
tsacct.c
uid16.c groups: Consolidate the setgroups permission checks 2014-12-05 17:19:27 -06:00
up.c
user-return-notifier.c
user.c
user_namespace.c userns: Document what the invariant required for safe unprivileged mappings. 2014-12-05 19:07:26 -06:00
utsname.c
utsname_sysctl.c
watchdog.c
workqueue.c
workqueue_internal.h