EFingerD反向解析缓冲溢出漏洞
发布日期:2002-03-06
更新日期:2002-03-07
受影响系统:efingerd efingerd 1.6.1
efingerd efingerd 1.3
- Debian Linux 2.2 IA-32
- Debian Linux 2.2 alpha
- Debian Linux 2.2 powerpc
- Debian Linux 2.2 arm
- Debian Linux 2.2 sparc
- Debian Linux 2.2 68k
- Mandrake Linux 8.1
- Mandrake Linux 8.0
- RedHat Linux 7.2 x86
- RedHat Linux 7.2 ia64
- RedHat Linux 7.1
- RedHat Linux 7.1 sparc
- RedHat Linux 7.1 x86
- RedHat Linux 7.1 alpha
- RedHat Linux 7.0 ia64
- RedHat Linux 7.0
- RedHat Linux 7.0 x86
- RedHat Linux 7.0 alpha
- Slackware Linux 8.0
- Slackware Linux 7.1
- SuSE Linux 7.3 powerpc
- SuSE Linux 7.3 sparc
- SuSE Linux 7.3 i386
- SuSE Linux 7.2
- SuSE Linux 7.2 i386
- SuSE Linux 7.1 powerpc
- SuSE Linux 7.1
- SuSE Linux 7.1 alpha
- SuSE Linux 7.1 sparc
- SuSE Linux 7.1 i386
描述:
BUGTRAQ ID:
4239
CVE(CAN) ID:
CVE-2002-0423
EfingerD是一款免费的开放源代码的finger守护程序,使用在Linux操作系统下。
EfingerD在处理域信息中没有正确的处理,可导致缓冲溢出。
当主机连接到finger守护程序的时候,EfingerD默认从连接主机的IP地址中获取域信息并尝试进行解析,但是,如果主机名字超过100字节以上,就会发生缓冲溢出,可导致堆栈变量被覆盖,包括返回地址信息等,存在以efingerd的权利执行任意代码的可能。
问题存在于如下代码中:
static char *lookup_addr (struct in_addr in)
{
static char addr[100];
struct hostent *he;
if (resolve_addr) {
he = gethostbyaddr ((char *)&in, sizeof(struct
in_addr),AF_INET);
if (he == NULL)
strcpy(addr, inet_ntoa(in));
else
strcpy(addr, he->h_name);
}
else
strcpy (addr, inet_ntoa (in));
return addr;
}
在处理strcpy函数中没有很好的进行边界检查。
<*来源:Spybreak (
spybreak@host.sk)
链接:
http://archives.neohapsis.com/archives/bugtraq/2002-03/0050.html
*>
建议:
临时解决方法:
如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:
* 关闭EfingerD守护程序服务。
* 对EfingerD守护程序进行访问控制,确信只有合法用户能够访问。
厂商补丁:
efingerd
--------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://melkor.dnp.fmph.uniba.sk/~garabik/efingerd.html浏览次数:3102
严重程度:0(网友投票)