NetBSD IRET通用保护错误处理本地权限提升漏洞

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

漏洞信息详情

NetBSD IRET通用保护错误处理本地权限提升漏洞

  • CNNVD编号:CNNVD-200909-379
  • 危害等级: 中危
  • CVE编号: CVE-2009-2793
  • 漏洞类型: 权限许可和访问控制
  • 发布时间: 2009-09-18
  • 威胁类型: 本地
  • 更新时间: 2009-09-22
  • 厂        商: netbsd
  • 漏洞来源: Tavis Ormandy tavi...

漏洞简介

NetBSD是一款免费开放源代码的UNIX性质的操作系统。

在Intel架构上,操作系统内核完成了对中断或异常的服务后通常会使用iret返回到用户态。iret指令会恢复执行继续所需的上下文,如代码段、指令指针、标记等。在受保护模式中iret会分为两个不同的阶段执行,分别为提交前阶段(pre-commit,权限级别改变之前)和提交后阶段(post-commit,权限级别改变后)。可在以下伪代码中找到提交点:

IF new mode != 64-Bit Mode

THEN

IF tempEIP is not within code segment limits

THEN #GP(0); FI;

EIP <- tempEIP;

ELSE (* new mode = 64-bit mode *)

IF tempRIP is non-canonical

THEN #GP(0); FI;

RIP <- tempRIP;

FI;

CS <- tempCS; // This is the commit point (privilege switch)

EFLAGS (CF, PF, AF, ZF, SF, TF, DF, OF, NT) <- tempEFLAGS;

当处理器在处理异常时,会出现两种情况:

- 与中断的过程相同的权限级别执行处理器过程,不会发生栈切换。

- 以不同的权限级别执行处理器过程,因此会发生栈切换。

如果发生了栈切换,所生成的栈帧会不同,因为处理器要保存中断过程的栈。当iret返回到不同的权限级别时,出现失败时的行为会取决于运算当前所处的阶段:提交前失败不会导致栈切换,而提交后失败会导致栈切换,因此生成不同的陷阱帧。

对于NetBSD,内核栈会由于这个漏洞而变得不同步,这可能允许攻击者获得权限提升。

漏洞公告

目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://www.netbsd.org/Security/

参考网址

来源: BUGTRAQ

名称: 20090916 Iret #GP on pre-commit handling failure: the NetBSD case (CVE-2009-2793)

链接:http://www.securityfocus.com/archive/1/archive/1/506531/100/0/threaded

受影响实体

  • Netbsd Netbsd:5.0.1  
  • Netbsd Netbsd:5.0  
  • Netbsd Netbsd:4.0  
  • Netbsd Netbsd:4.0.1  
  • Netbsd Netbsd:3.0  

补丁

    暂无

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