LINUX.ORG.RU

Как перехватить сигнал дочернего процесса не используя ptrace?

 , , , ,


0

1

Передо мной стоит задача: Ловить сигнал SIGXCPU потомка, который запускает мой процесс, я для этого использовал ptrace, однако столкнулся с проблемой: При выполнении execve вместе с ptrace capabilities дочернего процесса обнуляются. А они ему тоже нужны.

Вот мой пост с описанием проблемы: Проблема с capabilities и exec (комментарий)

Как всё таки перехватить SIGXCPU потомка так, чтобы ничего не ломалось?


Скорее всего никак. Суть в том же: у него повышенные привилегии, а ты хочешь извне как-то подменить часть его работы (обработку сигнала). Что, теоретически, может использоваться для какого-нить эксплойта. Допиши в потомка обработку этого сигнала и чтоб он родителя сам оповещал об этом.

Ну либо родителя запускай как рута, но это испортит твои планы на безопасность я так понимаю.

firkax ★★★★★
()
Ответ на: комментарий от OlegUP

я про это

Допиши в потомка обработку этого сигнала и чтоб он родителя сам оповещал об этом.

либо в родителе жди waitpid + WIFSIGNALED + WTERMSIG

anonymous2 ★★★★★
()
Последнее исправление: anonymous2 (всего исправлений: 1)

Догуглился + дочитался исходников до такой вещи как LSM (Linux Security Modules Framework)

Есть прога, которая с ним работает, и судя по документации можно настраивать поведение ядра в политике безопасности через хуки)

Вот пример из программы lsmtrace: https://github.com/lumontec/lsmtrace/tree/master

SEC("lsm/bprm_creds_from_file")
int BPF_PROG(bprm_creds_from_file, struct linux_binprm *bprm, struct file *file)
{
	FILTER_CATHEGORY_INT(PROG_EXEC_CATH)
	FILTER_OWN_PID_INT()
	DUMP_FUNC(bprm_creds_from_file, struct linux_binprm *bprm, struct file *file)

	DUMP_LINUX_BINPRM_STRUCT(bprm)
	DUMP_FILE_STRUCT(file)

	bpf_printk("lsm_hook: exec: bprm_creds_from_file\n");
	return 0;
}

Пока копаю в эту сторону, видимо этот хук и нужен.

Что можете сказать по этому поводу?

OlegUP
() автор топика
Ответ на: комментарий от seiken

Было бы так просто, врядли начальство одобрит вшивать эти модули в ядро, а по другому нельзя.

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

OlegUP
() автор топика
Последнее исправление: OlegUP (всего исправлений: 2)