首页 -> 安全研究
安全研究
安全漏洞
FreeBSD-SA-00:54 fingerd泄漏系统文件
发布日期:2000-10-16
更新日期:2000-10-16
受影响系统:
FreeBSD 4.1.1-RELEASE不受影响系统:
FreeBSD 4.1.1-STABLE (2000-10-05以后版本)描述:
FreeBSD 4.1-RELEASE
FreeBSD 4.0-RELEASE
FreeBSD 3.5.1-RELEASE
FreeBSD 4.1-STABLE
CVE ID : CVE-2000-0915
BUGTRAQ ID : 1803
FreeBSD 4.4.1-RELEASE所带的fingerd增加了一些代码,允许程序将管理员指定的文件
发送给特定的finger请求。然而,这部分代码也导致攻击者可以直接指定文件名发送
finger请求,从而获取该文件内容。
通常finger守护进程是以'nobody'身份运行,因此攻击者不能访问敏感文件,例如
"/etc/master.passwd"等等,但是可以访问任何'nobody'用户有权读取的文件,这可能
泄漏一些系统的内部信息,并为攻击者所利用来进行进一步的攻击。
如果该服务器上运行web服务时也使用'nobody'身份,就可能导致攻击者查看web服务器
的内部web数据,例如web服务器的口令文件,cgi程序的源代码。
<* 来源: NIIMI Satoshi (sa2c@and.or.jp)
FreeBSD Security Advisory: FreeBSD-SA-00:54.fingerd
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
建议:
临时解决方法:
NSFOCUS建议您在没有升级程序之前按照FreeBSD安全公告中的方法去做:
在/etc/inetd.conf中禁止finger服务。
确保该文件中包含finger的行被注释成如下所示:
#finger stream tcp nowait/3/10 nobody /usr/libexec/fingerd fingerd -s
在使用IPv6连接的系统,则应该这样注释:
#finger stream tcp6 nowait/3/10 nobody /usr/libexec/fingerd fingerd -s
解决方法:
您可以采用下列方法中的任意一种:
1) 将您的有问题的FreeBSD系统升级到正确日期后的4.1.1-STABLE版本
2) 使用下面的补丁程序并且重建fingerd二进制程序
您可以保存这则公告到一个文件,或者从下列地址下载补丁以及PGP签名文件,并使用
您的PGP工具来验证签名。
ftp://ftp.freebsd.org/pub/FreeBSD/CERT/patches/SA-00:54/fingerd.patch
ftp://ftp.freebsd.org/pub/FreeBSD/CERT/patches/SA-00:54/fingerd.patch.asc
然后这样操作:
# cd /usr/src/usr.bin/finger
# patch -p < /path/to/patch_or_advisory
# make all install
# cd /usr/src/libexec/fingerd
# make all install
针对4.1.x系统的补丁如下:
Index: finger.c
===================================================================
RCS file: /home/ncvs/src/usr.bin/finger/finger.c,v
retrieving revision 1.15.2.3
retrieving revision 1.21
diff -u -r1.15.2.3 -r1.21
--- finger.c 2000/09/15 21:51:00 1.15.2.3
+++ finger.c 2000/10/05 15:56:13 1.21
@@ -293,6 +293,16 @@
goto net;
/*
+ * Mark any arguments beginning with '/' as invalid so that we
+ * don't accidently confuse them with expansions from finger.conf
+ */
+ for (p = argv, ip = used; *p; ++p, ++ip)
+ if (**p == '/') {
+ *ip = 1;
+ warnx("%s: no such user", *p);
+ }
+
+ /*
* Traverse the finger alias configuration file of the form
* alias:(user|alias), ignoring comment lines beginning '#'.
*/
@@ -323,11 +333,11 @@
* gathering the traditional finger information.
*/
if (mflag)
- for (p = argv; *p; ++p) {
- if (**p != '/' || !show_text("", *p, "")) {
+ for (p = argv, ip = used; *p; ++p, ++ip) {
+ if (**p != '/' || *ip == 1 || !show_text("", *p, "")) {
if (((pw = getpwnam(*p)) != NULL) && !hide(pw))
enter_person(pw);
- else
+ else if (!*ip)
warnx("%s: no such user", *p);
}
}
浏览次数:9058
严重程度:0(网友投票)
绿盟科技给您安全的保障