The OpenNET Project / Index page

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



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

Оглавление

Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot , opennews (??), 08-Июн-22, (0) [смотреть все]

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


100. "Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot "  +15 +/
Сообщение от Аноним (100), 08-Июн-22, 19:00 
> Вообще не понятно, почему что-то вообще должно выполняться на уровне загрузчика?

Это отличный вопрос к знатокам GRUB2. Примерно за тем же зачем ему поддержка PNG, BMP, TGA и прочего. GRUB2 по своим размерам тянет на небольшую ОС.

> Как можно лечить проблему (загрузка вредоносного кода на уровне ядра системы) и создать новую проблему -- загрузка вредоносного кода на уровне загрузчика (и, кстати, UEFI, при определённых обстоятельствах)

Потому что вместо того чтобы заниматься внедрением цифровой подписи кода в Linux истерически применялись попытки обойти это, теми же самыми костылями с shim, лишь бы не внедрять.

Изначальная проблема, которую решает Secure Boot - это проблема специфических вирусов, которые портят загрузчик ОС. Их логика целиком построена на социальной инженерии, дескать, обманутый пользователь запустит код в привилегированном режиме и тем самым испортит себе загрузчик. Аналогично это усложняет написание руткитов, потому что теперь всем этим вирусам нужно обзавестись цифровой подписью и пройти через 7 кругов бюрократического ада, доказывая, что ты не верблюд. По итогам этих изменений в Windows стало очень трудно писать такие вирусы и народ переключился на шифровальщики, работающие целиком в пространстве пользователя, но это уже другая история.

Под Linux таких вирусов нет, потому что там нет пользователя, который попадётся на такие уловки. Нету спроса - нету предложения. Когда ОС пользуется больше 1.3 миллиарда человек, то даже 5% умственно отсталых пользователей (а их больше), жамкающих разрешить себе всё - это, на минуточку, 65 миллионов! Теперь давайте представим себе ботнет таких размеров и поймём почему принимаются те или иные решения.

Логика цифровых подписей начинается с UEFI Secure Boot (не грузить что попало, если пользователь явно не разрешил), продолжается ядром ОС, которое проверяет цифровые подписи всех своих модулей. Пользовательская подсистема проверяет сертификаты всех исполняемых файлов и жалуется на их отсутствие. Файрвол, который определяет зоны, откуда взялся файл и файловая система проставляет любому файлу блокирующие атрибуты, чтобы нельзя было автоматом после скачивания файла из интернета его запустить без дополнительных проверок (хэширование и сличение с базой известных вирусов, проверка цифровых подписей и прочее). Даже текстовые сценарии должны быть подписаны, а если они пытаются обращаться напрямую к объектам ядра и драйверов, то вне зависимости от наличия сертификатов, такая активность считается вредоносной.

Это всё потому что пользователи по природе своей не очень разбираются в ИТ и не обязаны это делать, чтобы лайкать котиков в социальных сетях.

Теперь давайте посмотрим что сделано в Linux. Есть костыль shim, чтобы не подписывать ни ядро, ни драйверы. Подсистема цифровых подписей в ядре, не та новая, которую дописывал MS, портируя свой WHQL, а оригинальная, полагается на хранилища сертификации на файловой в системе, что глупо. И вот если это всё включить,.. но оно выключено по-умолчанию. Про подпись кода и скриптов я вообще ничего не буду говорить, это слишком на стороне DE, а там все озабочены Wayland-танцами уже последние 8 лет. И всё это можно было бы довести до ума, учитывая, что в ядре-то всё есть... Дистрибутивы не пользуются, впрочем подобное много лет назад наблюдалось вокруг cgroups и систем мандатного контроля.

Причем в каждом сообществе найдутся 10 баранов-меинтейнеров, которые дальше make; make install одного пакетика задачи не видели, которые сбегутся и начнут рассуждать, как же это всё никому не нужно. Если же хотя бы 5 из них начнут переписку до приёма прописанных таблеток, то окажется, что это мало того что не нужно, так еще и вредно, потому что злобный MS замышляет козни против Linux, вводя для СВОИХ пользователей PKI на уровне выполнения кода.

Техническая сложность в Linux всего одна: монолитность. В Windows обновления драйверов и целой кучи подсистем идёт отдельно от основного ядра, потому что большая часть драйверов, строго говоря в юзерспейсе. У WinNT действительно маленький Ring 0. Динамическая же часть ядра живёт отдельно. Те драйверы, цифровые подписи и проверки выполняются совершенно другой подсистемой, никак не подпадающей под UEFI и вопросы безопасной ЗАГРУЗКИ. В Linux всё монолитно, поэтому каждое минорное обновление потенциально ненужного на конкретном устройстве модуля должно заменить цифровую подпись всея ядра. И вот чтобы было как в Windows они выделили маленький кусочек отдельно и вот он вам shim.

Ну и вишенка на торте - это поддержка Userspace drivers в Linux: https://www.kernel.org/doc/html/latest/driver-api/uio-howto....
Она есть, просто всё принято тащить в ядро сочиняя себе новые API и ломая старое API, которое там было. Ну и поверх нужно сделать 100500 версий одного и того же ядра на уровне дистрибутивов. Но ладно драйверы... вся сетевая подсистема должна обновляться с ядром, включая файрвол и графика.... И соответственно триггерить смену подписей. Жуткая помойка, которая накопилась из нерешенных проблем с размерами монолитной кодовой базы. Молодежь уже даже не понимает, что такие вещи как kmod и dkms это адские костыли, которые прикрывают архитектурные проблемы фиговым листочком.

> Кстати, никто не знает, почему запускаемый код называют "неверифицированным", а не вредоносным? Если вирус подписать, то проблема исчезает?

Код которые не прошел проверку подлинности не обязательно вредоносный. Вредоносность - это качественное суждение гуманитарной подсистемы (антивирус, например, делит всё на хорошее и плохое). Неверифицированность - это технический вопрос того, была ли произведена проверка цифровой подписи или код был запущен в обход проверки. И даже если свой вирус подпишите, но потом запустите в обход проверки цифровых подписей его всё равно нужно расценивать как неверифицированный.

Ну и последнее, PKI - это не безопасность, а номенклатурные отношения доверия. PKI в этом случае отвечает на вопрос, является ли код доверенным или нет, и кто гарантирует вам это доверие. Любая безопасность строится не на концепции абсолютной защиты (её нет), а на том, что нужно как можно дольше тянуть время и как можно громче сообщать, параллельно вставляя палки в колёса атакующему коду. Бюрократическая неповоротливость PKI замечательно показала себя по вопросам усложнения жизни тем кто хочет запустить недоверенный код, вот её и используют.

P.S. Я вообще не понимаю, почему в GRUB не впилят поддержку MP3, очень не хватает слушать музло во время просмотра любимой картинки во время ожидания загрузки пункта меню. Народу явно больше зайдёт чем нормальная поддержка верификации кода на уровне ОС.

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

107. "Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot "  +3 +/
Сообщение от microsoft (?), 08-Июн-22, 19:28 
> пользователь явно не разрешил

Пользователя ни о чем не спрашивают. Его ставят перед фактом, и заставляют жрать че дали. А он и рад хрустеть да чавкать.

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

116. "Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot "  +1 +/
Сообщение от Аноним (116), 08-Июн-22, 21:14 
Благодарю, Аноним-100. Почитал лекцию с интересом. Скрывать не буду: что-то во мне дрогнуло.
Ответить | Правка | К родителю #100 | Наверх | Cообщить модератору

128. "Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot "  +/
Сообщение от Аноним (128), 08-Июн-22, 23:33 
> Потому что вместо того чтобы заниматься внедрением цифровой подписи кода в Linux истерически применялись попытки обойти это, теми же самыми костылями с shim, лишь бы не внедрять.

Потому что в том виде как оно сделано в UEFI оно нах не нужно!!! Это не безопасность, а дерьмо какое-то, навязанное доверие Microsoft и еще кому-то. Вместо того, чтобы дать ПРОСТОЙ способ самостоятельно подписать свою систему СВОИМИ ключами. В принципе есть возможность удалить предустановленные ключи в UEFI и прописать свои, но во-первых, не на всех устройствах получится, во вторых, практическая реализация достаточно сложная, чтобы мало, кто стал связываться. Еще и с большим риском окирпичиться.

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

130. "Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot "  +3 +/
Сообщение от Аноним (100), 09-Июн-22, 01:03 
> Это не безопасность, а дерьмо какое-то, навязанное доверие Microsoft и еще кому-то.

PKI это вообще не безопасность, а инфраструктура открытого ключа. Задача такой инфраструктуры определить гарантов и субъекты. Гарантом выступает некое физическое или юридическое ЛИЦО, некоммерческая организация итп (корневой сертификат). Им предоставлена возможность уполномочить некоторое техническое подразделение, занимающееся выдачей и отзывом (промежуточный сертификат) сертификатов конечных субъектов. Это простая двухступенчатая PKI. Бывает и трёхступенчатая с двумя промежуточными звеньями и более, но такие PKI не публичные, они имеют отношение либо к государствам, либо к крупным корпорациям в которых есть вышестоящее подразделение, удостоверяющее нижестоящее. С учетом наличия объектов сертификации, политик назначения и возможности кросс-подписи проверка доверия в общем случае - это ориентированный граф, а не просто дерево.

Задача PKI - удостоверять, подписывать и показывать доверие. Это не про безопасность, а про автоматизацию бюрократии. Если человек тебе представляется Васей, а ты ему не веришь, то ты можешь спросить его паспорт или другое удостоверение. Паспорт на имя Иванова Василия Петровича, который он тебе показал выдан не просто кем попало, а Отделением УФМС России по городу Крыжополю Мухосранской области в Кислодрищенском районе. Сделав официальный запрос, ты можешь убедиться в неподдельности этого паспорта. А если ты не веришь в полномочия того, кто выдал этот паспорт, ты можешь уточнить соответствующий подзаконный акт учреждающий соответствующее отделение. Также можно проверить полномочия назначения уполномоченного лица, подписавшего акт и законность существования паспортного стола. И так вплоть до Конституции.

Является ли бюрократия гарантией безопасности? Сама по себе не является. Но на основании PKI (не ниже двух ступеней) можно построить такие отношения доверия, которые могут быть частью общей системы безопасности. Гарант доверия предоставляет корневой сертификат, который по определению самоподписанный. Доверие держится не на техническом вопросе, а на том, какие репутационные риски понесёт реальное юридическое лицо в случае компрометации цепочки доверия.

Первично, кто кому доверяет в вопросах UEFI решает не Microsoft, а каждый конкретный производитель материнской платы. Именно производители принимают решения, какие корневые сертификаты по-умолчанию будут предустановлены в UEFI. Содержать промежуточные центры сертификации - это большая ответственность. Сольётесь - вас ждёт судьба COMODO, которое было вынуждено переименоваться в Sectigo, там идёт реальная потеря денег в том числе по страховым возмещениям. Публичная международная PKI это еще и страхование.

Да, есть несколько моделей материнских плат, в которых у пользователя нет возможности редактировать хранилище доверенных корневых сертификатов. Это обычно какие-то специфичные модели железа, которые предполагается что вы либо будете использовать так как хочет их производитель, либо попросту откажетесь покупать (лучше второе). Но это единицы... Сам по себе Secure Boot отключаемый, а UEFI вовсе умеет работать в DUAL-режиме за исключением парочки ноутбуков.

> Вместо того, чтобы дать ПРОСТОЙ способ самостоятельно подписать свою систему СВОИМИ ключами.

Ох ты ж запросы у вас барские. А кто же, я стесняюсь спросить, вам такое ПРОСТО предоставит. Linux?
Вся эта вонь вокруг Secure Boot происходит потому что вшивые комитеты вроде Linux Foundation, когда суть дошла до дела отказались предоставить своё лицо в качестве гаранта отношений доверия. Они не подняли свой центр сертификации и не начали выдавать дистрибутивам Linux подписи и уж тем более не пошли разговаривать с производителями железа по вопросам включения и с Microsoft по вопросам кросс-подписей.
Причин две:
1) Деньги. Содержать центр сертификации - это нужно поставить инфраструктуру и наладить рабочие процессы, занять людей. А еще нужно договариваться, а не шашками махать на лекциях перед студентами рассказывая о степенях свободы GPL.
2) Лицо. Им нужно рисковать и отвечать, за провалы. Нужно нести ответственность, что уже достаточно тяжело учитывая весь зоопарк^W плюрализм мнений в Linux сообществе.
Их позиция была проста: Слышь, Microsoft, ты себе хочешь запилить цифровые подписи. Запили и нам нахаляву иначе мы на тебя в антимонопольные комитеты подадим, а мы при этом не будем ничего делать. MS посчитал риски вздохнул и запилил центр сертификации для бомжей.

Вдумайтесь! Об этом почему-то мало кто говорит, но знаете ли вы загрузка Windows и остальные ОС, которые заверяет Microsoft имеют разные цепочки доверия? С точки зрения PKI это логично, потому что уровни доверия разные. Одна подконтрольна целиком, а вторая делегирована безответственным ни за что не отвечающим сообществам. В случае компрометации всей цепочки связанной с Linux отзыв корневых сертификатов не вызовет проблемы при загрузке Windows. И вопреки самым алармистским параноикам, MS не грохнул никому ничего. Ну и конечно же нельзя заподозрить MS в излишней благородности и любви к Linux. Всё это не бесплатно, там не только рекет с антимонопольными угрозами от бездельников, там еще и Red Hat и другие вендоры Linux с MS договорились и платят, потому что посчитали, что содержать собственные ЦС и договариваться со всеми вендорами PC-железа включая консьюмерское, мягко говоря, им не выгодно. А сообщество Linux... ну оно вообще живёт в астрале, когда дело касается договороспособности.

Ну и конечно же вы хотите, чтобы вам предоставили инструменты для Linux, которые позволят вам построить свою PKI и подписать всё и вся начиная от Secure Boot и заканчивая распоследним драйвером бесплатно без смс на высокой скорости... Этих инструментов не было много лет, пока MS не начал использовать Linux для виртуальных коммутаторов в Azure. Они их написали для Linux и теперь они есть. И недостающие модули ядра есть, но юзерспейсных частей нет. А Red Hat, который первично занимался внедрением поддержки Secure Boot много лет назад, чуть ли не поддержку PE (portable executable) пытался тащить в ядро, лишь бы сделать совместимым с Windows, потому что они деньги экономили и не хотели отвечать за очередные результаты голосований в Debian и прочий цирк. Закономерно, что "предложения" Red Hat были во многом выкинуты в помойку Торвальдсом лично в виду технической убогости.

В итоге:
1. Разрешено ли вам грузить собственные ключи или нет - это вопрос разработчика оборудования, а не MS. Не покупайте бяку, потому что залоченные UEFI не только Linux не дают поставить, там и Windows не обновляется, вообще-то.
2. Способ подписать код ОС - это вопрос того кто занимается подготовкой дистрибутива. Возьмите и подпишите. И соберите еще модули ядра, которые держат ключи на уровне ядра и умеют работать с TPM.
3. Просто с PKI никогда не будет. Её цель - максимально всё усложнить, чтобы абы кто со стороны не смог вклиниться в доверие.

И пожалуйста, не путайте "навязанное доверие Microsoft" с оптимизацией корпоративных затрат и рисков Red Hat, которая отказалась тянуть за всех лямку и бесполезностью Linux Foundation, которая в вопросах представительства и сертификации прикинулась ветошью.

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

132. "Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot "  +/
Сообщение от penetrator (?), 09-Июн-22, 04:16 
А зачем нам такая ущербная схема?
Ответить | Правка | Наверх | Cообщить модератору

140. "Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot "  +/
Сообщение от n00by (ok), 09-Июн-22, 09:45 
> И вопреки самым алармистским параноикам, MS не грохнул никому ничего.

Не надо категоричных заявлений, они портят общую картину. Вот эта HIPS  http://www.online-solutions.ru/products/osss-security-suite.... находила много всего, включая руткит, который Микрософт пришлось ловить совместно с сэрами мэйорами. В том числе и несанкционированные обновления ОС, от которых ныне стонет пользователь, могла считать подозрительной активностью и блокировать.

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

138. "Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot "  +/
Сообщение от n00by (ok), 09-Июн-22, 09:36 
> Вместо того, чтобы дать ПРОСТОЙ способ самостоятельно подписать
> свою систему СВОИМИ ключами.

Прекратите орать. Почитайте умную книжку. Там пишут, как самостоятельно подписать.

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

166. "Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot "  +/
Сообщение от Аноним (-), 09-Июн-22, 16:03 
Может там еще пишут как отключить бутгада и сделать СВОЙ root of trust а не майкрософто-интеловский? И даже прошивку ME подписать своим ключом дадут? Без всего этого секурити всей этой схемы около ноля.
Ответить | Правка | Наверх | Cообщить модератору

173. "Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot "  +/
Сообщение от n00by (ok), 09-Июн-22, 19:02 
Это надо детскую сказку "Теремок" почитать. Что бы научиться не так заметно увеличивать запросы.
Ответить | Правка | Наверх | Cообщить модератору

184. "Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot "  +/
Сообщение от Аноним (-), 09-Июн-22, 23:32 
> Это надо детскую сказку "Теремок" почитать. Что бы научиться не так заметно
> увеличивать запросы.

Система которая служит своему владельцу и делает что обещано а не кучу других непрошенных вещей не такое уж и большое желание. Особенно за свои деньги.

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

196. "Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot "  +/
Сообщение от n00by (ok), 10-Июн-22, 09:02 
Мой комментарий оставлен по поводу совсем другого желания. Подписать ядро можно.
Ответить | Правка | Наверх | Cообщить модератору

129. "Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot "  +2 +/
Сообщение от tty0 (?), 09-Июн-22, 00:02 
Т.е, чтобы решить проблему имбицилов и им сочувствующим, я должен подписывать все модели ядра после сборки? Сторонними средствами и чужими ключами?
Бред сумашедшего.
UEFI - решение чрезвычайно узкоспециализированное и нужно только ИНДИВИДУАЛЬНЫМ пользователям Windows с ROOT правами.
Для всего остальных - это какое-то извращение.
Ответить | Правка | К родителю #100 | Наверх | Cообщить модератору

131. "Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot "  +1 +/
Сообщение от Аноним (100), 09-Июн-22, 01:46 
> Т.е, чтобы решить проблему имбицилов и им сочувствующим, я должен подписывать все модели ядра после сборки? Сторонними средствами и чужими ключами?

Или купить оборудование, которое позволяет грузить свои ключи в прошивку. Или на заводе сделать своё оборудованием с PKI и ключиками.

> UEFI - решение чрезвычайно узкоспециализированное и нужно только ИНДИВИДУАЛЬНЫМ пользователям Windows с ROOT правами.

Аналог пользователя root в Windows - это Local System он может входить в систему только специальную сессию 0 для служб и пакетных заданий. У Windows есть разделение типов входов в систему, а не PAM, который всё считает локальным входом. В некоторые дистрибутивы это частично утащили, запрещая логиниться рутом, но тоже костыльно. Словарный пользователь Administrator с заранее известным идентификатором безопасности там выключен по умолчанию и оставлен для обратной совместимости. Каждый "локальный администратор" - это по сути то что в UNIX исторически называется колесом (wheel).

UEFI - это стандарт прошивок, применяемых в современных материнских платах. Оно не только про загрузку ОС, там еще есть устройства. Не надо путать UEFI и Secure Boot. Многим устройствам периферии требуется процедура первичной инициализации, у них есть какой-то ROM и код который надо выполнить. Формат прошивки периферического устройства для BIOS и для EFI разный. Вообще, вы видимо мало железа видели или вам сильно повезло в жизни, и вы попросту не знаете, что процедуры инициализации периферии в BIOS и ранних версиях EFI не стандартизированы от слова СОВСЕМ и отличаются между разными производителями мат. плат и серверных платформ. UEFI позволяет унифицировать BIOS и EFI как стандарт для всех вендоров железа предоставляет универсальный инструментарий. Инициализация устройств становится как минимум предсказуемой.

Для того чтобы, например сетевая карта работала в UEFI нужны 2 прошивки старая для BIOS и новая для UEFI. Для видеокарт тоже нужен UEFI-драйвер, который в старых видеокартах может вообще отсутствовать. Можно сколько угодно изолироваться в танке и жить старым железом и загружаться через BIOS, пока не встретится какой-нибудь ПЗУ-контроллер у которого BIOS-прошивка старая и грузится натурально 10 минут а UEFI, работает нормально. Кроме того есть контроллер NVMe. Удачи вам там ЗАГРУЗИТЬСЯ с NVMe диска в режиме BIOS/MBR. Это не с каждым прокатит. Для m.2 SSD оно еще сработает. Вендоры мат. плат предлагают стоковую прошивку, которая эмулирует вам SATA/AHCI для этого порта и уронит производительность IO, но оно хоть загрузится и будет работать. Если же у вас настоящий NVMe современного образца в PCI-Express, вас ждёт провал, причем старые PCI-Express SSD диски, наоборот, будут работать в BIOS но спустя столько лет найти живой такой можно только в музее.

Если же вы при всем этом хотите использовать этот NVMe как кэш для большого SATA-диска (и поставить на него ОС) или у вас сервер, который будет использовать NVMe для размещения данных и потом вам это нужно в сеть раздавать и на сетевке у вас RDMA... удачи вам там с BIOS.

А вообще, автомобиль ведь это тоже узкоспециализированное средство передвижения, которое нужно только индивидуальным пользователям, то ли дело упряжки с лошадьми...

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

134. "Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot "  +/
Сообщение от Аноним (134), 09-Июн-22, 07:30 
А чё там у вендоров с "договороспособностью"? Чё они столько лет "ветошью прикидывались", а, в итоге, свалили проблему с себя на других?
Ответить | Правка | Наверх | Cообщить модератору

141. "Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot "  +/
Сообщение от _hide_ (ok), 09-Июн-22, 10:00 
> Аналог пользователя root в Windows - это Local System

Т.е. пользователь с правами администратора может поднять права до Local System и изменить код в загрузчике. А зачем столько слов? Чтобы запутать?

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

151. "Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot "  +/
Сообщение от Аноним (100), 09-Июн-22, 12:35 
Потому что там всё на самом деле запутано.

Для начала вам нужно быть понять, что существуют типы входа в систему (типы сессий). И процессы не конвертируются между ними и не могут получить доступ друг к другу без RPC ну или как минимум порта/сокета.
Этого всего нету в unix-подобных ОС, там PAM вместо аутентификации, который выдаёт одни и те же права удаленному пользователю, интерактивному пользователю, демонам и слыхом не слыхивал про Kerberos. PAM-у пофиг, его проектировали в 80-е годы и тащат до сих пор.

Интерактивная сессия в WinNT никогда не превращается в служебную. Если у вас есть пользователь MYWINPC\vasya от лица которого вы вошли в систему и вот решили запустить службу от лица пользователя MYWINPC\vasya, предоставив этой учетной записи соответствующие привилегии, которых у нее по умолчанию не было, то в этом случае службы запущенные от лица Васи и процессы запущенные Васей окажутся физически в разных сессиях.

Суть в том, что вы не обратитесь к такому процессу напрямую.

Local System - это пользователь, который может запускать что бы то ни было только в специальной сессии и только аутентифицировавшись как служба или пакетное задание. Интерактивный пользователь не станет службой.
Лучшее что может сделать интерактивный пользователь - это получить права на создание специально оформленного пакетного задания (нужно как минимум интерактивное повышение привилегий), которое он может поставить в планировщик и выполнить от лица Local System. Еще раз, напрямую не из какой оболочки вы не получите эти права, это не su и тем более не sudo.

Дальше, когда вы создали пакетное задание, которое что-то делает и запустили его от имени Local System, это не значит что у процесса, который вы запустили есть все необходимые привилегии в дескрипторе безопасности, для того чтобы выполнять нужный вам код. Банально, чтобы сменить владельца файла на ФС, в неинтерактивном режиме ваш процесс должен обладать правами, дающими ему возможность выдать самому себе привилегию на смену владельцев (SeTakeOwnershipPrivilege). Для того чтобы выдать себе эти привилегии, вам нужно обратиться не куда-нибудь, а к юзерспейсной части ядра, в частности, к библиотеке advapi32.dll. И вот на этом этапе вас ждут сюрпризы, потому что по-умолчанию ни один сценарий никакой оболочки не может к ней обратиться, блочат все возможные антивирусы включая Defender. Чтобы это обойти вам нужно написать собственное приложение, которое будет обращаться к ядру и что-то там себе повышать.

То есть вы запускаете уже не то что команду в оболочке, не то что скрипт в планировщике, а приложение .NET, дабы скрыть вызовы P/Invoke к этой библиотеке ядра. Ну вот вы после этого что-то там можете выполнить, но не всё. Даже для доступа к хранилищу ключей, вам нужно выдать себе отладочные привилегии (если нету ни виртуализации, ни TPM, если они есть, то всё вообще грустно). Без предварительной настройки своей сессии вы их себе по-тихому не дадите. Орать и вопить будет всё вплоть до ватермарков на картинке рабочего стола.

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

P.S. Чтобы окончательно не "путать" вас я умышленно писал только про обычные службы (по сути как демоны) и не упоминаю ни про фоновые процессы магазина ни про специально оформленные user-services, запускаемые как экземпляры внутри интерактивной сессии, с еще более низкими привилегиями от лица других SID, с пониженными профилями энергопотребления и сразу в swap-е... А вообще давайте так, сядьте и получите права Local System из оболочки напрямую, без всяких слов и путаницы, отпишитесь об успехах, может я узнаю что-то новое =)

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

155. "Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot "  +/
Сообщение от n00by (ok), 09-Июн-22, 14:26 
> Для того чтобы выдать себе эти привилегии, вам нужно обратиться не
> куда-нибудь, а к юзерспейсной части ядра, в частности, к библиотеке advapi32.dll.

Начали во здравие, а завернули невесть куда. advapi32.dll - это не ядро. Это часть подсистемы Win32 (как и kernel32.dll). Ядро это ntoskrnl.exe, и вот что там выполняется не в arbitrary thread context, а в выделенном потоке - это почти всегда аналог root. В просторечии это называется "драйвер". Что бы затруднить эксплуатацию уязвимостей в сервисах режима ядра и прочих привилегированных компонентах системы и ввели подпись загрузчика - якобы атакующий, даже попав в ядро, закрепиться в системе не сможет.

> А вообще
> давайте так, сядьте и получите права Local System из оболочки напрямую,
> без всяких слов и путаницы, отпишитесь об успехах, может я узнаю
> что-то новое =)

Note: some anti-virus scanners report that one or more of the tools are infected with a "remote admin" virus. None of the PsTools contain viruses, but they have been used by viruses, which is why they trigger virus notifications.
https://docs.microsoft.com/en-us/sysinternals/downloads/psexec

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

171. "Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot "  +/
Сообщение от Аноним (100), 09-Июн-22, 17:41 
> Это часть подсистемы Win32 (как и kernel32.dll)

А Win32 это часть подсистемы чего? Гриба? Яблока? Табуретки? В Windows ядро не монолитное и часть подсистем вынесена в юзерспейс, часть в Ring 0, а Win32 API между ними единое. А "сервисы режима ядра" тогда что? Это мелкие вопросы терминологии. Гораздо важнее, что тот, кому я отвечал предполагает, что получить полного рута и подменить загрузчик в Windows можно просто волшебной командой, а не специально написанным приложением, которое само по себе должно быть заверено сертификатами и одобрено антивирусными комитетами, и его код для инжекта должен быть заверенным.

Ну и приводить в пример старое доброе psexec человеку, который в общих чертах описывает как реализовать схожую утилиту на лету, с объяснением почему нельзя просто так взять и захватить права без написания такой утилиты, это, как минимум, странно. Я у него спрашивал про то как права захватить скриптом из оболочки с использованием стандартных средств при помощи простого текстового сценария в оболочке, не отхватив от антивирусов и всего остального... Отвечая на свой вопрос, можно, например, запустить PowerShell в котором в отдельном потоке запустить задание планировщика, перехватывая вывод в основную сессию, и выполнить там скрипт, который объявляет самописный динамически компилируемый тип на С#, который маршалит P/Invoke и выдаёт своему процессу все нужные привилегии. Но ни до цифровых подписей драйверов, ни до загрузчика там в общем случае не добраться. На практике, было бы желание, но массовости у такого решения не будет.

Так-то в теории ничего не мешает маршалить всё Win32 напрямую из PowerShell, вот только это требует отключения кучи всего антивирусного, чтобы оно прекратило вопить. И драйверы можно подсунуть какие попало, если отключить Secure Boot и запустить ядро с опцией отключающей цифровые подписи драйверов. Причем антивирусы блокируют сейчас любое такое обращение без разбора, в том числе невесть откуда на лету скачанные psexec.

Если у вас есть решение проще, милости прошу, рассказывайте.

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

175. "Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot "  +/
Сообщение от n00by (ok), 09-Июн-22, 19:41 
>> Это часть подсистемы Win32 (как и kernel32.dll)
> А Win32 это часть подсистемы чего? Гриба? Яблока? Табуретки?

Ну я даже и не знаю, что тут можно сказать. Раньше это был такой термин от производителя ОС, который не вызывал удивления у тамошних специалистов.
Попробуйте написать фидбэк Микрософту https://docs.microsoft.com/en-us/windows-hardware/drivers/dd...

> В Windows ядро не монолитное

Ну да. Это значит, что часть ядра оформлено в виде загружаемых в пространство ядра модулей формата PE/COFF.

> и часть подсистем вынесена в юзерспейс, часть в Ring
> 0, а Win32 API между ними единое.

Каких подсистем? Вышеупомянутой Win32 и опциональной со времён NT4 Posix subsystem https://en.wikipedia.org/wiki/Microsoft_POSIX_subsystem
которую сменили на WSL? Это не части ядра.

> А "сервисы режима ядра" тогда что?

Это сервисы, созданные с флагами SERVICE_KERNEL_DRIVER или SERVICE_FILE_SYSTEM_DRIVER
https://docs.microsoft.com/en-us/windows/win32/api/winsvc/nf...

> Это мелкие вопросы терминологии.

Это вопросы понимания, в каких адресных пространствах и с какими правами исполняется код. В данном случае под правами понимаются кольца защиты.

> Гораздо важнее, что тот, кому
> я отвечал предполагает, что получить полного рута и подменить загрузчик в
> Windows можно просто волшебной командой, а не специально написанным приложением, которое
> само по себе должно быть заверено сертификатами и одобрено антивирусными комитетами,
> и его код для инжекта должен быть заверенным.

Он написал, что ответ слишком объёмен и сложен для восприятия. Я добавил, что местами он вносит терминологическую путаницу. Достаточно указать худший сценарий - код не важно как попал в ядро и хочет закрепиться в системе, подменив загрузчик -  так называемый "буткит". Вот от них и защищает SecureBoot, как заявляет Микрософт.

> Ну и приводить в пример старое доброе psexec человеку, который в общих
> чертах описывает как реализовать схожую утилиту на лету, с объяснением почему
> нельзя просто так взять и захватить права без написания такой утилиты,
> это, как минимум, странно.

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

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

136. "Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot "  +3 +/
Сообщение от bergentroll (ok), 09-Июн-22, 08:41 
Всё вы классно написали. Непонятно только, что хорошего за «доверием» ходить на поклон к «батюшке»-Майкрософту™.
Ответить | Правка | К родителю #100 | Наверх | Cообщить модератору

146. "Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot "  +2 +/
Сообщение от Аноним (-), 09-Июн-22, 10:53 
> за «доверием» ходить на поклон к «батюшке»

Так это основной принцип бюрократии, про который он не написал.

Чтобы цепочка доверия хоть что-то гарантировала нужно найти "доверенные" концы: начиная от "доверенного" железа, на котором проверяется доверие, до заранее записанных "доверенных" сертификатов.
Это достигается тупым вендорлок'ом: железо и софт только от "доверенного" поставщика (например, продукция от apple и прочих андроид-телефонов [хотя андроид - это тоже франкештейн с гуглом]).
В случае с uefi secure boot такой вендорлок не пропустили. Получился франкенштейн, когда поставщик железа прописывает чужие корневые сертификаты. В итоге никто ни за что не отвечает, потому что не может.

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

139. "Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot "  +/
Сообщение от Аноним (-), 09-Июн-22, 09:43 
> Secure Boot
> Ну и последнее, PKI - это не безопасность, а номенклатурные отношения доверия.

Как обычно, подмена понятий.

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

143. "Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot "  +/
Сообщение от Аноним (-), 09-Июн-22, 10:16 
> Под Linux таких вирусов нет, потому что там нет пользователя

Андроид - это linux?

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

167. "Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot "  +/
Сообщение от Аноним (-), 09-Июн-22, 16:05 
Дерьмовенький и специфичный, да. А что, под него именно вирусы бывают? Не путать с троянами и иной малварью, вирус должен самораспостряняться, на андроиде с этим неудобно.
Ответить | Правка | Наверх | Cообщить модератору

169. "Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot "  +/
Сообщение от Аноним (-), 09-Июн-22, 16:20 
> А что, под него именно вирусы бывают?

Не ко мне вопрос, что подразумевается под "таким вирусом".

Мой вопрос был: есть пользователи linux (android - linux?), и как следствие, есть ли "такие вирусы" для linux?

> вирус должен самораспостряняться

(Само)распространение кастомных прошивок со взломанными загрузчиками - это вирус?

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

185. "Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot "  +/
Сообщение от Аноним (-), 09-Июн-22, 23:44 
> (Само)распространение кастомных прошивок со взломанными загрузчиками - это вирус?

Наверное сойдет за вирус. А оно такое вообще бывает? Там так то довольно много вещей которые могут пойти не так и это сложно сделать незаметно и без действий юзера. Это кто-то вообще делал? Или это чисто теоретически? Если вдруг это у кого получится, положите на гитхабчик, посмотреть на то как оно вообще работает избегая многих веселых факапов системного уровня :)

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

163. "Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot "  +/
Сообщение от Аноним (-), 09-Июн-22, 15:34 
> GRUB2 по своим размерам тянет на небольшую ОС.

UEFI тоже тянет на это. И?

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

170. "Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot "  +/
Сообщение от Аноним (-), 09-Июн-22, 16:29 
>> Это отличный вопрос к знатокам GRUB2. Примерно за тем же зачем ему поддержка PNG, BMP, TGA и прочего. GRUB2 по своим размерам тянет на небольшую ОС.
> UEFI тоже тянет на это. И?

В uefi-прошивке есть "поддержка PNG, BMP, TGA и прочего"?

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

186. "Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot "  +/
Сообщение от Аноним (-), 09-Июн-22, 23:48 
> В uefi-прошивке есть "поддержка PNG, BMP, TGA и прочего"?

Зависит от UEFI прошивки. В некоторые даже флешер встроен, не то что PNG. Более того - как GRUB может догружать модули (вон то оформлено модулями) так и EFI может догружать внешние программы. Хуже, оно может runtime-сервисы и дрова железа подпихивать свои. Оставаясь частично in charge даже после того как ядро запустилось. GRUB в этом плане не такой зловредный сам по себе. В режиме эмуляции EFI он даже умеет runtime services по минимуму вывешивать, но то ж опенсорсный код и мало, а не 16-метровый блобина фирмвари мамки где черти что и с боку бантик, но вы можете расколупать эту блоботу и посмотреть что оно там умеет...

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

197. "Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot "  +/
Сообщение от Аноним (-), 10-Июн-22, 09:52 
Ну, вот, я же говорил во всем опенсорсный grub виноват, а не любимые оффтопщикам доверенные блобы, подписанные доверенными сертификатами, выданные доверенными компаниями.
Ответить | Правка | Наверх | Cообщить модератору

182. "Уязвимости в GRUB2, позволяющих обойти UEFI Secure Boot "  +/
Сообщение от Аноним (182), 09-Июн-22, 20:44 
Посоветуй систему изоляции для приложений пользовательского пространства для linux?
Ответить | Правка | К родителю #100 | Наверх | Cообщить модератору

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

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




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

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