在Windows系统中如何保护Ring 0?或者说,如果媒体播放器遭到攻击,我应该关心什么?

3

我更熟悉*nix环境,但我正在尝试从Windows的角度学习安全性。我看到Windows安全领域中有很多针对外围程序(如媒体播放器或其他用户模式程序)的漏洞和补丁。控制这些用户程序是否容易获得root访问权限?我原本以为漏洞会针对像*nix上的telnetd这样的特权程序。


可能更适合于http://security.stackexchange.com。 - Eugene Mayevski 'Callback
4个回答

0

“特权程序”是什么意思?

有两个不同的概念:

  1. 处理器执行模式(也称为环)。Windows 仅使用两种“极端”模式:最高特权(ring 0)在内核模式下,最低特权(ring 3)在用户模式下。
  2. 用户帐户,代码运行在其上下文中。

仅当某些驱动程序存在漏洞时,才可能破坏 (1)。也就是说,内核模式下运行的代码中存在错误,理论上可以被利用。除此之外,没有其他漏洞。

如果驱动程序存在特定的漏洞,则也可能破坏 (2)。也就是说,驱动程序应该验证调用过程/线程的上下文中的用户权限,但并不总是这样做。

大多数 Windows 漏洞与运行在用户模式下的代码问题有关。与 Unix/Linux 不同,Windows “成长”时并未天然关注帐户权限等问题。因此,在将事物分为自由/受限时,出现了许多问题。

  • 许多 Windows 程序无故需要特权账户,只是因为它们会执行一些在过去“历史上”被允许的操作(如访问任意注册表设置、Windows 根目录中的文件等)。
  • 即使在限制账户下运行的用户模式代码也可能造成足够的伤害。

0

传统上,在Unix系统上,大多数用户都在其“正常”用户ID下运行程序。当他们需要root访问权限(执行操作被操作系统视为敏感或特权时),他们会su到root或在sudo下运行这些程序。普通应用程序以普通用户身份运行,该用户没有权限执行某些操作(触摸系统文件,打开某些资源等)。

在Windows方面,用户传统上使用具有管理员权限的帐户运行(基本上是Windows的root)。有许多原因,但主要原因是Windows始于单用户操作系统,没有用户角色的概念,并且通过不破坏应用程序来保留功能,使得让用户在没有管理员权限的情况下运行变得非常困难。当前版本的Windows(Vista和Win7)默认使用非管理员帐户,并使用用户帐户控制的概念,让用户知道他们正在运行的某些内容需要此类访问权限,他们需要确认。

简而言之-大多数Windows用户都具有管理员权限,因此针对普通用户应用程序确实在许多情况下给您提供了特权访问。


0
许多媒体程序依赖于DirectX和其他紧密集成到操作系统中的Windows库,以最小化在发送字节时的用户空间开销。

http://news.cnet.com/8301-1009_3-9992926-83.html

微软于周三发布了两个与Microsoft DirectX漏洞有关的重要安全公告修订版。这些修订版涉及可能允许攻击者在机器上远程运行代码或控制它,如果用户打开恶意媒体文件,则会出现漏洞。

如果系统库与操作系统紧密集成,我不清楚为什么用户空间安全会受到影响? - Robert Martin
@RobertMartin,用户空间代码的TCB通常包括大量的内核空间代码。如果用户空间代码使用系统服务来打开媒体文件,并且该系统服务可以被制作的媒体文件所篡改,那么用户空间代码就会被有效地篡改。 - Mike Samuel

0

运行在用户上下文中的恶意软件通常比管理员或内核模式恶意软件更容易找到和清除,因为它不能像安全软件和Windows更新那样轻松地干扰。但这并不意味着它无法达到其目的:它仍然可以渗透到您的浏览器中以干扰、拦截或修改您的网络浏览,仍然可以发送垃圾邮件,仍然可以记录按键等。


一个用户级别的程序能否安装自己以在系统启动时在后台运行? - Robert Martin
不行,但它可以安装自己以在用户登录时在后台运行。 - Harry Johnston

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接