[devel] Q: пора разрешать privileged executables явно на уровне дистрибутивов?

Aleksei Nikiforov darktemplar на altlinux.org
Чт Янв 13 10:23:00 MSK 2022


13.01.2022 09:48, Vladimir D. Seleznev пишет:
> On Thu, Jan 13, 2022 at 09:07:45AM +0300, Sergei Epiphanov wrote:
>>
>>
>> Gleb Fotengauer-Malinovskiy <glebfm на altlinux.org> 13 января 2022 г.
>> 01:18:29 написал:
>>
>>> Hi,
>>>
>>> On Thu, Jan 13, 2022 at 12:51:28AM +0300, Sergei Epiphanov wrote:
>>>>
>>>> "Dmitry V. Levin" <ldv на altlinux.org> 12 января 2022 г. 20:10:13 написал:
>>>>
>>>>> On Wed, Jan 12, 2022 at 04:34:06AM +0000, QA Team Robot wrote:
>>>>>> 2 NEW bugs
>>>>> [...]
>>>>>> #41695 libgtop         normal   ---
>>>>>> Содержит suid-бинарник
>>>>>
>>>>> Я думаю, есть смысл, чтобы ядро за этим следило.
>>>>> Загружаешь ему список разрешённых privileged executables,
>>>>> все остальные запрещены.
>>>>
>>>> Мне это не очень нравится.
>>>> Во-первых, suid можно заменить на запуск через sudo или su.
>>>
>>> И это всяко лучше, чем использование непроверенных suid-ных программ, а
>>> задача состоит именно в ограничении вреда от них.
>>
>> Здесь как раз и проблема. Пример я уже привёл. Приходится ставить на
>> команду выполнение sudo без пароля, что позволяет пользователю самому
>> рулить программой через sudo.
> 
> Так идея не в том, чтобы не позволять пользователю рулить системой
> (совсем даже наоборот).
> 
> Если вы ставите команду на выполнение через sudo без пароля, вы это
> делаете явно, и явно запускаете команду.
> 
> Проблема же произвольных suid-бинарников в том, что при правах доступа
> не строже 4xx1 (*) любой пользователь может её запустить (в т.ч.
> злонамеренный или скомпрометированный), тем самым повысив себе
> привилегии.  И даже если процесс сэндбоксится, сбрасывает привилегии,
> всё-равно есть возможность пытаться сколь угодно долго (*) выполнить
> произвольный код в привилегированном окружении до наступления успеха,
> при этом эксплуатируемая ошибка не обязательно должна быть при этом
> именно в запускаемом суидном бинарнике.
> 
> Но в любом случае решение, как управлять системой остаётся за
> пользователем в зависимости от его модели угроз.
> 
> * В одном проекте была реализована функциональность, запрещающая на
> некоторое время запускать suid-ные команды пользователю, у которого
> анормально завершил работу setuid'ный процесс.
> 
> P.S. Re: sudo: why not?
> https://www.openwall.com/lists/owl-users/2004/10/20/6
> 

Здравствуйте.

Могу ещё предложить whitelist на уровне пакетного менеджера. При 
установке или обновлении пакета, если в нём есть suid/sgid файлы, 
сравнивать их с разрешённым списком в пакетном менеджере, и если этот 
файл в списке отсутствует, то suid/sgid снимать. Также можно при этом 
проверять что этот файл из определённого пакета, а в пакетном менеджере 
включать/выключать эту фичу. Такой список будет более гибким чем в 
сборочнице, а в сравнении с ядром - зависит от реализаций.

С уважением,
Алексей Никифоров


Подробная информация о списке рассылки Devel