The OpenNET Project / Index page

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



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

Оглавление

Уязвимость в Glibc ld.so, позволяющая получить права root в системе, opennews (??), 04-Окт-23, (0) [смотреть все]

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


120. "Уязвимость в Glibc ld.so, позволяющая получить права root в ..."  +/
Сообщение от Аноним (120), 04-Окт-23, 22:28 
> Решается эта проблема так:

Получается Windows. Но ведь она давно уже есть, зачем изобретать велосипед?

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

128. "Уязвимость в Glibc ld.so, позволяющая получить права root в ..."  +3 +/
Сообщение от Аноним (115), 05-Окт-23, 12:18 
Во-первых не просто Windows, а именно Windows NT.
Внутри Windows есть огромное количество невменяемого наследия DOS/Windows9x даже в современных версиях, которое мешает ей жить и создаёт тонну дырок в безопасности. Понимаете ли в чем дело... Всё что я писал в своем предыдущем длинном посте не распространяется на legacy-компоненты, и это страшная дыра. Просто вдумайтесь (!!!), Spooler - это legacy-компонент из Win9x. Еще раз прочитайте медленно и ужаснитесь: "Вся подсистема печати Windows - наследие DOS/Windows 9x". И она дырявая, потому что предпечатный рендеринг шрифтов GDI-принтера делается модулем ядра GDI (тот самый win32k.sys с его синими экранами), а пользователи могут при подключении к сетевому принтеру по SMB загрузить и установить драйвер (драйвер, Карл!) с внешнего компьютера в обход проверок от лица пользователя с пониженными привилегиями. А я напоминаю, что всякий RICOH и Kyocera не стесняются в кастомизации рендеринга шрифтов и ставят WDM-драйвер уровня ядра, который подменяет стандартную логику работы GDI конкретно с их железками.
А еще в Windows настолько страшный Virtual Filesystem (VFS-драйвер), что на нем стоит мораторий на любые изменения в коде. Оно еле-еле работает, потому что с одной стороны оно предполагает, что всё должно быть в UCS-2 (даже не в UTF-16), но при этом должна быть обратная совместимость с 8.3 именованием каталогов и файлов и не только в формате ANSI CP-****, а именно в тех самых IBM-кодировка типа CP866 или CP478. VFS Windows работает настолько плохо, что в общем случае для рекурсивного удаления каталога даже через современный PowerShell требуется целый скрипт учитывающий все legacy-штуки, особенно оформленные ReparsePoint-объекты и очень сбоку прикрученные туда ACE/ACL, потому что изначально-то в DOS всего этого не было. И я еще не начал про SMB1, NetBIOS и прочее наследие IBM, которое застряло в Windows NT ради обратной совместимости, не только с Win9x, но и с OS/2. И это лишь пара примеров...
Короче, вам это всё не надо. Вдумайтесь, Microsoft десятилетиями медленно пытается херить эти подсистемы, но там реализация всей этой архитектуры мягко говоря слабоватая. Legacy Windows - это рак, она больна и её десятилетиями лечат вырезая метастазы:
- Разделить службы (демоны) от пользовательских процессов (Windows Vista)
- Администратор больше не равен по правам Системе. LOCAL SYSTEM = root в Windows. (Windows Vista)
- Понизить в правах планировщик задач и сами задачи сделать подконтрольнее (Windows Vista)
- Добавить возможность запускать процессы пользователя с пониженными привилегиями относительно прав самого пользователя (Windows 8)
- Научить подсистему безопасности тому, что служба может быть запущена с привилегиями ниже пользовательских и не иметь возможности ни работать вне пользовательской сессии, ни к другим пользователям не лезть (Windows 10)
Сейчас их безопасники на конференциях в очередной раз поднимают вопросы:
1) Как отобрать у всех админов, чтобы пользователи могли работать без страданий, но при этом в ограниченных сессиях.
2) Пересмотреть реализацию Capabilities в ядре так, чтобы пользователь мог контролировать к каким устройствам запущенное им приложение имеет доступ, а к каким он запретил
3) Как сделать так, чтобы это было не сильно заоверинженирнуто и разработчики этим пользовались, а не пытались обойти.
Поймите, там проблем столько, что иногда проще переписать с нуля. Они же так уже делали, когда переходили на WinNT.

Во-вторых Windows NT это не 100% оригинальная разработка, а вольная интерпретация архитектуры VMS для x86-чипов. И вот поверх этого всего в сочетании с Win32 народилось много всего.
Просто людям (я живьем таких встречал) почему-то кажется, будто есть только UNIX и ему подобные ОС, а Windows она такая единственная протестная, которая из принципа не следует стандартам POSIX и не любит "UNIX way". На самом же деле она написана архитекторами VMS и продолжает развитие другой линейки ОС.
Ну возьмите лучшие практики оттуда и примените себе... Microsoft же всегда так делал. Сетевой стек у них сначала писала IBM, потом Cisco, потом они его у BSD взяли, параллельно доробатывая свой NDIS и WFP. Протокол RDP они лицензировали у Citrix, а Hyper-V это порт Xen на Windows причем опять самими же авторами. Не вижу никакой проблемы.

> Но ведь она давно уже есть, зачем изобретать велосипед?

Windows очень старый трехколесный велосипед с отваливающимся рулём, но третье колесо вроде бы не нужно, но без него никуда не едет, поэтому мы приделаем еще 1 колесо, для плавности, главное чтобы сидеть было комфортно.
При этом Linux, это велосипед без руля с квадратными колесами и дилдаком вместо седушки, чтобы при каждом прокручивании педалей пользователь получал специфическое удовольствие. А если ему нужно повернуть, то нужно соскочить, переставить велосипед и только потом ехать в другом направлении (это я про маразм вокруг конфигурирование SELinux и ему подобных решений).
На минуточку, SELinux и его контексты это именно то, что реализуется вместо дескрипторов SDDL. А еще он имеет свою собственную эксклюзивную для него реализацию ACE/ACL на уровне ядра. Но всё это бесполезно, потому что по всей ОС раскиданы SUID-утилиты (модель прав из 70-х годов), которые всё это обходят. Что возвращает нас обратно к теме новости.

Ну не хотите как в Windows, ну не надо, но сделайте лучше и закопайте чертов SUID, иначе это никогда не кончится. Это тот самый пример уязвимости by design.

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

130. "Уязвимость в Glibc ld.so, позволяющая получить права root в ..."  +/
Сообщение от Аноним (130), 05-Окт-23, 13:05 
Suid не обходит selinux.
Ответить | Правка | Наверх | Cообщить модератору

131. "Уязвимость в Glibc ld.so, позволяющая получить права root в ..."  +/
Сообщение от Аноним (115), 05-Окт-23, 13:26 
Он не обходит его на этапе работы с контекстом вызываемой утилиты, в том и только в том случае если есть специально оформленное правило в рамках Targeted Policy. Политика мандатного контроля по умолчанию всегда является таргетированной, она не распространяется на ВСЁ, за исключением единичных случаев, когда в рамках корпоративного использования её вменяют на шаблонизированные рабочие станции и сервера.

Он обходит его на этапе запуска. SELinux позволяет существовать возможности неподконтрольного ему поднятия привилегий даже в объявленном и подконтрольном ему контексте.

Ну то есть у вас дыра в заборе и двери в доме нарастапашку. Грабители вынесли абсолютно всё из дома, но в сарай не попали, сарай закрыт на ключ. Как-то так...

Вот есть отличное видео о том как сейчас работает SELinux: https://www.youtube.com/watch?v=fB2b-lTjCQA

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

157. "Уязвимость в Glibc ld.so, позволяющая получить права root в ..."  +/
Сообщение от Аноним (157), 08-Окт-23, 21:13 
> из принципа не следует стандартам POSIX

Жопslashes, case-нетерпимость, буквы устройств, ФС без DAC и стойкое желание всё это насадить всем другим, POSIX-совместимым ОС, а хоть бы и через железных вендоров (см. UEFI), -- не дадут соврать. Из принципа. Чтобы всё, что напишут "Developers, Developers", работало только в Пинде и нигде больше - без переписывания.

> по всей ОС раскиданы SUID-утилиты

systemd монтирует все разделы (включая автоматические) с nosuid, кроме явно определенных админом в /etc/fstab. См. выхлоп findmnt.
Выносим /usr/{bin,lib} в отдельный раздел (или subvolume на Btrfs). Всё остальное монтируем с nosuid. И всё работает. Ничего не сломалось - невероятно!

А в /usr/ файлы попадают только из пакетного менеджера, не минуя пары глаз сопроводителя.

Утилиты, использующие SUID, в современных системах можно по пальцам двух рук пересчитать. Большинство не нужно пользователю в повседневной работе на предварительно настроенной системе.
Для всего остального (обычно пускаемого из-под root) давно используют man 7 capabilities.

Находим все SUID-файлы: `# find /usr -type f -perm /u=s,g=s -printf '%M\t%H/%P\n' 2>/dev/null`
Блокируем их вызов в программах через AppaArmor/SELinux: "audit deny rwklmx /usr/bin/sudo,"

Или запускаем программы изолированно через bwrap/flatpak, где получаем "no new privs" при попытке вызвать SUID-программу.

Linux capabilities также явно разрешаются через MAC и user namespaces.

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

159. "Уязвимость в Glibc ld.so, позволяющая получить права root в ..."  +/
Сообщение от User (??), 10-Окт-23, 09:44 
>> из принципа не следует стандартам POSIX
> Жопslashes, case-нетерпимость, буквы устройств, ФС без DAC и стойкое желание всё это
> насадить всем другим, POSIX-совместимым ОС, а хоть бы и через железных
> вендоров (см. UEFI), -- не дадут соврать. Из принципа. Чтобы всё,
> что напишут "Developers, Developers", работало только в Пинде и нигде больше
> - без переписывания.

Нууу... вы так говорите, будто в этом POSIX in our days есть хоть что-то хорошее - это даже не говоря о том, что на "posix compilance" linux "in general" никогда и не закладывался )

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

160. "Уязвимость в Glibc ld.so, позволяющая получить права root в ..."  +/
Сообщение от Аноним (160), 10-Окт-23, 10:04 
Одна только унификация - на вес золота. Много хорошего, за неимением лучшего.
Ответить | Правка | Наверх | Cообщить модератору

161. "Уязвимость в Glibc ld.so, позволяющая получить права root в ..."  +/
Сообщение от User (??), 10-Окт-23, 10:14 
> Одна только унификация - на вес золота. Много хорошего, за неимением лучшего.

Ну вот кушайте posix acl, не обляпайтесь. Ой, а он !внезапно! не часть POSIX. "У" - унификация! "Г"... каквсигда.

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

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

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




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

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