安全研究

安全漏洞
Pidgin Libpurple库MSN-SLP表情符目录遍历漏洞

发布日期:2009-12-29
更新日期:2010-01-04

受影响系统:
Pidgin Pidgin 2.6.4
描述:
BUGTRAQ  ID: 37524
CVE(CAN) ID: CVE-2010-0013

Pidgin是支持多种协议的即时通讯客户端。

Pidgin的Libpurple库在实现自定义表情符功能时存在安全漏洞,远程攻击者可以通过提交包含有目录遍历序列的MSN表情符请求读取任意文件的内容。以下是libpurple/protocols/msn/slp.c中的有漏洞代码段:

static void
got_sessionreq(MsnSlpCall *slpcall, const char *branch,
               const char *euf_guid, const char *context)
{
    gboolean accepted = FALSE;

    if (!strcmp(euf_guid, MSN_OBJ_GUID))
    {
        /* Emoticon or UserDisplay */
        char *content;
        gsize len;
        MsnSlpLink *slplink;
        MsnSlpMessage *slpmsg;
        MsnObject *obj;
        char *msnobj_data;
        PurpleStoredImage *img;
        int type;

        /* Send Ok */
     ...
        msnobj_data = (char *)purple_base64_decode(context, &len);
        obj = msn_object_new_from_string(msnobj_data);
        type = msn_object_get_type(obj);
        g_free(msnobj_data);
     ...
        if (type == MSN_OBJECT_EMOTICON) {
            char *path;
            path = g_build_filename(purple_smileys_get_storing_dir(),
                    obj->location, NULL);
            img = purple_imgstore_new_from_file(path);
            g_free(path);
    ...
        msn_slpmsg_set_image(slpmsg, img);
        msn_slplink_queue_slpmsg(slplink, slpmsg);
        purple_imgstore_unref(img);

        accepted = TRUE;
    }
    ...
}

上述代码首先解码Base64编码的上下文然后存储到msnobj_data,之后会使用这个传送给msn_object_new_from_string()的指针检索MsnObject结构。这个类型是在libpurple/protocols/msn/slp.h中定义的,包含有:

typedef struct
{
    gboolean local;

    char *creator;
    int size;
    MsnObjectType type;
    PurpleStoredImage *img;
    char *location;
    char *friendly;
    char *sha1d;
    char *sha1c;

} MsnObject;

在got_sessionreq()函数中,如果之前所接收到对象(使用msn_object_get_type()检索到)的类型为MSN_OBJECT_EMOTICON的类型,也就是为表情符,就会调用g_build_filename()基于pidgin的默认表情符目录构建文件名。由于其中使用了从purple_smileys_get_storing_dir()检索的内容和用户控制的obj->location,远程攻击者可以创建包含有目录遍历序列表情符的MSN请求从系统检索任意文件。

<*来源:Fabian Yamaguchi
  
  链接:http://secunia.com/advisories/37953/
        http://xorl.wordpress.com/2010/01/01/pidgin-msn-slp-emoticon-directory-traversal/
        https://www.redhat.com/support/errata/RHSA-2010-0044.html
*>

建议:
厂商补丁:

RedHat
------
RedHat已经为此发布了一个安全公告(RHSA-2010:0044-01)以及相应补丁:
RHSA-2010:0044-01:Important: pidgin security update
链接:https://www.redhat.com/support/errata/RHSA-2010-0044.html

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