百度空间 | 百度首页 
 
查看文章
 
这不是一个linux内核漏洞,确是一个非常好用的漏洞
2009-04-24 14:54
不是linux kernel的漏洞, 是个非常好用的应用程序漏洞。
http://www.milw0rm.com/exploits/8478

udevd进程处理用户数据不当导致的任意执行命令漏洞。其实邪恶的环境变量不单单是LD_PRELOAD。

int udev_event_execute_run(struct udev_event *event)
{
    struct udev_list_entry *list_entry;
    int err = 0;

    dbg(event->udev, "executing run list\n");
    udev_list_entry_foreach(list_entry, udev_list_get_entry(&event->run_list)) {
        const char *cmd = udev_list_entry_get_name(list_entry);

        if (strncmp(cmd, "socket:", strlen("socket:")) == 0) {
            struct udev_monitor *monitor;

            monitor = udev_monitor_new_from_socket(event->udev, &cmd[strlen("socket:")]);
            if (monitor == NULL)
                continue;
            udev_monitor_send_device(monitor, event->dev);
            udev_monitor_unref(monitor);
        } else {
            char program[UTIL_PATH_SIZE];
            char **envp;

            util_strlcpy(program, cmd, sizeof(program));
            udev_event_apply_format(event, program, sizeof(program));
            if (event->trace)
                fprintf(stderr, "run %s (%llu) '%s'\n",
                       udev_device_get_syspath(event->dev),
                       udev_device_get_seqnum(event->dev),
                       program);
            envp = udev_device_get_properties_envp(event->dev);
            if (util_run_program(event->udev, program, envp, NULL, 0, NULL) != 0) {
                if (!udev_list_entry_get_flag(list_entry))
                    err = -1;
            }
        }
    }
    return err;


类别:技术讨论 | 添加到搜藏 | 浏览() | 评论 (1)
 
最近读者:
 
网友评论:
1
2009-04-24 16:56 | 回复
http://c-skills.blogspot.com/2009/04/udev-trickery-cve-2009-1185-and-cve.html
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu