系统相关
首页 > 系统相关> > linux – 当应用程序设置了SUID时,怎么没有创建核心转储?

linux – 当应用程序设置了SUID时,怎么没有创建核心转储?

作者:互联网

我设置我的环境来创建崩溃所有内容的核心转储,但是当我运行一个程序时,SUID设置在与执行用户不同的用户上时,它不会创建核心转储.任何想法都是为什么会这样?我无法在网络上的任何地方找到它,我认为它是某种安全功能,但我想禁用它…

问题:

$cd /tmp
$cat /etc/security/limits.conf | grep core
*     -     core     unlimited
root  -     core     unlimited

$ls -l ohai
-rwsr-sr-x 1 root root 578988 2011-06-23 23:29 ohai

$./ohai
...
Floating point exception

$sudo -i
# ./ohai
...
Floating point exception (core dumped)
# chmod -s ohai
# exit
$./ohai
...
Floating point exception (core dumped)

编辑:
为了使其尽可能安全,我现在有以下脚本来设置环境:

mkdir -p /var/coredumps/
chown root:adm /var/coredumps/
chmod 772 /var/coredumps/

echo "kernel.core_pattern = /var/coredumps/core.%u.%e.%p" >> /etc/sysctrl.conf
echo "fs.suid_dumpable = 2" >> /etc/sysctl.conf

echo -e "*\t-\tcore\tunlimited" >> /etc/security/limits.conf
echo -e "root\t-\tcore\tunlimited" >> /etc/security/limits.conf

现在剩下要做的就是将ACL添加到/ var / coredumps,这样用户只能添加文件,不会再次修改或读取它们.唯一的缩小是我仍然有chroot的应用程序的问题,需要绑定挂载或类似的东西.

解决方法:

setuid程序的内存可能(甚至可能)包含机密数据.因此核心转储必须只能由root读取.

如果核心转储由root拥有,我没有看到明显的安全漏洞,尽管内核必须小心不要覆盖现有文件.

Linux禁用setxid程序的核心转储.要启用它们,您至少需要执行以下操作(我还没有检查过这是否足够):

>通常通过将fs.suid_dumpable sysctl设置为2来启用setuid核心转储,例如with echo 2> / proc / sys / fs / suid_dumpable. (注意:2,不是1; 1表示“我正在调试整个系统,并希望删除所有安全性”.)
>从该计划中拨打prctl(PR_SET_DUMPABLE, 1).

标签:linux,security,core-dump
来源: https://codeday.me/bug/20190808/1626004.html