UNIX系統漏洞及防范措施
7.4 UNIX(telnet ftp finger SSH等)系統漏洞及來源于BSD telnet守護程序的telnetd存在一個邊界檢查錯誤。在處理telnet協議選項的函數中沒有進行有效的邊界檢查,當使用某些選項時,可能發生緩沖區溢出在BSS區,因此攻擊受到一定限制。防范措施
1. 多個Unix系統的telnetd存在緩沖區溢出漏洞
漏洞描述:
來源于BSD telnet守護程序的telnetd存在一個邊界檢查錯誤。在處理telnet協議選項的函數中沒有進行有效的邊界檢查,當使用某些選項時,可能發生緩沖區溢出在BSS區,因此攻擊受到一定限制。由于攻擊者可以控制的字符是有限的而且溢出發生但是發現者報告說至少在某些系統(FreeBSD/BSDI/NetBSD)下攻擊是切實可行的。
防范措施:
關閉Telnet,換用ssh或openssh;另外,也可安裝廠商的補丁,目前FreeBSD為此發布了相應的補丁。
2.多個Unix系統Taylor UUCP 參數處理錯誤漏洞
漏洞描述:
Taylor UUCP 軟件包中的某些組件在處理命令行參數時存在一個安全漏洞,可能導致本地攻擊者獲取uucp用戶或者組權限。問題涉及了uux,uuxqt,uucp程序。對于OpenBSD 2.8系統,攻擊者可以通過覆蓋
/usr//daily的crontab腳本會定期執行這個程序。
對于RedHat 7.0,攻擊者可以創建任意空文件,也可以指定在控制臺登錄時執行的命令。
其他系統也可能受到此問題影響。
測試程序:
zen-parse (zen-parse@gmx.net)提供了如下測試代碼:
(1)創建一個配置文件( /tmp/config.uucp ),允許執行任意命令且允許將文件拷貝到任意uid/gid uucp
有寫權限的目錄;
(2)創建一個包含你想執行的命令的命令文件( /tmp/commands.uucp );
(3)執行下列操作:
$Content$nbsp;THISHOST=`uuname -l`$Content$nbsp;WHEREYOUWANTIT=/var/spool/uucp/${THISHOST}/X./X.${THISHOST}X1337$Content$nbsp;uux ’uucp --config=/tmp/config.uucp /tmp/commands.uucp ’${WHEREYOUWANTIT}
3. UnixWare coredumps 跟隨的符號連接
受影響的系統:UnixWare 7.1
漏洞描述:
用戶可以用coredump數據覆蓋系統文件,存在獲得root權限的可能性。UnixWare的sgid執行文件允許dump core(suid不允許)。通過“計算”將要調用的sgid執行文件的pid,可以從“./core.pid”建立一個符號連接到一個group有寫權限的文件。如果能找出與“./.rhosts”或“/etc/hosts.equiv”的關聯,將會有機會得到root權限。
防范措施:
安裝廠家的補丁程序。
4. UnixWare rtpm安全漏洞
受影響的系統:UnixWare 7.1
漏洞描述:
Unixware 在管理口令數據庫方面與 Linux/BSD/Solaris 等系統有所不同。除了常規的/etc/passwd 和/etc/shadow文件外,Unixware還在/etc/security/ia/master和/etc/security/ia/omaster中保存這些文件的拷貝。這兩個二進制文件以與/etc/passwd 和/etc/shadow 不同的格式存放數據。Unixware C 函數可以訪問這些數據。Unixware系統中某些認證程序,如i2odialog守護程序,就使用這些文件而不使用/etc/shadow文件。
一旦發現了存在可攻擊的sgid sys程序,幾乎就可以完全控制整個系統了。/usr/sbin/rtpm就是一個存在緩沖區溢出(獲取sys組權限)的程序。利用它的漏洞,攻擊者可以從/etc/security/ia/master文件中抓取加密口令,或在/etc/security/tcb/privs文件中插入shell。通過這些方法都不難獲得root權限。
防范措施:
安裝廠家的補丁程序,可以去廠家的主頁下載。
5. UNIX系統的mtr存在潛在安全漏洞
漏洞描述:
由Matt Kimball和Roger Wolff開發的“mtr”程序(0.42以下版本)在除了HPUX外的UNIX系統中存在潛在的安全問題。作者原意是通過調用seteuid(getuid())函數來防止利用mtr或其鏈接庫非法獲得root特權,但由于用戶uid可以通過setuid(0)函數重置為0,攻擊者只需利用在mtr所調用的鏈接庫中尋找到的緩沖區溢出漏洞,就有可能成功獲得root特權。在修補版本中,seteuid()函數被改為setuid()函數,從而清除了這個潛在安全漏洞。大多數的Linux發行版本包含了mtr工具的0.28版本。該版本也存在此漏洞,請向各發行商查詢。
防范措施:
升級到mtr-0.42或以上版本。另一個臨時的解決方法是去掉setuid屬性。TurboLinux 6.0.2以上版本中該漏洞已被修補。
6. UnixWare majordomo 安全漏洞
漏洞描述:
在UnixWare 7.1中缺省附帶的majordomo包中存在一個安全漏洞,允許本地用戶獲得額外的權限。目前已被測試的majordomo版本是1.94.4.majordomo wrapper允許用戶用“owner”的uid和“daemon”的gid來運行/usr/local/majordomo目錄下的程序。wrapper的屬性被設置為:
-rwsr-xr-x 1 root daemon 6464 Jan 4 1999 /usr/local/majordomo/wrapper
但在執行該程序前,wrapper會先setuid()到“owner”,同時setgid()到“daemon”。
/usr/local/majordomo/resend是一個Perl程序,它沒有正確檢查輸入的參數,因而可能導致安全問題。其中的有問題部分的代碼如下:
-snip-# If the first argument is "@filename", read the real arguments# from "filename", and shove them onto the ARGV for later processing# by &Getopts()#if ($ARGV[0] =~ /^\@/) {$fn = shift(@ARGV);$fn =~ s/^@//;open(AV, $fn) || die("open(AV, \"$fn\"): $!\nStopped");-snip-
如果我們的第一個參數以“@”開始,resend 將嘗試用 open()函數打開我們提供的文件名。但是如果文件名個參數是“@|id”,resend就會end的,resend其實是以owner:daemon的身份執行的,所以就可以獲得“owner”用戶和“daemon”組的權限。
防范措施:
廠家已經有安全補丁,可以去廠家頁面下載。
【編輯推薦】