CVE-2019-0841: Windows DACL权限覆写权限提升漏洞分析
漏洞概述
CVE-2019-0841是一个Windows操作系统中的权限提升漏洞,允许低权限用户通过覆写目标文件的权限来劫持属于NT AUTHORITY\SYSTEM的文件。成功利用该漏洞可以使低权限用户获得对目标文件的完全控制权限。
漏洞背景
所有Windows应用程序都有一个settings.dat文件,用于记录应用程序的注册表设置。该文件是一个可以在注册表中加载和修改的注册表文件。当用户启动Windows应用程序(如Microsoft Edge)时,可以访问NT AUTHORITY\SYSTEM的settings.dat文件。
漏洞细节
文件位置
所有Windows应用程序的用户配置文件都保存在当前用户的APPDATA文件夹中:
C:\Users\<username>\AppData\Local\Packages\<Packagename>
Windows 10有一些默认安装的应用程序,每个package都有一个settings.dat文件,由NT AUTHORITY\SYSTEM写入配置变化。
文件访问机制
- Windows应用程序启动后,系统会使用OpLock操作来防止其他进程在应用程序运行时使用或访问该文件。
- 启动Microsoft Edge后,
settings.dat文件会以NT AUTHORITY\SYSTEM身份打开。 - 系统执行以下基本完整性检查:
- 检查文件权限
- 如果文件权限不准确,修正文件权限
- 读取文件内容
- 如果文件内容被破坏,删除该文件
- 从模板中复制设置文件来重设配置
- 在新复制的文件上获取Exclusive Lock
- 启动Windows应用程序
漏洞触发点
在读取文件内容后,在SetSecurityFile操作过程中会首先设置正确的文件权限。如果内容与正确的settings.dat文件不对应,系统会删除该文件,复制设置模板文件然后启动Windows应用程序。
绝大多数这些操作都是通过模拟(impersonating)当前用户权限来执行的,这原本是为了防止滥用这些操作。然而,可以利用这一行为来通过硬链接对任意文件设置文件权限。
漏洞利用
利用原理
设置硬链接的文件权限会改变原始文件的权限。通过这一特性,可以劫持系统文件(如C:\Windows\System32\drivers\etc\hosts)。
利用条件
- NT AUTHORITY\SYSTEM对目标文件有完全控制权限
- 低权限用户或用户组有读写权限
- 读和执行权限可以继承
利用步骤
- 检查目标文件是否存在及其权限
- 杀掉Microsoft Edge进程以获取
settings.dat文件的访问权限 - 检查
settings.dat文件并删除该文件 - 创建到目标文件的硬链接
- 再次启动Microsoft Edge以触发漏洞
- 验证是否为当前用户设置了完全控制权限
PoC验证
研究人员开发了漏洞利用代码可以自动创建硬链接并触发该漏洞。PoC代码位于:
https://github.com/rogue-kdc/CVE-2019-0841
视频PoC展示了使用DLL和注入恶意代码来利用Chrome Update Service进行权限提升的完整过程:
https://www.youtube.com/embed/vP468ZjJ3hU
防御措施
- 及时安装微软发布的安全补丁
- 限制低权限用户对关键系统文件的访问权限
- 监控系统关键文件的权限变更
- 禁用不必要的Windows应用程序
总结
CVE-2019-0841漏洞通过Windows应用程序的settings.dat文件处理机制中的缺陷,允许攻击者通过硬链接修改系统文件的权限,从而实现权限提升。该漏洞影响所有允许低权限用户访问settings.dat文件的Windows应用程序。