URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 45438
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Изменение UID работающего процесса в Solaris 10"

Отправлено auto_tips , 21-Ноя-08 23:42 
В утилите pcred из комплекта Solaris 10 появилась возможность на лету менять
идентификатор владельца уже запущенного процесса:

   # ps -ef | grep sleep
   vasya 4088 4081 0 09:50:53 pts/11 0:00 sleep 10000000

   # pcred -u 123 4088

   # ps -ef | grep sleep
   kolya 4088 4081 0 09:50:53 pts/11 0:00 sleep 10000000

URL: http://www.unixpin.com/wordpress/2008/11/21/proc-uid/
Обсуждается: http://www.opennet.me/tips/info/1843.shtml


Содержание

Сообщения в этом обсуждении
"Изменение UID работающего процесса в Solaris 10"
Отправлено guest , 21-Ноя-08 23:42 
Зачем?

"Изменение UID работающего процесса в Solaris 10"
Отправлено . , 21-Ноя-08 23:45 
чтобы хаксорам было проще заметать следы

"Изменение UID работающего процесса в Solaris 10"
Отправлено Руслан , 22-Ноя-08 00:34 
Чтобы данные, к которым процесс имеет доступ при запуске, перестали быть доступны процессу во время его работы.

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


"Изменение UID работающего процесса в Solaris 10"
Отправлено ezhik , 22-Ноя-08 03:29 
а процесс сам не может сделать setuid после открытия файла и закрыть его после чтения?

"Изменение UID работающего процесса в Solaris 10"
Отправлено BigAlex , 24-Ноя-08 11:29 
ну это еще программа должна быть правильная.
далеко не все программы правильные...

"Изменение UID работающего процесса в Solaris 10"
Отправлено ezhik , 22-Ноя-08 03:32 
в Linux это через capability реализовано. Достаточно давно.

"Изменение UID работающего процесса в Solaris 10"
Отправлено аноним , 23-Ноя-08 11:23 
А подробнее, как это сделать ?

"Изменение UID работающего процесса в Solaris 10"
Отправлено Анониум , 23-Ноя-08 16:07 
расскажите, интересно же !

"Изменение UID работающего процесса в Solaris 10"
Отправлено vitek , 23-Ноя-08 23:49 
$ man capabilities (или http://linux.die.net/man/7/capabilities )
....
CAP_SETUID
    Allow arbitrary manipulations of process UIDs (setuid(2), setreuid(2), setresuid(2), setfsuid(2)); allow forged UID when passing socket credentials via Unix domain sockets.
.....
по русски здесь же - http://www.opennet.me/man.shtml?topic=capabilities&category=...
...
CAP_SETUID
    Разрешить произвольные манипуляции UID процессов (setuid(2), etc.); разрешить ложные UID при прохождении параметров сокетов через доменные сокеты Unix.

подробнее здесь - http://en.wikipedia.org/wiki/Capability-based_security
p.s.:
к сожалению они так и не стали стандартом POSIX (но в линух реализованы). отсюда имеем эту статью, т.е. "кто в лес, кто по дрова"...

"Изменение UID работающего процесса в Solaris 10"
Отправлено const , 24-Ноя-08 13:24 
Разница с солярисной фичей в том, что линуксовый процесс может менять setuid'ом только свой uid, а в солярисе один процесс может поменять uid другого.

В POSIX нет ничего, что требует прав администратора. И в этом есть определённый смысл. Для таких вещей можно было бы придумать отдельную спецификацию, но они всё же сильно зависимы от ОС...


"Изменение UID работающего процесса в Solaris 10"
Отправлено vitek , 24-Ноя-08 14:46 
>Разница с солярисной фичей в том, что линуксовый процесс может менять setuid'ом только свой uid, а в солярисе один процесс может поменять uid другого.

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


"Изменение UID работающего процесса в Solaris 10"
Отправлено ezhik , 27-Ноя-08 16:02 
вообще писал про это
CAP_SETPCAP
  If  file  capabilities are not supported: grant or remove any capability in the caller's
  permitted capability set to or from any other process.  (This property of CAP_SETPCAP is
  not available when the kernel is configured to support file capabilities, since CAP_SET‐
  PCAP has entirely different semantics for such kernels.)

  If file capabilities are supported: add any capability from the calling thread's  bound‐
  ing  set  to  its inheritable set; drop capabilities from the bounding set (via prctl(2)
  PR_CAPBSET_DROP); make changes to the securebits flags.

Возможно, не совсем реализована. И разница в том, что процесс может дать другому процессу cap_setuid. Только вряд ли сможет контроллировать, на какой UID тот сделает set.


"Раздел полезных советов: Изменение UID работающего процесса ..."
Отправлено User294 , 22-Ноя-08 22:54 
Типа, все на благо хацкера? =)

"Раздел полезных советов: Изменение UID работающего процесса ..."
Отправлено PereresusNeVlezaetBuggy , 23-Ноя-08 17:04 
>Типа, все на благо хацкера? =)

Угу. Осталось только в motd прописать рутовый пароль ;)

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