LINUX.ORG.RU

Уязвимость в Linux-драйвере exFAT, позволяющая поднять привилегии в системе

 , , , ,


2

2

В поставляемом в ядре Linux драйвере для файловой системы exFAT выявлена уязвимость (CVE-2023-4273), позволяющая при монтировании специально оформленного раздела (например, при подключении вредоносного USB Flash) добиться переполнения стека и выполнения своего кода с правами ядра. Проблема устранена в выпусках ядра Linux 6.4.10, 6.1.45, 5.15.25, 5.10.90, 5.4.253, 4.19.291, 4.14.324 и 6.5-rc5. Проследить за исправлением в дистрибутивах можно на следующих страницах: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.

Отсутствие проверки размера при копировании имени файла в буфер, размещённый в стеке, приводит к переполнению стека ядра в случае задания очень длинного имени файла, превышающего ограничение ФС в 255 символов. Уязвимость присутствует в функции exfat_get_uniname_from_ext_entry, выполняющей реконструкцию длинных имён через цикличное чтение записей с частями имени файла из индекса каталога и слияния полученных частей имени в итоговое длинное имя. Проверка размера в коде exfat_get_uniname_from_ext_entry выполнялась в привязке к каждой записи с частью имени, но не охватывала итоговое имя (например, имя можно разбить на 100 частей и добиться записи в буфер 1500 символов вместо 258).

Выявивший уязвимость исследователь смог подготовить прототип эксплоита, который позволяет повысить свои привилегии в системе. При тестировании в виртуальном машине VirtualBox эксплоит срабатывает в 100% случаев, но при запуске в обычном окружении, работающим поверх оборудования, вероятность срабатывания снижается до примерно 50%. Уязвимость также может быть использована для компрометации ядер, загружаемых в режиме UEFI Secure Boot.

>>> Подробности (opennet.ru)

★★

Проверено: hobbit ()
Последнее исправление: Dimez (всего исправлений: 2)

hobbit, считаю новости про безопасность нужно публиковать все (включая opennet) и как можно скорее.

zx_gamer ★★
() автор топика

Я правильно понял что это баг нашли раньше 2023-08-09, в Fedora 38 его закрыли 2023-08-14, а в текущем Debian 12 он до сих пор не закрыт ?

P.S. Вроде его описали 2023-07-10.

mx__ ★★★★★
()
Последнее исправление: mx__ (всего исправлений: 1)

поднять приведении в системе

приведении

theNamelessOne ★★★★★
()

приведении

Привидения же! А они с моторчиком?

pekmop1024 ★★★★★
()

Что с ЛОРом, почему этого ещё никто не запостил? Ладно, буду первым:

Решето!


Проблема устранена в выпусках ядра Linux 6.4.10, 6.1.45, 5.15.25, 5.10.90, 5.4.253, 4.19.291, 4.14.324 и 6.5-rc5

Радует, когда узнаёшь об уязвимости, когда давным давно обновился до исправленного ядра, и потом обновился ещё несколько раз.

CrX ★★★
()

В описании cve немного не так:

local privileged attacker could use this flaw to overflow the kernel stack.

Т.е. насколько я понял, у локального пользователя как минимум должны быть привилегии на монтирование.
С другой стороны у локального пользователя с привилегиями на монтирование может быть и монтировка, против которой баг «ядру бо-бо» открыт в большинстве установок 🥴

rukez ★★★★
()

sd-шкой зарутировать смартфон получится?

superuser ★★★★★
()
Последнее исправление: superuser (всего исправлений: 1)
Ответ на: комментарий от rukez

С другой стороны у локального пользователя с привилегиями на монтирование может быть и монтировка, против которой баг «ядру бо-бо» открыт в большинстве установок

О каком конкретно баге речь?

Как я понимаю, сабжевую уязвимость можно использовать и, например, пользователю, который может юзать udisk2, не обязательно ему быть в sudoers или иметь возможность делать непосредственно mount.

CrX ★★★
()
Ответ на: комментарий от CrX

Cve по ссылке на дебиан в новости.
Там не указано какие конкретно привилегии нужны но это явно не совсем изолированный гость.

А не совсем изолированный гость с доступом к втыканию (даже не монтированию) своих дисков обычно имеет возможность с них же и загрузиться со всеми вытекающими последствиями

rukez ★★★★
()
Ответ на: комментарий от rukez

А не совсем изолированный гость с доступом к втыканию (даже не монтированию) своих дисков обычно имеет возможность с них же и загрузиться со всеми вытекающими последствиями

Да, конечно. Но это всё же не то же самое, что повышение привилегий. Незаметно загрузиться нельзя (тупо сбросится аптайм), а вот незаметно что-то подкрутить в системе, получив права root’а — это другое дело.

Также не особо понятно, можно ли использовать не физический раздел, а ФС в файле. Ничто же не мешает смонтировать с помощью udisk2 файл «образа» ФС. Для этого физический доступ не требуется.

CrX ★★★
()
Последнее исправление: CrX (всего исправлений: 1)

6.5-rc5 - уже не актуально.

mx__ ★★★★★
()

А вот было бы ядро проприетарным - никакой уязвимости бы не было, потому что никто бы не догадался как правильно оформлять раздел, чтобы выполнять свой код ядра. Опенсорц - зло.

windows10 ★★★★★
()
Ответ на: комментарий от mx__

Походу да. Печально что ради бюрократических сроков debian 12 выпустили сильно раньше адекватной релизной даты. В debian 11 пофиксено ещё апстримом давным давно.

firkax ★★★★★
()
Ответ на: комментарий от rukez

Т.е. насколько я понял, у локального пользователя как минимум должны быть привилегии на монтирование.
С другой стороны у локального пользователя с привилегиями на монтирование может быть и монтировка, против которой баг «ядру бо-бо» открыт в большинстве установок 🥴

Думаю основной сценарий использования другой: даёшь кому-то злонамеренную флешку, он её монтирует чтоб взять с неё какие-то файлы, и получает атаку. Права то у него, конечно, есть любые, но вот флешку скрафтил не он и не знает что она с атакой.

firkax ★★★★★
()

РЕШЕТО!

вот то ли дело Windows! CVE-2021-38663 etc. БГГ

из забавного: An information disclosure vulnerability in Windows exFAT File System can be exploited remotely to obtain sensitive information.

mumpster ★★★★★
()
Последнее исправление: mumpster (всего исправлений: 1)
Ответ на: комментарий от windows10

Для опытного взломщика чтение дизассемблированного кода вполне комфортный процесс. С, конечно, проще, но не прям намного.

Поэтому тут совсем не очевидно - что подобную уязвимость не нашли бы, скажем, в винде.

vbr ★★★
()
Ответ на: комментарий от hateWin

Скажи честно, ты дегенерат?

В этом топике обсуждаюсь не я, а уязвимость в Linux-драйвере exFAT, позволяющая поднять привилегии в системе.

windows10 ★★★★★
()
Ответ на: комментарий от sklep100

Такие ошибки фаззерами ищут, коды можно не трогать, всё равно в них мало кто разбирается :)

Да. Но с открытым кодом еще проще.

Злоумышленник открыл, посмотрел, увидел например отсутствие проверки ограничения буфера, попробовал - работает - поделился с пацанами в конфе, запилили малварь который заражает серваки, но работает хрен пойми через что. И вот уже пол-мира трогает больную голову.

windows10 ★★★★★
()
Ответ на: комментарий от Werenter

Слишком жирно

И поэтому верно.

Безопасность через неясность не работает.

Работает. Что в принципе логично.

windows10 ★★★★★
()
Ответ на: комментарий от vbr

Для опытного взломщика чтение дизассемблированного кода вполне комфортный процесс.

Не скажи. Ассемблер каким его видит декомпилер может не содержать тех инструкций которые вызывают сбой.

Вот даже на примере чтения файла в память. В человекочитаемом языке ты увидишь прямую и понятную проверку, на основании чего можешь сделать вывод забагован участок кода, или нет. Не знаю как там точно в С, но типа if (filesize(file)<1000) {fileread(file);}else{exit;} - понятная конструкция, с понятными выводами. Если ты скомпильнешь это в бинарь, а потом дизассемблируешь, ты получишь просто набор mov'ов, ret'ов, int'о, len'ов, msg'ов с рандомными нечеловекочитаемыми названиями, которые тебе придумает декомпилер. Понять в этой каше что речь идет о переменной для чтения файла - ну не знаю даже, надо быть каким-нибудь Архитектором, или Нео накрайняк.

windows10 ★★★★★
()
Ответ на: комментарий от zx_gamer

и как можно скорее

Хочешь ускорить подтверждение новостей — форматируй в маркдауне, его проще править. Ну и в данном случае поспешили — людей насмешили…

hobbit ★★★★★
()
Ответ на: комментарий от Werenter

Безопасность через неясность не работает.

Зато опасность через ясность отлично срабатывает всегда.

BydymTydym
()
Ответ на: комментарий от BydymTydym

А ты поясни - может и перестанут. А то вбросил, а потом «я другое имел ввиду». Это так не работает.

Если ты считаешь, что в закрытом коде меньше ИЗВЕСТНЫХ уязвимостей, потому что их там труднее искать - это вот вообще не аргумент «за». Это как инкубационный период у болезни - рано или поздно дерьмо всё равно всплывет.

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от vbr

Особенно классно читается C++ дизассемблер собранный с оптимизациями. Особенно это относится к библиотекам изобилующим шаблонами и inline. RVO и NRVO тоже добавляют радости.

zx_gamer ★★
() автор топика
Ответ на: комментарий от zx_gamer

Ну уж явно не сложней, чем исходный код с этими вашими шаблонами.

vbr ★★★
()
Ответ на: комментарий от utanho

Как сломать андроид?

он изначально сломан

bo4ok
()
Ответ на: комментарий от Pinkbyte

Если ты считаешь, что в закрытом коде меньше ИЗВЕСТНЫХ уязвимостей, потому что их там труднее искать - это вот вообще не аргумент «за». Это как инкубационный период у болезни - рано или поздно дерьмо всё равно всплывет.

Это как раз аргумент за.

В случае ПО с открытым исходным кодом, уязвимости так же открыты. Не путать с «найдены». Это значит что фактически любой может открыть код, и обладая минимальными навыками чтения кода (на уровне джуниора) понаходить такие уязвимости. А дальше - зависит от мейнтейнеров программы. Где-то рассмотрят, где-то примут патч, где-то разработчик сидит в тюрьме за убийство жены, где-то ответят notabug, где-то попросту не зарепортят а втихаря напишут малварь. При этом будет использоваться точная четкая уязвимость в коде.

В случае ПО с закрытым исходным кодом, уязвимости можно находить только эмпирическим методом, целенаправленно либо же случайно. Да, наверняка в какой-то жопе Винды есть участок ntfs.sys который дает права на запись при создании файла размером 1175 байт на разделе в 11750 мегабайт, но вероятность того что ты создашь такой файл на таком разделе примерно равно нулю, не в ближайшую тысячу лет уж точно.

А дальше работает исключительно закон больших чисел.

windows10 ★★★★★
()
Ответ на: комментарий от windows10

Несомненно закрытый код выигрывает по многим позициям. До тех пор, пока есть тот, кто может вносить в него изменения.

U53R
()
Ответ на: комментарий от U53R

Ха. Так открытость кода - тоже не является гарантией внесения в него изменений.

Вот например сабжевый баг. Окей, уязвимость в Linux-драйвере exFAT. Внесли изменения на гите. Пересобрали репы последних Убунт, последних Центосей, нище-Арчей и прочих.

Осталось это а) вытянуть; б) применить.

Ну ты на десктопе применишь. Я может быть, когда буду в след раз пересобирать ведро. А вот моя мама - нет. Моя магнитола в машине - нет. Рентгеновский аппарат отправляющий снимки по имейлу или ФТП - тоже нет. Десятки тысяч компов работающих до сих пор на Центоси 6 - нет.

Более скажу, даже имея возможность вносить изменения в код у меня на локальном компьютере для протухшего софта - я не буду мониторить интернеты в поисках патчей для него. Я даже для Винды этого не делаю - похачат, проще переснести.

windows10 ★★★★★
()
Последнее исправление: windows10 (всего исправлений: 1)
Ответ на: комментарий от zx_gamer

Мне кажется, что профессионал, кому действительно важны вопросы безопасности, пользуется лором лишь ради развлечения

One ★★★★★
()
Ответ на: комментарий от windows10

Однако, в данном примере, часть устройств все же будут обновлены.

U53R
()
Ответ на: комментарий от windows10

Ну ты на десктопе применишь. Я может быть, когда буду в след раз пересобирать ведро. А вот моя мама - нет. Моя магнитола в машине - нет. Рентгеновский аппарат отправляющий снимки по имейлу или ФТП - тоже нет. Десятки тысяч компов работающих до сих пор на Центоси 6 - нет.

Я тебе больше скажу. Сотни тысяч компов, работающих на вин98, 2к и хп всё также остаются с дырявым RPC. И то, что мелкософт исправит в 11ке, ни сколько не поможет томографу, картплоттеру на старом контейнеровозе, автоматической линии по разливу пивка, и ноутбуку твоей бабушки. Код закрыт, уязвимость все знают, но сделать ничего не могут.

Suigintou ★★★★★
()
Ответ на: комментарий от rukez

Т.е. насколько я понял, у локального пользователя как минимум должны быть привилегии на монтирование.

  • Мисс секретарша, распечатайте мне, плиз, документик вот с этой флешечки?

Вот и все привилегии. Да и вообще, не совсем понятно, как ядро может уберечься от подобных уязвимостей, если оно должно содержать в себе целую помойку драйверов для всех возможных помоечных ФСок, которые только могут оказаться на каком-то внешнем усб-носителе. Мне кажется, тут надо, для начала, сделать так, чтобы внешние накопители бы обслуживались только через fuse. Эскалация привилегий всё ещё возможна будет, но хотя бы уже без эксплойтов ядра.

anonmyous
()
Ответ на: комментарий от vasya_pupkin

Не зря rust в ядро вкорячивают

Не зря fuse пилят. Раст растом, но помойки с драйверами для 100500 различных ФСок для внешних носителей, должны всё же в юзерспейсе быть, имхо.

anonmyous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.