安全研究

安全漏洞
PeerCast HandshakeHTTP多个堆溢出漏洞

发布日期:2007-12-17
更新日期:2007-12-20

受影响系统:
Peercast Peercast SVN <= 344
Peercast Peercast <= 0.1217
不受影响系统:
Peercast Peercast SVN 347
Peercast Peercast 0.1218
描述:
BUGTRAQ  ID: 26899
CVE(CAN) ID: CVE-2007-6454

PeerCast是一款简单易用的音频/视频流媒体服务器。

PeerCast的handshakeHTTP函数中存在堆溢出漏洞,允许攻击者用可控的数据填充Servent类中的loginPassword和loginMount缓冲区,远程攻击者可能利用此漏洞控制服务器。

servhs.cpp文件中的漏洞代码如下:

void Servent::handshakeHTTP(HTTP &http, bool isHTTP)
{
    char *in = http.cmdLine;
    ...
    }else if (http.isRequest("SOURCE"))
    {
        if (!isAllowed(ALLOW_BROADCAST))
        ...
            mount = in+strlen(in);
            while (*--mount)
                if (*mount == '/')
                {
                    mount[-1] = 0; // password preceeds
                    break;
                }
            strcpy(loginPassword,in+7);
        ..
        if (mount)
            strcpy(loginMount,mount);
            ...

ALLOW_BROADCAST(peercast.ini中allowBroadcast)是默认启用的。

<*来源:Luigi Auriemma (aluigi@pivx.com
  
  链接:http://aluigi.altervista.org/adv/peercasthof-adv.txt
        http://www.debian.org/security/2007/dsa-1441
        http://security.gentoo.org/glsa/glsa-200801-22.xml
*>

测试方法:

警 告

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

http://aluigi.org/poc/peercasthof.zip

建议:
厂商补丁:

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

补丁下载:
Source archives:

http://security.debian.org/pool/updates/main/p/peercast/peercast_0.1217.toots.20060314-1etch0.dsc
Size/MD5 checksum:      778 153071edd20929f6113345ed9d127853
http://security.debian.org/pool/updates/main/p/peercast/peercast_0.1217.toots.20060314.orig.tar.gz
Size/MD5 checksum:   534016 d9e83aa7e66f4d3b160d7c4c8b2a3a4f
http://security.debian.org/pool/updates/main/p/peercast/peercast_0.1217.toots.20060314-1etch0.diff.gz
Size/MD5 checksum:     6276 2f7264e5f9bdff6eb74cfe6b26496534

Architecture independent packages:

http://security.debian.org/pool/updates/main/p/peercast/peercast-handlers_0.1217.toots.20060314-1etch0_all.deb
Size/MD5 checksum:     6644 8063dd0125fdc41505554387b433fa91

alpha architecture (DEC Alpha)

http://security.debian.org/pool/updates/main/p/peercast/libpeercast0_0.1217.toots.20060314-1etch0_alpha.deb
Size/MD5 checksum:   185238 e6727bfa5734599c9d8598eb35c38b50
http://security.debian.org/pool/updates/main/p/peercast/peercast_0.1217.toots.20060314-1etch0_alpha.deb
Size/MD5 checksum:     2708 e271b1e81f1cddd88c8beb756e1d9ff9
http://security.debian.org/pool/updates/main/p/peercast/libpeercast0-dev_0.1217.toots.20060314-1etch0_alpha.deb
Size/MD5 checksum:   427462 42d67daab29e4e6fb061492530d811d0
http://security.debian.org/pool/updates/main/p/peercast/peercast-servent_0.1217.toots.20060314-1etch0_alpha.deb
Size/MD5 checksum:    50968 d9d1ae47b219b144acde71b19d550cff

amd64 architecture (AMD x86_64 (AMD64))

http://security.debian.org/pool/updates/main/p/peercast/peercast_0.1217.toots.20060314-1etch0_amd64.deb
Size/MD5 checksum:     2710 3f4ed56979f0a071eb32a0b7d06d06ad
http://security.debian.org/pool/updates/main/p/peercast/libpeercast0_0.1217.toots.20060314-1etch0_amd64.deb
Size/MD5 checksum:   171950 b7861763bffb0c495e96e3bb23155e4e
http://security.debian.org/pool/updates/main/p/peercast/libpeercast0-dev_0.1217.toots.20060314-1etch0_amd64.deb
Size/MD5 checksum:   323544 17c96525ac00cbfe172c6dbf78495649
http://security.debian.org/pool/updates/main/p/peercast/peercast-servent_0.1217.toots.20060314-1etch0_amd64.deb
Size/MD5 checksum:    50586 73d27cd6c28cbf5fd6e8bd29645e6e7d

arm architecture (ARM)

http://security.debian.org/pool/updates/main/p/peercast/libpeercast0-dev_0.1217.toots.20060314-1etch0_arm.deb
Size/MD5 checksum:   356696 a520840ed0d8171d835cbaf955cf01f4
http://security.debian.org/pool/updates/main/p/peercast/peercast_0.1217.toots.20060314-1etch0_arm.deb
Size/MD5 checksum:     2718 cad527982f80853a6f863f48f0d6c1e3
http://security.debian.org/pool/updates/main/p/peercast/libpeercast0_0.1217.toots.20060314-1etch0_arm.deb
Size/MD5 checksum:   185540 83855ea3b6d57b2284179e314bcc0701
http://security.debian.org/pool/updates/main/p/peercast/peercast-servent_0.1217.toots.20060314-1etch0_arm.deb
Size/MD5 checksum:    50508 527bfe5a016e4665a24cd8066bb292ab

hppa architecture (HP PA RISC)

http://security.debian.org/pool/updates/main/p/peercast/peercast_0.1217.toots.20060314-1etch0_hppa.deb
Size/MD5 checksum:     2710 2b83cd039358795debe4b94fe2a9e4fc
http://security.debian.org/pool/updates/main/p/peercast/libpeercast0_0.1217.toots.20060314-1etch0_hppa.deb
Size/MD5 checksum:   201640 6cabef5e653b9c811c9324068c25f16e
http://security.debian.org/pool/updates/main/p/peercast/peercast-servent_0.1217.toots.20060314-1etch0_hppa.deb
Size/MD5 checksum:    51278 0b328ad5515c9261657146000431192f
http://security.debian.org/pool/updates/main/p/peercast/libpeercast0-dev_0.1217.toots.20060314-1etch0_hppa.deb
Size/MD5 checksum:   382980 06d696c930e2ec534dd26a8a6558ad47

i386 architecture (Intel ia32)

http://security.debian.org/pool/updates/main/p/peercast/libpeercast0-dev_0.1217.toots.20060314-1etch0_i386.deb
Size/MD5 checksum:   308254 0d33c207b1de65878488f3f39a832243
http://security.debian.org/pool/updates/main/p/peercast/peercast-servent_0.1217.toots.20060314-1etch0_i386.deb
Size/MD5 checksum:    51176 d201c1ca50a5fb38270f1c5cd3cfee97
http://security.debian.org/pool/updates/main/p/peercast/peercast_0.1217.toots.20060314-1etch0_i386.deb
Size/MD5 checksum:     2706 9b9b95ec6b37a303611d78764734a8be
http://security.debian.org/pool/updates/main/p/peercast/libpeercast0_0.1217.toots.20060314-1etch0_i386.deb
Size/MD5 checksum:   165772 0a77112f725d83a8202a18ba16ad6238

ia64 architecture (Intel ia64)

http://security.debian.org/pool/updates/main/p/peercast/peercast-servent_0.1217.toots.20060314-1etch0_ia64.deb
Size/MD5 checksum:    52240 913229fd117819522655e160225877b8
http://security.debian.org/pool/updates/main/p/peercast/libpeercast0_0.1217.toots.20060314-1etch0_ia64.deb
Size/MD5 checksum:   232744 3228a3e865cc928b3e74df54213fb9dc
http://security.debian.org/pool/updates/main/p/peercast/peercast_0.1217.toots.20060314-1etch0_ia64.deb
Size/MD5 checksum:     2710 8afa7cc1cc3eb1fe61baa326eb0715ca
http://security.debian.org/pool/updates/main/p/peercast/libpeercast0-dev_0.1217.toots.20060314-1etch0_ia64.deb
Size/MD5 checksum:   474076 5fb10a674c2e960f3595a0be07ade4ea

mips architecture (MIPS (Big Endian))

http://security.debian.org/pool/updates/main/p/peercast/libpeercast0_0.1217.toots.20060314-1etch0_mips.deb
Size/MD5 checksum:   168382 514a39677a1f1d4fce6ef83ca13c8711
http://security.debian.org/pool/updates/main/p/peercast/peercast_0.1217.toots.20060314-1etch0_mips.deb
Size/MD5 checksum:     2708 fb25aca7da6078e8622761d8e32a867d
http://security.debian.org/pool/updates/main/p/peercast/peercast-servent_0.1217.toots.20060314-1etch0_mips.deb
Size/MD5 checksum:    50758 b120d0b15034f776f22c0283dfe1f4a6
http://security.debian.org/pool/updates/main/p/peercast/libpeercast0-dev_0.1217.toots.20060314-1etch0_mips.deb
Size/MD5 checksum:   352124 b56cd6d28151d2739292e986be16b541

mipsel architecture (MIPS (Little Endian))

http://security.debian.org/pool/updates/main/p/peercast/peercast_0.1217.toots.20060314-1etch0_mipsel.deb
Size/MD5 checksum:     2708 0fb6f26b672798c5297847800c0072e9
http://security.debian.org/pool/updates/main/p/peercast/peercast-servent_0.1217.toots.20060314-1etch0_mipsel.deb
Size/MD5 checksum:    50690 54c8d18ac6b806ca1c446f2db0c5551c
http://security.debian.org/pool/updates/main/p/peercast/libpeercast0_0.1217.toots.20060314-1etch0_mipsel.deb
Size/MD5 checksum:   165618 7d05fa186e619746c0402d19de6204e1
http://security.debian.org/pool/updates/main/p/peercast/libpeercast0-dev_0.1217.toots.20060314-1etch0_mipsel.deb
Size/MD5 checksum:   347956 eca451021ffbe2716b08913e56146516

powerpc architecture (PowerPC)

http://security.debian.org/pool/updates/main/p/peercast/peercast-servent_0.1217.toots.20060314-1etch0_powerpc.deb
Size/MD5 checksum:    51332 ee2f842285410715cf1b0cde52e9e228
http://security.debian.org/pool/updates/main/p/peercast/libpeercast0_0.1217.toots.20060314-1etch0_powerpc.deb
Size/MD5 checksum:   179282 3719200c543846e79b265531086821ce
http://security.debian.org/pool/updates/main/p/peercast/libpeercast0-dev_0.1217.toots.20060314-1etch0_powerpc.deb
Size/MD5 checksum:   326136 b9c43fa4a7d93351e4d2122c1d20f297
http://security.debian.org/pool/updates/main/p/peercast/peercast_0.1217.toots.20060314-1etch0_powerpc.deb
Size/MD5 checksum:     2712 b943f1f9fb08444dfd957a160aabeaa9

s390 architecture (IBM S/390)

http://security.debian.org/pool/updates/main/p/peercast/libpeercast0_0.1217.toots.20060314-1etch0_s390.deb
Size/MD5 checksum:   193570 46368dcf9097b87a33d43297b01f6ddf
http://security.debian.org/pool/updates/main/p/peercast/peercast_0.1217.toots.20060314-1etch0_s390.deb
Size/MD5 checksum:     2704 0c8599bd391e7e7f58b1ddf9611410c6
http://security.debian.org/pool/updates/main/p/peercast/libpeercast0-dev_0.1217.toots.20060314-1etch0_s390.deb
Size/MD5 checksum:   358188 9796b0f073a9cda57940ededb3539190
http://security.debian.org/pool/updates/main/p/peercast/peercast-servent_0.1217.toots.20060314-1etch0_s390.deb
Size/MD5 checksum:    51072 78419b4a1e4bdf7fbb21046fc6e8df66

sparc architecture (Sun SPARC/UltraSPARC)

http://security.debian.org/pool/updates/main/p/peercast/peercast_0.1217.toots.20060314-1etch0_sparc.deb
Size/MD5 checksum:     2714 954c38e3ffeeda41108b81a34e4fd9c7
http://security.debian.org/pool/updates/main/p/peercast/libpeercast0-dev_0.1217.toots.20060314-1etch0_sparc.deb
Size/MD5 checksum:   335528 1152e5ed239634eb1fe3c86185c0bd57
http://security.debian.org/pool/updates/main/p/peercast/peercast-servent_0.1217.toots.20060314-1etch0_sparc.deb
Size/MD5 checksum:    49864 37f0fbae6d44b97560f48395e5f8ce07
http://security.debian.org/pool/updates/main/p/peercast/libpeercast0_0.1217.toots.20060314-1etch0_sparc.deb
Size/MD5 checksum:   200202 d2a2f10914b13a92838ab4d67b1ad53f

补丁安装方法:

1. 手工安装补丁包:

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

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

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

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

Gentoo
------
Gentoo已经为此发布了一个安全公告(GLSA-200801-22)以及相应补丁:
GLSA-200801-22:PeerCast: Buffer overflow
链接:http://security.gentoo.org/glsa/glsa-200801-22.xml

所有PeerCast用户都应升级到最新版本:

    # emerge --sync
    # emerge --ask --oneshot --verbose ">=media-sound/peercast-0.1218"

Peercast
--------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

http://www.peercast.org/download.php

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