URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 115398
[ Назад ]

Исходное сообщение
"Локальная root-уязвимость в ядре Linux"

Отправлено opennews , 26-Сен-18 11:28 
Компания Qualys раскрыла (https://www.openwall.com/lists/oss-security/2018/09/25/4) информацию об уязвимости (CVE-2018-14634 (https://security-tracker.debian.org/tracker/CVE-2018-14634)) в ядре Linux. Проблема вызвана целочисленным переполнением в функции create_elf_tables() и проявляется на 64-разрядных системах, имеющих более 32 Гб ОЗУ. Локальный атакующий может эксплуатировать уязвимость через исполняемый файл с флагом SUID root для получения полноценных root-привилегий в системе.


Вызывающая проблему ошибка была внесена (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...) в ядро в июле 2007 года вместе с кодом для поддержки аргументов переменной длины. Около года назад в ядро был принято исправление (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...), ограничивающее размер стека для аргументов exec(). Данное исправление блокирует возможность эксплуатации уязвимости, но многие дистрибутивы не портировали его в свои длительно поддерживаемые пакеты с ядром.

Например, проблема затрагивает (https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2018-14634) ядро, поставляемое (https://access.redhat.com/articles/3588731) в    Red Hat Enterprise Linux 6 и 7, Ubuntu 12.04 (https://people.canonical.com/~ubuntu-security/cve/2018/CVE-2...) и Debian 8 (https://security-tracker.debian.org/tracker/CVE-2018-14634).

Уязвимость эксплуатируется через запуск при помощи функции execve() suid-файла с передачей ему очень большого числа аргументов (около 16 миллиардов). Для успешной атаки в системе должно быть как минимум 32GB свободной оперативной памяти. Код прототипов эксплоитов дотупен в открытом (https://www.qualys.com/2018/09/25/cve-2018-14634/poc-suidbin.c) доступе (https://www.qualys.com/2018/09/25/cve-2018-14634/poc-exploit.c).

URL: https://www.openwall.com/lists/oss-security/2018/09/25/4
Новость: https://www.opennet.me/opennews/art.shtml?num=49340


Содержание

Сообщения в этом обсуждении
"Локальная root-уязвимость в ядре Linux"
Отправлено Нанобот , 26-Сен-18 11:34 
>очень большого числа аргументов (около 16 миллиардов)
>минимум 32GB свободной оперативной памяти

подождите,подождите. 16 млрд аргументов по 8 байт каждый это уже 128GB


"Локальная root-уязвимость в ядре Linux"
Отправлено jeste.space , 26-Сен-18 11:35 
16 млрд по 2 байта? или не работает?

"Локальная root-уязвимость в ядре Linux"
Отправлено Нанобот , 26-Сен-18 11:47 
ну, я исхожу из того, что каждый аргумент - ссылка на строку, соответственно, каждый аргумент потребует как минимум 8 байт (и, если такое предположение изначально неверно, то и расчёт будет некорректным)

"Локальная root-уязвимость в ядре Linux"
Отправлено Аноним , 26-Сен-18 12:09 
В C(СИ) массив строк (для exec..) это просто кусок памяти, а разделение в нём - нулевые символы \0

"Локальная root-уязвимость в ядре Linux"
Отправлено Нанобот , 26-Сен-18 12:24 
а, ну тогда всё правильно в новости написано, был неправ

"Локальная root-уязвимость в ядре Linux"
Отправлено Аноним , 26-Сен-18 12:48 
В C как раз argv это массив указателей на строки

"Локальная root-уязвимость в ядре Linux"
Отправлено z , 26-Сен-18 13:41 
процессу передаётся именно одна большая строка, где разделители это \0, crt её потом парсит и устанавливает argv[] для сишных прогамм

"Локальная root-уязвимость в ядре Linux"
Отправлено Аноним , 26-Сен-18 15:03 
Угу, поэтому в _C_ argv — это массив указателей.

"Локальная root-уязвимость в ядре Linux"
Отправлено mickvav , 26-Сен-18 19:37 
Это он в userspace-коде - массив указателей. А в ядре, которое тоже, внезапно, на С - не обязан.

"Локальная root-уязвимость в ядре Linux"
Отправлено Аноним , 27-Сен-18 02:15 
Паря, до того как твой main() получит управление - в обычной ситуации startup делает довольно много интересного. И есть некоторая разница между стандартом на язык си и тем как ядро по факту создает процесс в конкретной системе и как ему параметры передает.

"Локальная root-уязвимость в ядре Linux"
Отправлено ананим.orig , 26-Сен-18 15:07 
откуда вы все берётесь то?!!
Ещё раз:
> Проблема вызвана целочисленным переполнением в функции create_elf_tables() и проявляется на 64-разрядных системах, имеющих более 32 Гб ОЗУ.

- целочисленным переполнением
- в функции create_elf_tables()
- на 64-разрядных системах
- имеющих более 32 Гб ОЗУ

Может ещё раз повторить? Или бесполезно?


"Локальная root-уязвимость в ядре Linux"
Отправлено Ordu , 26-Сен-18 13:46 
В статье выше есть все необходимые ссылки, чтобы объяснить это.

> We execve() a SUID-root binary with exactly 0x80000000 "items" (i.e.,
> INT_MIN "items"): roughly 0x80000000 * sizeof(char *) = 16GB of argument
> pointers, 16GB of argument strings, and 16GB of environment strings. Our
> exploit requires "only" 2 * 16GB = 32GB of memory, instead of 3 * 16GB =
> 48GB or more, because we use a few tricks to reduce its memory footprint
> (for example, we replace the nearly 16GB of equal argument pointers with
> equivalent file-backed mappings that consume practically no memory).


"Локальная root-уязвимость в ядре Linux"
Отправлено Аноним , 26-Сен-18 12:00 
$ free
              total        used        free      shared  buff/cache   available
Mem:      131990704     8925636   115768364        1228     7296704   121915208
Swap:             0           0           0

$ ./poc-exploit
execve: Argument list too long
died in main: 229

Ничего не работает в этих ваших линуксах.


"Локальная root-уязвимость в ядре Linux"
Отправлено анонимец , 26-Сен-18 12:16 
uname -r забыл показать

"Локальная root-уязвимость в ядре Linux"
Отправлено Аноним , 26-Сен-18 20:16 
4.4.0-17134-Microsoft

"Локальная root-уязвимость в ядре Linux"
Отправлено Аноним , 27-Сен-18 09:31 
$ uname -a
Linux steinberg 4.18.1-arch1-1-ARCH #1 SMP PREEMPT Wed Aug 15 21:11:55 UTC 2018 x86_64 GNU/Linux

Оба бинарника компилировал, suid ставил.


"Локальная root-уязвимость в ядре Linux"
Отправлено Мегазаычы , 03-Окт-18 02:46 
> Около года назад в ядро было принято исправление

очевидно, что в 4.18.1 оно есть. ищи ядро без него.


"Локальная root-уязвимость в ядре Linux"
Отправлено pull request , 26-Сен-18 12:22 
# gcc -O0 -o poc-suidbin poc-suidbin.c
# chown root poc-suidbin
# chmod 4555 poc-suidbin

$ gcc -o poc-exploit poc-exploit.c
$ time ./poc-exploit

ну и рутом ты после этого все равно не станешь. это только POC, который показывает, что можно переписать LD_LIBRARY_PATH. а дальше уж сам.


"Локальная root-уязвимость в ядре Linux"
Отправлено Аноним , 26-Сен-18 12:59 
Тоесть эксплоит возможен только с рутом?
Сначала выставляешь от рута set-uid бит, а затем эксплуатируешь. Или я что-то недопонимаю...

"Локальная root-уязвимость в ядре Linux"
Отправлено pull request , 26-Сен-18 13:39 
Читаем тут: https://seclists.org/oss-sec/2018/q3/274
>As a result, ld.so partly overwrites (i.e., rewrites) our "onebyte"
>environment variables with the fname[] buffer in handle_ld_preload()
>(whose contents we control through our LD_PRELOAD environment variable)
>and thereby nullifies process_envvars()'s filtering of UNSECURE_ENVVARS
>(LD_AUDIT, LD_LIBRARY_PATH, LD_PRELOAD, etc). The exploitation of this
>lack of UNSECURE_ENVVARS filtering in ld.so (via a suitable SUID-root
>binary) is left as an exercise for the interested reader.

Короче, надо найти подходящий suid бинарь в системе. А в POC он тебе уже предоставлен.


"Локальная root-уязвимость в ядре Linux"
Отправлено Аноним , 26-Сен-18 13:53 
Есть утилиты в системе с уже установленным SUID. Например, ping.

"Локальная root-уязвимость в ядре Linux"
Отправлено Anonymouss , 26-Сен-18 17:21 
Это в каких системах?
stat /bin/ping
  File: '/bin/ping'
  Size: 66176           Blocks: 136        IO Block: 4096   regular file
Device: fc00h/64512d    Inode: 33799631    Links: 1
Access: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-09-25 11:35:24.036354277 -0400
Modify: 2017-08-02 14:11:53.000000000 -0400
Change: 2017-08-14 09:17:09.936638043 -0400
Birth: -  


"Локальная root-уязвимость в ядре Linux"
Отправлено Stax , 26-Сен-18 21:32 
Ну возьмите at, chfn/chsh, crontab, su, mount/umount или десятки других. Замена в пинге сьюда на capabilities никак не убирает остальные suid-бинарники.

"Локальная root-уязвимость в ядре Linux"
Отправлено Аноним , 27-Сен-18 02:17 
Что за наф?! Это заем бы mount'у быть suid? Чтобы всякие левые рожи могли все перемонтировать как им удобно и систему поизящнее ломануть?

"Локальная root-уязвимость в ядре Linux"
Отправлено Аноним , 26-Сен-18 13:22 
Вывод: бежим на другое ядро, например

>http://www.project-trident.org/download/

Trident-BETA3-x64!!!


"Локальная root-уязвимость в ядре Linux"
Отправлено Аноним , 26-Сен-18 13:58 
Нет уж, к бздунам вы сами бегите.

PS А это "x64" лишний раз почёркивает почитание бздунами Windows.


"Локальная root-уязвимость в ядре Linux"
Отправлено ryoken , 26-Сен-18 14:20 
Дада, ибо правильно пишется - AMD64 :D.

"Локальная root-уязвимость в ядре Linux"
Отправлено Аноним , 26-Сен-18 15:12 
> Нет уж, к бздунам вы сами бегите.

Это родственники Дениски Попова.

> PS А это "x64" лишний раз почёркивает почитание бздунами Windows.

Смотрите дети, классические двойные стандарты лап4атых -- это вот так:

https://www.opennet.me/opennews/art.shtml?num=49321
> 23.09.2018 08:52  Проект WLinux развивает Linux-дистрибутив, нацеленный на использование в Windows

https://www.opennet.me/opennews/art.shtml?num=45869
> 17.01.2017 12:18  Для запуска в Windows доступны окружения SUSE и openSUSE

https://www.opennet.me/opennews/art.shtml?num=45151
> 15.09.2016 08:49  Arch Linux адаптирован для запуска в Windows


"Локальная root-уязвимость в ядре Linux"
Отправлено Аноним , 26-Сен-18 15:23 
> Вывод: бежим на другое ядро, например
> http://www.project-trident.org/download/
> What is Project Trident?
> Project Trident is a desktop-focused operating system based on TrueOS. It
> uses the Lumina desktop as well as a number of self-developed utilities to
> provide an easy-to-use system that both BSD beginners and advanced system
> administrators can feel comfortable running 24⁄7.

Отличное описание (да-да, цитированно полностью) из которого все становится понятно! (сарказм)
Чем оно отличается от Ъ-ОСи (которая после перехода на CURRENT, ZFS и выкидывания PBI стала совсем уж на любителя) и зачем вообще нужен еще один клон?


"Локальная root-уязвимость в ядре Linux"
Отправлено Аноним , 27-Сен-18 02:21 
>  Вывод: бежим на другое ядро, например

Расчет на эффект неуловимого джо, чтоли? Linux то статическими анализаторами, фуззерами и кучей тестов пообвесили - и стали находить странные сценарии, когда в полнолуние високосного года даже палка оказывается стреляет. А в этом другом ядре хоть 10% от этих тестов? Или все дружно здят про мнимое качество кода, не подкрепляя это ничем кроме здежа?


"Локальная root-уязвимость в ядре Linux"
Отправлено Аноним , 27-Сен-18 12:26 
> А в этом другом ядре хоть 10% от этих тестов?

Да откуда? Никто там об этом, как обычно у бздюков и прочих бесперепрончатых, не слышал. Разве что самую малость что-то там обезъянничают:
https://scan.coverity.com/projects/freebsd
> On Coverity Scan since    Feb 28, 2013
> Last build analyzed    2 days ago

find /usr/src|grep -c test  
11326



"Локальная root-уязвимость в ядре Linux"
Отправлено ryoken , 26-Сен-18 14:20 
Я так понимаю, что в атакуемый сервант надо вкрутить памяти более 32Гб, а потом его пинать, да? :)

"Локальная root-уязвимость в ядре Linux"
Отправлено Виталик , 26-Сен-18 15:54 
Мажоры должны страдать.

"Локальная root-уязвимость в ядре Linux"
Отправлено Аноним , 26-Сен-18 15:04 
Имеющих более 32 Гб ОЗУ. расходимся.

"Локальная root-уязвимость в ядре Linux"
Отправлено ыы , 26-Сен-18 15:31 
Никто и не сомневался .. что новость не для активных участников форума... :)

"Локальная root-уязвимость в ядре Linux"
Отправлено гг , 27-Сен-18 09:28 
Ну у меня с дюжину серваков с 200 Гб ОЗУ. Парочка даже просто лежит пыль копит.

"Локальная root-уязвимость в ядре Linux"
Отправлено Аноним , 29-Сен-18 14:38 
Может, поднимешь на них OpenDNS, SearX или ещё что-нибудь такое? Люди поблагодарят хотя бы.

"Локальная root-уязвимость в ядре Linux"
Отправлено Michael Shigorin , 01-Окт-18 13:15 
> Может, поднимешь на них OpenDNS, SearX или ещё что-нибудь такое?

Пыльные, очевидно, в запасе и работать сейчас не должны.


"Локальная root-уязвимость в ядре Linux"
Отправлено Аноним , 26-Сен-18 15:26 
Локальная уязвимость, я так понимаю, что можно проcто пройтись по серваку молотком, чем запихивать в него 32 гектара и взламать?

"Локальная root-уязвимость в ядре Linux"
Отправлено ыы , 26-Сен-18 15:39 
Лет 20 назад... подобные вопли можно было бы еще понять...но сейчас... ныть из - за 32 гигов оперативки.. домашние компы столько имеют...

"Локальная root-уязвимость в ядре Linux"
Отправлено КО , 26-Сен-18 15:50 
32 свободных. Т.е. надо где-то 48. Ну и голую операционку. А вот зачем взламывать такой комп?

"Локальная root-уязвимость в ядре Linux"
Отправлено КО , 26-Сен-18 15:51 
С другой стороны, если swap в zram, то надо немного меньше. :)

"Локальная root-уязвимость в ядре Linux"
Отправлено лютый лютик__ , 27-Сен-18 07:57 
>сейчас... ныть из - за 32 гигов оперативки

После массового психоза канализации^Wвиртуализации... сколько сейчас не нарезанных на мелкие виртуалки/контейнеры осталось жирных серверов?

Они, есно, есть. Но полагаю, что это вменяемые люди и у них не хостинг.

Итого, риск от сей дыры на самом деле незначительный.


"Локальная root-уязвимость в ядре Linux"
Отправлено agent , 26-Сен-18 16:46 
Плохо понимаешь. Имеется ввиду, что нужен локальный пользователь

"Локальная root-уязвимость в ядре Linux"
Отправлено Аноним , 26-Сен-18 16:55 
можно взломать сервер виртуального хостинга, например.

"Локальная root-уязвимость в ядре Linux"
Отправлено Аноним , 26-Сен-18 18:07 
И каким волшебным образом ты попадёшь на ноду?

"Локальная root-уязвимость в ядре Linux"
Отправлено ананим231 , 26-Сен-18 21:06 
через дырявый вротпресс

"Локальная root-уязвимость в ядре Linux"
Отправлено scorry , 01-Окт-18 02:12 
Ubuntu 12 уже не поддерживается. Скажите им кто-нибудь, пожалуйста.

"Локальная root-уязвимость в ядре Linux"
Отправлено Michael Shigorin , 01-Окт-18 13:14 
Как отметил наш майнтейнер основного ядра,
Сommit ff6f95dcf55d34def126a3c7aae3080af66eada7
Author: Dmitry V. Levin <ldv@altlinux>
Date:   Tue May 30 15:37:59 2017 +0000

    get_arg_page: limit argv+env strings size for suid/sgid binaries

достаточно, чтобы эта дырка в альтовых бранчах была закрыта.

https://lists.altlinux.org/pipermail/sisyphus/2018-October/3...