FreeBSD安全公告: libmytinfo库存在缓冲区溢出漏洞
发布日期:2000-05-10
更新日期:2000-05-10
受影响系统:FreeBSD 3.x
不受影响系统:FreeBSD 4.0
描述:
libmytinfo是ncurses的一部分,是文本模式显示用的库文件。
libmytinfo允许用户指定一个termcap文件或者通过TERMCAP变量指定。但它没有正确处理
用户输入数据的长度,导致可能发生缓冲区溢出攻击。如果某些二进制文件使用了
libmytinfo库,并且被设置了setuid/setgid位,就有可能让本地用户提升自己的权限,甚
至是root权限。
<* 来源:FreeBSD-SA-00:17 *>
建议:
删除所有使用libmytinfo库的程序(包括静态联结)的setuid/setgid位。
FreeBSD提供了一个libfind.sh脚本来查找所有使用了libmytinfo库的文件:
1) 可以从下列地址下载'libfind.sh':
ftp://ftp.freebsd.org/pub/FreeBSD/CERT/patches/SA-00:17/libfind.sh
例如使用fetch命令:
# fetch ftp://ftp.freebsd.org/pub/FreeBSD/CERT/patches/SA-00:17/libfind.sh
Receiving libfind.sh (460 bytes): 100%
460 bytes transferred in 0.0 seconds (394.69 Kbytes/s)
#
2) 进行md5校验,并于下列结果比较:
# /sbin/md5 libfind.sh
MD5 (libfind.sh) = 59dceaa76d6440c58471354a10a8fb0b
3) 运行这个脚本来进行检查
# sh libfind.sh /
删除所有检查到的程序的setuid/setgid位
4) 如果不需要这些程序,删除它们
V. Solution
按照下列步骤更新FreeBSD 3.x系统:保存patch到一个文件中,并以root身份
执行下列命令:
cd /usr/src/lib/libmytinfo
patch < /path/to/patch/file
make all
make install
下面就是针对3.x系统的patch文件:
Patches: ftp://ftp.freebsd.org/pub/FreeBSD/CERT/patches/SA-00:17/libmytinfo.patch
内容为:
Index: findterm.c
===================================================================
RCS file: /usr/cvs/src/lib/libmytinfo/Attic/findterm.c,v
retrieving revision 1.3
diff -u -r1.3 findterm.c
--- findterm.c 1997/08/13 01:21:36 1.3
+++ findterm.c 2000/04/25 16:58:19
@@ -242,7 +242,7 @@
} else {
s = path->file;
d = buf;
- while(*s != '\0' && *s != ':')
+ while(*s != '\0' && *s != ':' && d - buf < MAX_LINE - 1)
*d++ = *s++;
*d = '\0';
if (_tmatch(buf, name)) {
@@ -259,7 +259,7 @@
} else {
s = path->file;
d = buf;
- while(*s != '\0' && *s != ',')
+ while(*s != '\0' && *s != ',' && d - buf < MAX_LINE - 1)
*d++ = *s++;
*d = '\0';
if (_tmatch(buf, name)) {
浏览次数:6388
严重程度:0(网友投票)