CVE-1999-0761
CVSS7.2
发布时间 :2000-09-16 00:00:00
修订时间 :2008-09-09 08:35:21
NMCO    

[原文]Buffer overflow in FreeBSD fts library routines allows local user to modify arbitrary files via the periodic program.


[CNNVD]FreeBSD fts库缓冲区溢出漏洞(CNNVD-200009-001)

        FreeBSD fts库存在缓冲区溢出漏洞。通常本地用户借助周期性的程序修改任意文件。

- CVSS (基础分值)

CVSS分值: 7.2 [严重(HIGH)]
机密性影响: COMPLETE [完全的信息泄露导致所有系统文件暴露]
完整性影响: COMPLETE [系统完整性可被完全破坏]
可用性影响: COMPLETE [可能导致系统完全宕机]
攻击复杂度: LOW [漏洞利用没有访问限制 ]
攻击向量: LOCAL [漏洞利用需要具有物理访问权限或本地帐户]
身份认证: NONE [漏洞利用无需身份认证]

- CPE (受影响的平台与产品)

cpe:/o:freebsd:freebsd:3.1FreeBSD 3.1
cpe:/o:freebsd:freebsd:2.2.6FreeBSD 2.2.6
cpe:/o:freebsd:freebsd:2.1.7.1FreeBSD 2.1.7.1
cpe:/o:freebsd:freebsd:2.2.5FreeBSD 2.2.5
cpe:/o:freebsd:freebsd:3.0FreeBSD 3.0
cpe:/o:freebsd:freebsd:2.2.3FreeBSD 2.2.3
cpe:/o:freebsd:freebsd:2.2.4FreeBSD 2.2.4
cpe:/o:freebsd:freebsd:3.2FreeBSD 3.2
cpe:/o:freebsd:freebsd:2.0FreeBSD 2.0
cpe:/o:freebsd:freebsd:2.0.5FreeBSD 2.0.5
cpe:/o:freebsd:freebsd:2.1.5FreeBSD 2.1.5
cpe:/o:freebsd:freebsd:2.1.0FreeBSD 2.1.0
cpe:/o:freebsd:freebsd:2.2.2FreeBSD 2.2.2
cpe:/o:freebsd:freebsd:1.1.5.1FreeBSD 1.1.5.1
cpe:/o:freebsd:freebsd:2.2.8FreeBSD 2.2.8

- OVAL (用于检测的技术细节)

未找到相关OVAL定义

- 官方数据库链接

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-1999-0761
(官方数据源) MITRE
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-1999-0761
(官方数据源) NVD
http://www.cnnvd.org.cn/vulnerability/show/cv_cnnvdid/CNNVD-200009-001
(官方数据源) CNNVD

- 其它链接及资源

http://www.securityfocus.com/bid/644
(UNKNOWN)  BID  644
http://www.osvdb.org/1074
(UNKNOWN)  OSVDB  1074

- 漏洞信息

FreeBSD fts库缓冲区溢出漏洞
高危 缓冲区溢出
2000-09-16 00:00:00 2005-05-02 00:00:00
本地  
        FreeBSD fts库存在缓冲区溢出漏洞。通常本地用户借助周期性的程序修改任意文件。

- 公告与补丁

        This problem can be worked around via preventing coredumps from the periodic(3) program. However, this is NOT a suggested long term fix. The fts overflow could quite likely be exploited via any number of SUID scripts. The best solution for this is to apply the patch referenced later in this Solution. However, immediate work around information is as follows:
        # mv /usr/sbin/periodic /usr/sbin/periodic.bin
        # cat > /usr/sbin/periodic
         #!/bin/sh
        ulimit -c 0
         /usr/sbin/periodic.bin $*
         ^D
         # chmod 555 /usr/sbin/periodic
        Apply the following patches to libc and do a make world. Please also see the companion advisory FreeBSD-SA-99:04.core.asc in the advisories directory of our ftp site for details on the kernel portions of this fix.
        Index: lib/libc/gen/fts.c
         ===================================================================
         RCS file: /home/imp/FreeBSD/CVS/src/lib/libc/gen/fts.c,v
         retrieving revision 1.10
         retrieving revision 1.11
         diff -u -r1.10 -r1.11
         --- fts.c 1999/08/15 19:21:29 1.10
         +++ fts.c 1999/09/02 07:45:07 1.11
         @@ -963,6 +963,24 @@
         return (sp->fts_path == NULL);
         }
        +static void
         +ADJUST(p, addr)
         + FTSENT *p;
         + void *addr;
         +{
         + if ((p)->fts_accpath >= (p)->fts_path &&
         + (p)->fts_accpath < (p)->fts_path + (p)->fts_pathlen) {
         + if (p->fts_accpath != p->fts_path)
         + errx(1, "fts ADJUST: accpath %p path %p",
         + p->fts_accpath, p->fts_path);
         + if (p->fts_level != 0)
         + errx(1, "fts ADJUST: level %d not 0", p->fts_level);
         + (p)->fts_accpath =
         + (char *)addr + ((p)->fts_accpath - (p)->fts_path);
        + }
         + (p)->fts_path = addr;
         +}
         +
         /*
         * When the path is realloc'd, have to fix all of the pointers in structures
         * already returned.
         @@ -974,18 +992,18 @@
         {
         FTSENT *p;
        -#define ADJUST(p) { - (p)->fts_accpath = - (char *)addr + ((p)->fts_accpath - (p)->fts_path); +#define ADJUST1(p) { + if ((p)->fts_accpath == (p)->fts_path) + (p)->fts_accpath = (addr); (p)->fts_path = addr; }
         /* Adjust the current set of children. */
         for (p = sp->fts_child; p; p = p->fts_link)
         - ADJUST(p);
         + ADJUST(p, addr);
        /* Adjust the rest of the tree. */
         for (p = sp->fts_cur; p->fts_level >= FTS_ROOTLEVEL;) {
         - ADJUST(p);
         ADJUST(p, addr);
         p = p->fts_link ? p->fts_link : p->fts_parent;
         }
         }

- 漏洞信息

1074
FreeBSD fts Library Routine Local Overflow
Local Access Required Input Manipulation
Loss of Integrity
Exploit Public

- 漏洞描述

A local overflow exists in FreeBSD. The fts library function fails to check bounds resulting in a buffer overflow. With a specially crafted request, an attacker can cause perodic() to core dump when running its security checking scripts (or other scripts which traverse trees that can be controlled by users) resulting in a privilege escalation and consequent loss of integrity.

- 时间线

1999-09-15 Unknow
1999-01-01 Unknow

- 解决方案

Upgrade to corrected versions 3.2-STABLE or 3.3-RELEASE or higher, as it has been reported to fix this vulnerability. Also, FreeBSD has released a patch. It is also possible to correct the flaw by implementing the following workaround: disable periodic() core dumps by changing core size to zero. # mv /usr/sbin/periodic /usr/sbin/periodic.bin # cat > /usr/sbin/periodic #!/bin/sh ulimit -c 0 /usr/sbin/periodic.bin $* ^D # chmod 555 /usr/sbin/periodic

- 相关参考

- 漏洞作者

 

 

关于SCAP中文社区

SCAP中文社区是国内第一个以SCAP为主题的中文开放社区。了解更多信息,请查阅[关于本站]

版权声明

CVE/CWE/OVAL均为MITRE公司的注册商标,它们的官方数据源均保存在MITRE公司的相关网站