Date: Tue, 9 Jul 1996 22:52:40 +0400 (MSD) From: =?KOI8-R?Q?=E1=CE=C4=D2=C5=CA_=FE=C5=D2=CE=CF=D7?= (Andrey A. Chernov) <ache@nagual.ru> To: current@freebsd.org (FreeBSD-current) Cc: security@freebsd.org Subject: It is impossible even for root to make core from [sg]uid process! Message-ID: <199607091852.WAA00325@nagual.ru>
next in thread | raw e-mail | index | archive | help
As subject says, it is impossible even for root to debug
[sg]uid program (especially daemon) without core from it.
Following block from kern_sig.c stops core dump:
/*
* If we are setuid/setgid, or if we've changed uid's in the past,
* we may be holding privileged information. We must not core!
*/
if (pcred->p_svuid != pcred->p_ruid || pcred->p_svgid != pcred->p_rgid)
return (EFAULT);
if (p->p_flag & P_SUGID)
return (EFAULT);
IMHO this code restricts too much: the only case it is needed for is
uid 0 -> user_id transaction. It is NOT needed for user_id -> 0
transaction, because core file can be owned by root in this case
with 0600 permissions.
I want to frame this block:
if (pcred->p_ruid) { /* non-root case */
[block]
} else { /* root case */
euid = 0; /* to make program.core owned by root, 0600 */
}
This fix allows core from most of daemons, because they
usually started by root (ruid == 0).
Any comments?
--
Andrey A. Chernov
<ache@nagual.ru>
http://www.nagual.ru/~ache/
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199607091852.WAA00325>
