В ядре Linux устранена следующая уязвимость:
sysctl: переместите запись «cad_pid» из pid_table[] в kern_reboot_table[]
cad_pid является глобальным, а kill_cad_pid() используется только в корневом пространстве имен. Однако из-за pid_table_root_permissions() пользователь без полномочий root может отменить общий доступ
pid/user и измените его из дочернего пространства имен. Это не делает
смысл и просто неверен.
Переместите его в kern_reboot_table[], где он логически принадлежит; это гарантирует
что только GLOBAL_ROOT_UID может читать/изменять этот sysctl. Обратите внимание, что этот патч не сохраняет «#ifdef CONFIG_PROC_SYSCTL» вокруг
«cad_pid»; CONFIG_PROC_SYSCTL выбирает CONFIG_SYSCTL, поэтому всегда
устанавливается при компиляции kern_reboot_table[].
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: sysctl: move the "cad_pid" entry from pid_table[] to kern_reboot_table[] cad_pid is global, and kill_cad_pid() is only used in the root namespace. However, due to pid_table_root_permissions(), a non-root user can unshare pid/user namespaces and modify it from the child namespace. This makes no sense and is simply wrong. Move it to kern_reboot_table[] where it logically belongs; this ensures that only GLOBAL_ROOT_UID can read/modify this sysctl. Note that this patch doesn't preserve "#ifdef CONFIG_PROC_SYSCTL" around the "cad_pid"; CONFIG_PROC_SYSCTL selects CONFIG_SYSCTL, so it is always set when kern_reboot_table[] is compiled.