Windows “主题出血” 高分漏洞的预防和分析

作者:Sender Su  来源:原创内容  发布日期:2023-09-23  最后修改日期:2023-09-23

在微软9月份的更新中,包含了编号为 CVE-2023-38146 的利用 Windows 主题实现任意代码执行的漏洞补丁,(幸亏)仅适用于Win 11。

article banner

笔者:国际认证信息系统审计师、软考系统分析师

这个漏洞的评分是CVSS 8.8分,相当高,但评分没有给到9分以上,主要是因为该漏洞的触发利用需要通过一套组合拳才能实现:

“攻击者需要说服目标用户在易受攻击的系统上加载 Windows 主题文件,并需要有权访问攻击者控制的 SMB 共享。”

虽然组合拳也不算复杂,但也降低了被利用的可能性。

但笔者并不完全这样认为。因为这个漏洞所利用的对象与一般漏洞不同,是之前较少获得关注的:

Windows 主题。

不说普通用户喜欢折腾包括Windows外观在内的各种软件皮肤了,即使是笔者也会换换桌面墙纸什么的,对冲一下工作疲劳。

但谁特么会想到桌面主题包居然也可以被利用实现任意代码执行......

不仅作为网络安全人员要更新观念,更麻烦在于对终端用户也要全部重新灌输概念。这样下去,Zero Trust 零信任就不仅仅是 Trust No One,Trust Nothing 才是零信任的最后归宿。

那么作为甲方安全人员,要做些什么呢?

1、确保已经打了 Windows 系统补丁

但不要迷信补丁。因为本次的补丁微软只是删除了会引起条件竞争问题的前置代码,但还缺两个关键要素未补:

1)从互联网下载的 themepack 包依然缺失 MotW 标记,仍然无法强制进行来源检查;

2).theme 文件的从检查时到执行时(TOCTOU)条件竞争漏洞尚未补上,而这个漏洞是导致这个“主题出血”漏洞的基础因素。

顺便学习一下 TOCTOU 漏洞:

软件在使用某资源之前会先检查资源的状态,但由于没有锁定资源防止变更的机制,资源的完整性状态可以在从检查到使用之间的时间间隙内被更改,从而使检查的结果无效,导致软件实际使用了完整性被破坏的资源。

相关定义:

https://cwe.mitre.org/data/definitions/367.html

2、禁用用户修改主题

这无疑是有效的做法,负面就是会带来用户的吐槽。是否应用这个策略,取决于企业内部管理文化和氛围。实施方法是通过组策略,相关策略设置如下图:

(1)启动组策略编辑器,通过筛选功能找到设置

group policy filter

group policy filter out

(2)修改设置

group policy disable custom theme

但这个组策略设置是对用户而不是对操作系统,单机设置该策略的强制性是不够的。

如果企业内建立了域控,这个策略的部署才具备强制性。所以,有域控时网安人员的生活还是会轻松很多,至于前门拒虎后门进狼什么的就不提了。

3、网络安全教育

安全教育不能停,风险警示必须持之以恒。这次是系统主题可以被利用实现任意代码执行,下次就会有别的意想不到的事情。

关键是这个漏洞利用的是很容易被终端用户接受的操作系统主题,迷惑性和诱惑性比一般的钓鱼手段更强。

4、最后是一些技术细节

(1)漏洞工作原理概括

利用文件资源并给出特定的版本号“999”,会使 Windows 在检查主题文件的签名时触发条件竞争漏洞,从而允许攻击者通过专门设计的恶意代码文件替换经验证的正常无害文件,实现任意代码执行。

同时,由于从网络下载的 .themepack 文件不会被标记来自互联网,因此攻击者可以把有害的 .msstyles 文件隐藏在 THEMEPACK 文件内从而绕过检查。

通过在网络上设置恶意的SMB共享,攻击者可以轻松地利用以上过程完成攻击。

(2)完整的漏洞分析

在漏洞分析中,给出了关于 uxtheme.dll 中对 .msstyles 主题文件的额外处理过程的分析。

该过程的关键点是:如果主题文件中包含有名为“PACKTHEM_VERSION”的特定名称资源,且该资源的值为999时,会专门调用 ReviseVersionIfNecessary 函数进行签名校验。

该函数的签名校验过程,尝试在校验签名后加载 DLL 文件再调用其中的函数,但它的代码实现是:完成校验-关闭DLL-打开DLL。在关闭和打开之间的这么一个短短的间隙,就可以被利用产生条件竞争漏洞。

在概念验证代码中,为了更容易利用该漏洞,采取了建立受控的网络SMB共享,基于SMB共享的工作原理,控制何时提供有效签名文件,何时提供恶意执行文件的方法。

因为 .theme 文件可以指向位于网络SMB共享上的 .msstyle 路径,这就允许攻击者可以通过建立SMB共享服务器,知道有效签名文件已经被受害者完成验证和关闭,从容地利用这个间隙提供恶意执行文件。

详情可见:

https://exploits.forsale/themebleed/

概念验证代码(PoC):

https://github.com/gabe-k/themebleed

(3)关于Windows主题的一些知识

它是扩展名为 .theme 的打包文件。比如在 Windows 11 系统下会通过如下的命令运行:

"C:\WINDOWS\system32\rundll32.exe” C:\WINDOWS\system32\themecpl.dll,OpenThemeAction

而其中包含的扩展名为 msstyles 的文件,实际是带有资源数据的DLL文件。

​5、最后还是要吐槽:

这个版本资源999的检查处理过程,大家觉得像个什么功能特性?

本栏目相关
  •  2024-11-13 挖深网络安全的兔子洞:CPU 微码补丁管理
  •  2024-11-10 安全加固基准搅合国产操作系统上下游关系
  •  2022-05-11 CIS-CAT 配置评估工具介绍及操作实践
  •  2022-03-16 Windows 系统安全基线及软件工具介绍
  •  2022-08-28 网络攻防中的色彩象征
  •  2022-03-11 安装RHEL/CentOS时如何选择配置安全策略?
  •  2023-02-27 注意:TightVNC 2.8.75 释出,修补 zlib 漏洞 CVE-2022-37434
  •  2022-03-25 从甲方角度介绍“CIS互联网安全中心”
  •  2022-03-17 详细了解微软安全合规工具包(SCT)
  • 本站微信订阅号:

    微信订阅号二维码

    本页网址二维码: