Skip to content

[DEV] setuid/setgid executable loading

Created by: MeerkatBoss

Поскольку при загрузке исполняемого файла с выставленным setuid или setgid битом должен обновляться effective user id (EUID) или effective group id (EGID) загруженного процесса, предлагается делегировать загрузку и выставление EUID/EGID файловой системе (в противном случае процессы смогли бы произвольно менять свои привилегии).

Помимо этого, процессы, у которых EUID или saved user id (SUID) не совпадает c real user id (RUID), должны быть недоступны для редактирования через системные вызовы SYS_map_region, SYS_alloc_region, SYS_unmap_region и SYS_set_trapframe для предотвращения подмены исполняемого кода процесса, имеющего повыышенные привилегии. Аналогично следует поступить с процессами имеющими EGID или saved group id (SGID), отличный от real group id (RGID).

Для реализации изменений нужно преобразовать библиотечную функцию spawn в RPC вызов сервера файловой системы.