Linux Kernel ALSA驱动snd-page-alloc本地Proc文件信息泄露漏洞

admin 2022-07-23 05:09:33 CNNVD漏洞 来源:ZONE.CI 全球网 0 阅读模式

漏洞信息详情

Linux Kernel ALSA驱动snd-page-alloc本地Proc文件信息泄露漏洞

  • CNNVD编号:CNNVD-200709-386
  • 危害等级: 中危
  • CVE编号: CVE-2007-4571
  • 漏洞类型: 边界条件错误
  • 发布时间: 2007-09-26
  • 威胁类型: 本地
  • 更新时间: 2007-09-27
  • 厂        商: linux
  • 漏洞来源: Neil Kettle※ mu-b@...

漏洞简介

Linux kernel是美国Linux基金会发布的开源操作系统Linux所使用的内核。NFSv4 implementation是其中的一个分布式文件系统协议。

Linux系统的ALSA声卡驱动实现上存在漏洞,本地攻击者可能利用此漏洞获取内核内存中的敏感信息。

Linux Kernel在处理多个/proc/driver/snd-page-alloc文件的读操作时存在安全漏洞,sound/core/memalloc.c文件中如下定义了读操作的系统调用snd_mem_proc_read:

484 static int snd_mem_proc_read(char *page, char **start, off_t off,

485 int count, int *eof, void *data)

486 {

487 int len = 0;

...

494 len += snprintf(page + len, count - len,

495 \"pages : \\%li bytes (\\%li pages per \\%likB)\n\",

496 pages * PAGE_SIZE, pages, PAGE_SIZE / 1024);

...

508 return len;

509 }

在494行调用了snprintf以生成proc文件系统项的输出,如果提供了计数值1,snprintf就会仅向目标缓冲区写入单个字节,但如果有足够空间的话,函数就会返回应写入的字节数。没有设置过*eof值,也没有使用过*ppos值。

fs/proc/generic.c文件中定义了从proc_file_read调用的这个函数:

51 static ssize_t

52 proc_file_read(struct file *file, char __user *buf, size_t nbytes,

53 loff_t *ppos)

54 {

...

136 n = dp->read_proc(page, &start, *ppos,

137 count, &eof, dp->data);

...

155 n -= *ppos;

156 if (n <= 0)

157 break;

158 if (n > count)

159 n = count;

160 start = page + *ppos;

...

186 n -= copy_to_user(buf, start < page ? page : start, n);

...

193 *ppos += start < page ? (unsigned long)start : n;

在136行从对snd_proc_mem_read函数的调用返回了值n。由于返回值(在单个设备的情况下大约为41)大于所请求的读大小(1),在158行n值被设置为count,之后*ppos递增,从start(计算为page + *ppos)将n字节拷贝到了用户域。

在之后的用户域读操作中,如果*ppos大于0的话,proc_file_read函数就会拷贝过snd_mem_proc_read写入的页面,导致泄露内核内存。

漏洞公告

临时解决方法:

* 卸载snd_page_alloc模块

* 修改/etc/fstab中的加载参数限制对/proc文件系统的访问

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

http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.8.tar.bz2

参考网址

来源: UBUNTU

名称: USN-618-1

链接:http://www.ubuntu.com/usn/usn-618-1

来源: SECUNIA

名称: 30769

链接:http://secunia.com/advisories/30769

来源: IDEFENSE

名称: 20070925 Linux Kernel ALSA snd_mem_proc_read Information Disclosure Vulnerability

链接:http://labs.idefense.com/intelligence/vulnerabilities/display.php?id=600

来源: kernel.org

链接:http://kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.22.8

来源: git.kernel.org

链接:http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=ccec6e2c4a74adf76ed4e2478091a311b1806212

来源: FEDORA

名称: FEDORA-2007-2349

链接:https://www.redhat.com/archives/fedora-package-announce/2007-September/msg00436.HTML

来源: FEDORA

名称: FEDORA-2007-714

链接:https://www.redhat.com/archives/fedora-package-announce/2007-October/msg00083.HTML

来源: issues.rpath.com

链接:https://issues.rpath.com/browse/RPL-1761

来源: XF

名称: linux-sndpagealloc-information-disclosure(36780)

链接:http://xforce.iss.net/xforce/xfdb/36780

来源: SECTRACK

名称: 1018734

链接:http://www.securitytracker.com/id?1018734

来源: BID

名称: 25807

链接:http://www.securityfocus.com/bid/25807

来源: REDHAT

名称: RHSA-2007:0993

链接:http://www.redhat.com/support/errata/RHSA-2007-0993.HTML

来源: REDHAT

名称: RHSA-2007:0939

链接:http://www.redhat.com/support/errata/RHSA-2007-0939.HTML

来源: SUSE

名称: SUSE-SA:2007:053

链接:http://www.novell.com/linux/security/advisories/2007_53_kernel.HTML

来源: VUPEN

名称: ADV-2007-3272

链接:http://www.frsirt.com/english/advisories/2007/3272

来源: DEBIAN

名称: DSA-1505

链接:http://www.debian.org/security/2008/dsa-1505

来源: DEBIAN

名称: DSA-1479

链接:http://www.debian.org/security/2008/dsa-1479

来源: support.avaya.com

链接:http://support.avaya.com/elmodocs2/security/ASA-2007-474.htm

来源: SECUNIA

名称: 29054

链接:http://secunia.com/advisories/29054

来源: SECUNIA

名称: 28626

链接:http://secunia.com/advisories/28626

来源: SECUNIA

名称: 27824

链接:http://secunia.com/advisories/27824

来源: SECUNIA

名称: 27747

链接:http://secunia.com/advisories/27747

来源: SECUNIA

名称: 27436

链接:http://secunia.com/advisories/27436

来源: SECUNIA

名称: 27227

链接:http://secunia.com/advisories/27227

来源: SECUNIA

名称: 27101

链接:http://secunia.com/advisories/27101

来源: SECUNIA

名称: 26989

链接:http://secunia.com/advisories/26989

来源: SECUNIA

名称: 26980

链接:http://secunia.com/advisories/26980

来源: SECUNIA

名称: 26918

链接:http://secunia.com/advisories/26918

受影响实体

  • Linux Linux_kernel:2.6.22.7  

补丁

    暂无

weinxin
特别声明
本站(ZONE.CI)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
评论:0   参与:  0