The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Локальная root-уязвимость в ядре Linux"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Локальная 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.dev/opennews/art.shtml?num=49340

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


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

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Локальная root-уязвимость в ядре Linux"  +/
Сообщение от jeste.space (?), 26-Сен-18, 11:35 
16 млрд по 2 байта? или не работает?
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

7. "Локальная root-уязвимость в ядре Linux"  –1 +/
Сообщение от Нанобот (ok), 26-Сен-18, 11:47 
ну, я исхожу из того, что каждый аргумент - ссылка на строку, соответственно, каждый аргумент потребует как минимум 8 байт (и, если такое предположение изначально неверно, то и расчёт будет некорректным)
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

12. "Локальная root-уязвимость в ядре Linux"  +/
Сообщение от Аноним (12), 26-Сен-18, 12:09 
В C(СИ) массив строк (для exec..) это просто кусок памяти, а разделение в нём - нулевые символы \0
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

16. "Локальная root-уязвимость в ядре Linux"  +/
Сообщение от Нанобот (ok), 26-Сен-18, 12:24 
а, ну тогда всё правильно в новости написано, был неправ
Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

17. "Локальная root-уязвимость в ядре Linux"  +1 +/
Сообщение от Аноним (17), 26-Сен-18, 12:48 
В C как раз argv это массив указателей на строки
Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

21. "Локальная root-уязвимость в ядре Linux"  +/
Сообщение от z (??), 26-Сен-18, 13:41 
процессу передаётся именно одна большая строка, где разделители это \0, crt её потом парсит и устанавливает argv[] для сишных прогамм
Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

30. "Локальная root-уязвимость в ядре Linux"  +/
Сообщение от Аноним (30), 26-Сен-18, 15:03 
Угу, поэтому в _C_ argv — это массив указателей.
Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

48. "Локальная root-уязвимость в ядре Linux"  +1 +/
Сообщение от mickvav (?), 26-Сен-18, 19:37 
Это он в userspace-коде - массив указателей. А в ядре, которое тоже, внезапно, на С - не обязан.
Ответить | Правка | ^ к родителю #30 | Наверх | Cообщить модератору

53. "Локальная root-уязвимость в ядре Linux"  +2 +/
Сообщение от Аноним (-), 27-Сен-18, 02:15 
Паря, до того как твой main() получит управление - в обычной ситуации startup делает довольно много интересного. И есть некоторая разница между стандартом на язык си и тем как ядро по факту создает процесс в конкретной системе и как ему параметры передает.
Ответить | Правка | ^ к родителю #30 | Наверх | Cообщить модератору

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

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

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

Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

22. "Локальная root-уязвимость в ядре Linux"  +/
Сообщение от Orduemail (ok), 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).

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

11. "Локальная root-уязвимость в ядре Linux"  +/
Сообщение от Аноним (11), 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

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

13. "Локальная root-уязвимость в ядре Linux"  +/
Сообщение от анонимец (?), 26-Сен-18, 12:16 
uname -r забыл показать
Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

49. "Локальная root-уязвимость в ядре Linux"  +1 +/
Сообщение от Аноним (49), 26-Сен-18, 20:16 
4.4.0-17134-Microsoft
Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

60. "Локальная root-уязвимость в ядре Linux"  +/
Сообщение от Аноним (60), 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 ставил.

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #60 | Наверх | Cообщить модератору

15. "Локальная 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. а дальше уж сам.

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

18. "Локальная root-уязвимость в ядре Linux"  +/
Сообщение от Аноним (18), 26-Сен-18, 12:59 
Тоесть эксплоит возможен только с рутом?
Сначала выставляешь от рута set-uid бит, а затем эксплуатируешь. Или я что-то недопонимаю...
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

20. "Локальная 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 он тебе уже предоставлен.

Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

23. "Локальная root-уязвимость в ядре Linux"  –1 +/
Сообщение от Аноним (23), 26-Сен-18, 13:53 
Есть утилиты в системе с уже установленным SUID. Например, ping.
Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

45. "Локальная root-уязвимость в ядре Linux"  +/
Сообщение от Anonymoussemail (?), 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: -  

Ответить | Правка | ^ к родителю #23 | Наверх | Cообщить модератору

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

54. "Локальная root-уязвимость в ядре Linux"  –3 +/
Сообщение от Аноним (-), 27-Сен-18, 02:17 
Что за наф?! Это заем бы mount'у быть suid? Чтобы всякие левые рожи могли все перемонтировать как им удобно и систему поизящнее ломануть?
Ответить | Правка | ^ к родителю #51 | Наверх | Cообщить модератору

19. "Локальная root-уязвимость в ядре Linux"  –5 +/
Сообщение от Аноним (19), 26-Сен-18, 13:22 
Вывод: бежим на другое ядро, например

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

Trident-BETA3-x64!!!

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

25. "Локальная root-уязвимость в ядре Linux"  –1 +/
Сообщение от Аноним (23), 26-Сен-18, 13:58 
Нет уж, к бздунам вы сами бегите.

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

Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

27. "Локальная root-уязвимость в ядре Linux"  +/
Сообщение от ryoken (ok), 26-Сен-18, 14:20 
Дада, ибо правильно пишется - AMD64 :D.
Ответить | Правка | ^ к родителю #25 | Наверх | Cообщить модератору

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

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

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

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

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

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

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

Ответить | Правка | ^ к родителю #25 | Наверх | Cообщить модератору

34. "Локальная root-уязвимость в ядре Linux"  +/
Сообщение от Аноним (33), 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 стала совсем уж на любителя) и зачем вообще нужен еще один клон?

Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

64. "Локальная root-уязвимость в ядре Linux"  +2 +/
Сообщение от Аноним (33), 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


Ответить | Правка | ^ к родителю #55 | Наверх | Cообщить модератору

26. "Локальная root-уязвимость в ядре Linux"  +1 +/
Сообщение от ryoken (ok), 26-Сен-18, 14:20 
Я так понимаю, что в атакуемый сервант надо вкрутить памяти более 32Гб, а потом его пинать, да? :)
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

40. "Локальная root-уязвимость в ядре Linux"  +/
Сообщение от Виталик (??), 26-Сен-18, 15:54 
Мажоры должны страдать.
Ответить | Правка | ^ к родителю #26 | Наверх | Cообщить модератору

31. "Локальная root-уязвимость в ядре Linux"  –1 +/
Сообщение от Аноним (31), 26-Сен-18, 15:04 
Имеющих более 32 Гб ОЗУ. расходимся.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

36. "Локальная root-уязвимость в ядре Linux"  +6 +/
Сообщение от ыы (?), 26-Сен-18, 15:31 
Никто и не сомневался .. что новость не для активных участников форума... :)
Ответить | Правка | ^ к родителю #31 | Наверх | Cообщить модератору

59. "Локальная root-уязвимость в ядре Linux"  –1 +/
Сообщение от гг (?), 27-Сен-18, 09:28 
Ну у меня с дюжину серваков с 200 Гб ОЗУ. Парочка даже просто лежит пыль копит.
Ответить | Правка | ^ к родителю #36 | Наверх | Cообщить модератору

66. "Локальная root-уязвимость в ядре Linux"  +/
Сообщение от Анонимemail (66), 29-Сен-18, 14:38 
Может, поднимешь на них OpenDNS, SearX или ещё что-нибудь такое? Люди поблагодарят хотя бы.
Ответить | Правка | ^ к родителю #59 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #66 | Наверх | Cообщить модератору

35. "Локальная root-уязвимость в ядре Linux"  +/
Сообщение от Аноним (35), 26-Сен-18, 15:26 
Локальная уязвимость, я так понимаю, что можно проcто пройтись по серваку молотком, чем запихивать в него 32 гектара и взламать?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

37. "Локальная root-уязвимость в ядре Linux"  +1 +/
Сообщение от ыы (?), 26-Сен-18, 15:39 
Лет 20 назад... подобные вопли можно было бы еще понять...но сейчас... ныть из - за 32 гигов оперативки.. домашние компы столько имеют...
Ответить | Правка | ^ к родителю #35 | Наверх | Cообщить модератору

38. "Локальная root-уязвимость в ядре Linux"  –1 +/
Сообщение от КО (?), 26-Сен-18, 15:50 
32 свободных. Т.е. надо где-то 48. Ну и голую операционку. А вот зачем взламывать такой комп?
Ответить | Правка | ^ к родителю #37 | Наверх | Cообщить модератору

39. "Локальная root-уязвимость в ядре Linux"  +1 +/
Сообщение от КО (?), 26-Сен-18, 15:51 
С другой стороны, если swap в zram, то надо немного меньше. :)
Ответить | Правка | ^ к родителю #38 | Наверх | Cообщить модератору

57. "Локальная root-уязвимость в ядре Linux"  –1 +/
Сообщение от лютый лютик__ (?), 27-Сен-18, 07:57 
>сейчас... ныть из - за 32 гигов оперативки

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

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

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

Ответить | Правка | ^ к родителю #37 | Наверх | Cообщить модератору

42. "Локальная root-уязвимость в ядре Linux"  +/
Сообщение от agent (??), 26-Сен-18, 16:46 
Плохо понимаешь. Имеется ввиду, что нужен локальный пользователь
Ответить | Правка | ^ к родителю #35 | Наверх | Cообщить модератору

43. "Локальная root-уязвимость в ядре Linux"  +/
Сообщение от Аноним (43), 26-Сен-18, 16:55 
можно взломать сервер виртуального хостинга, например.
Ответить | Правка | ^ к родителю #35 | Наверх | Cообщить модератору

47. "Локальная root-уязвимость в ядре Linux"  +/
Сообщение от Аноним (47), 26-Сен-18, 18:07 
И каким волшебным образом ты попадёшь на ноду?
Ответить | Правка | ^ к родителю #43 | Наверх | Cообщить модератору

50. "Локальная root-уязвимость в ядре Linux"  –1 +/
Сообщение от ананим231 (?), 26-Сен-18, 21:06 
через дырявый вротпресс
Ответить | Правка | ^ к родителю #47 | Наверх | Cообщить модератору

67. "Локальная root-уязвимость в ядре Linux"  +/
Сообщение от scorry (ok), 01-Окт-18, 02:12 
Ubuntu 12 уже не поддерживается. Скажите им кто-нибудь, пожалуйста.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

68. "Локальная root-уязвимость в ядре Linux"  +/
Сообщение от Michael Shigorinemail (ok), 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...

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру