原创漏洞-西门子博途19全局配置文件反序列化漏洞分析
日期:2024年12月16日 阅:66
原创漏洞
1. 摘要
这篇文章旨在介绍西门子博途19可以导致任意代码执行的反序列化漏洞,该漏洞会在任意博途工程打开过程中触发,导致执行恶意代码。漏洞是由于博途软件在加载Settings.xml全局配置文件时,没有对其中的二进制序列进行过滤,导致恶意代码被执行。该漏洞由浙江国利网安科技有限公司工控安全实验室在对博途软件加载全局配置文件进行分析的过程中,通过对Settings 目录下的xml文件内容的解析流程进行分析时首次发现的,后续的漏洞修复工作请及时关注我司及西门子官方公告。
2. 漏洞简介
漏洞类型:任意代码执行漏洞
漏洞编号:CNNVD-2024-75585004
供应商:SIEMENS AG
产品:TIA Portal v19
利用效果:能够实现在普通用户权限下的任意代码执行。
漏洞危害:攻击者可以利用漏洞,在目标系统上实现任意代码执行,并且如果由高权限用户触发,则可以实现提权。
利用要求:需要攻击者在目标计算机拥有至少普通用户权限,并且在普通权限路径下拥有读写权限。
利用场景:本漏洞属于ATT&CK框架中TA0004权限提升阶段的T1068利用漏洞提升权限。攻击者在初始访问和执行攻击手段之后,权限级别等安全结构通常会阻碍对信息的访问和某些技术的使用,因此,攻击者通过篡改Siemens. Automation.Portal进程启动时自动加载Settings.xml。当博途被高权限用户启动后,将会反序列化攻击者构造好的二进制序列,最终实现对系统的权限提升。
3. 西门子博途19介绍
TIA 博途是全集成自动化软件 TIA Portal的简称,是西门子工业自动化集团发布的一款全新的全集成自动化软件。它是业内首个采用统一的工程组态和软件项目环境的自动化软件,几乎适用于所有自动化任务。借助该全新的工程技术软件平台,用户能够快速、直观地开发和调试自动化系统。
TIA 博途的核心优势在于其统一化的工程组态环境,它集成了西门子的多个自动化软件组件,如SIMATIC Step7(用于控制器和分布式设备的组态和编程)和 SIMATIC WinCC(用于人机界面的组态)等。这些组件在TIA博途平台上可以共享数据和管理,从而简化了自动化项目的开发过程。
此外,TIA 博途还提供了丰富的功能,如仿真工具、能源管理功能、多用户管理以及支持云解决方案等,这些功能有助于进一步提高工厂的生产力,优化质量管理,缩短产品上市时间,并提供了更大的灵活性。
TIA 博途的设计基于面向对象和集中数据管理,实现了数据的一致性和无缝集成。它还引入了项目范围的交叉索引系统,使用户能够在整个自动化项目内轻松查找数据和程序块,从而极大地缩短了软件项目的故障诊断和调试时间。
4. 全局配置文件Settings反序列化漏洞
4.1 漏洞原理介绍
我们在深入分析博途软件的逆向工程过程中发现了一处关键的安全漏洞,即博途中存在脆弱函数binaryFormatter.Deserialize,这个函数在处理数据时存在缺陷,使得攻击者有可能利用这一点进行恶意操作。
通过细致的“顺藤摸瓜”式分析,我们进一步发现在软件启动的过程中,它会主动调用并处理Settings.xml文件。这个文件包含了软件运行所需的关键配置信息。然而,博途软件在处理这个文件时,没有采取足够的安全措施来防范潜在的威胁。通过构造Settings.xml文件,使得Settings.xml文件在被解包后,其内容会被传递到前面提到的脆弱函数中。在这里,文件中包含了攻击者精心构造的payload,那么这些payload就会被反序列化,并在软件中执行。
整个漏洞触发的流程可以用图1表示:
在博途V19中的Siemens.Automation. Multiuser.Workflow.BL. Utilities的MultiUser ServerCertificateValidator类的GetMulti UserServerCertificateThumbPrintsDictionar-y FromSettings函数,存在一个危险函数引用binaryFormatter. Deserialize(),如图2所示。
由于引用了危险函数,使博途的脆弱性大大提高,只要能让脆弱函数执行我们精心构造的payload,就可以实现任意命令执行。因此只要找到该函数从哪被调用,哪里的内容会被加载到参数value,就能够触发危险函数,利用漏洞。跟随漏洞触发点,逆向搜索value从哪得到,可以跟随到FindSettingsNode函数。
可以得到value是由SettingsServiceBase类读取得到。再继续逆向跟踪m_Settings Tree,可以发现它是由同一个类中的Settings ServiceBase函数中的ReadAll Settings得到。
继续跟进分析,可以发现它从C:\Program
Data\Siemems\Automation\PortalV19\Settings\Settings.xml和C:\Users\Administrator\ AppData\Roaming\Siemens\Automation\Portal V19\ Settings\ Settings.xml读取了Settings文件。
继续分析跟进RealAllSettings,可以得出xml的构造方式。
然后继续跟踪,可以找到ReadValue函数。
可以得到binary的读取格式为Base64。
至此,分析得到了所有线索,包括:Settings.xml文件路径,Settings.xml文件格式以及传入反序列化代码的格式。可以构造脚本进行攻击。
通过vs编译出反弹regedit.exe的代码,再序列化后base64编码,即可得到攻击payload。
4.2 漏洞利用效果
篡改Settings.xml后再启动博途,效果如下:
接下来是权限提升测试。
Settings.xml文件为普通用户可读写权限,篡改Settings.xml后,只要用户启动博途,就会弹出regedit.exe,如果用户为高权限用户,所执行的命令也属于高权限,即可达到提取的目的。
首先,如图11所示,注入序列化字符串的Settings.xml文件默认为普通用户可读可写的权限,因此普通权限用户也可以篡改。
如图12所示,regedit.exe进程为Portal. exe进程的子进程,所以其拥有与Portal. exe进程相同的权限。
最后,如图13所示,当使用管理员权限启动博途并触发漏洞时,启动的regedit.exe为Administrator用户,拥有高权限,提权成功。
4.3 漏洞利用总结
本漏洞实现了从普通用户权限到管理员权限的提升。主要利用了Siemens.Automation. Portal进程在加载全局配置文件Settings文件时,没有对文件内容进行有效过滤,使TIA对注入恶意代码的Settings内容反序列化,最终导致任意代码执行和权限提升。
整个利用过程不需要管理员权限,也不需要提前准备好恶意dll,可以直接执行代码。但是该漏洞的利用需要有目标计算机认可的普通用户的操作权限。
4.4 漏洞应用场景
攻击者在以普通用户权限入侵了西门子上位机后,为了进一步扩大攻击成果,迫切的需要提升自身的操作权限,通过利用该漏洞即可实现这一需求。按照上面漏洞原理介绍的过程修改TIA全局配置文件,当TIA被高权限用户执行后,将直接以管理员权限运行配置文件中构造的命令,达到提升权限的目的。
引用链接
[1]https://github.com/Y4er/dotnet-deseria lization/blob/main/BinaryFormatter.md
公司简介 Company Profile
浙江国利网安科技有限公司坚守“让控制更安全,让用户更放心”的使命,凭借30年的工控技术积累和十余年的工控安全研究,已形成了“工控安全试验场”“工控安全盾”等独具特色与优势的攻防核心技术、安全产品与服务体系,以及完整的行业解决方案,在水务水利、石油炼化、油气管网、城市燃气、电力能源、轨道交通、智能制造等行业拥有众多客户,致力于成为世界一流的关键基础设施安全整体解决方案提供商。
浙江国利网安科技有限公司坚守“让控制更安全,让用户更放心”的使命,凭借30年的工控技术积累和12年的工控安全研究,已形成了“工控安全试验场”“工控安全盾”等独具特色与优势的攻防核心技术、安全产品与服务体系和水务水利、石油炼化、油气管网、城市燃气、电力能源、轨道交通、智能制造等系列行业解决方案,致力于成为世界一流的关键基础设施安全整体解决方案提供商。