西门子伺服电机授权代理商丨辽宁地区一级供应商
- 供应商
- 上海跃韦科技集团有限公司
- 认证
- 西门子
- 西门子电机总代理
- 西门子电机
- 西门子电机总代理商
- 德国
- 西门子电机一级总代理
- 联系电话
- 18674345958
- 手机号
- 18674345958
- 经理
- 李经理
- 所在地
- 上海跃韦科技集团有限公司
- 更新时间
- 2024-11-13 07:00
工业网络安全公司claroty研究人员近日发现了一个严重的漏洞,未经认证的远程攻击者可以利用这个漏洞攻击西门子旗下的可编程逻辑控制器(plc)。该漏洞被编号为cve-2020-15782,是一个高危的内存保护绕过漏洞,允许攻击者通过网络访问tcp102端口在受保护的内存区域中写、读数据。这一远程可利用漏洞引发了研究者对西门子控制器安全问题的深入思考。
西门子公司表示,该安全漏洞影响其simatics7-1200和s7-1500cpu,可通过新的漏洞远程攻击其plc产品。西门子已经为一些受影响的设备发布了固件更新,并为尚未发布补丁的产品提供了变通方案。——西门子plc
根据claroty公司的说法,该漏洞可绕过通常工程代码运行的沙箱,直接访问设备内存,从而在西门子s7plc上获得本机代码执行。研究人员展示了攻击者如何绕过保护直接将shellcode写入受保护的内存中。沙箱逃逸意味着攻击者可以从plc的任何地方读写,并可用恶意代码修补内存中现有的vm操作码,从而对设备进行root权限的操作。重点强调的是,利用这一漏洞的攻击将很难被发现。
研究成果的披露是西门子和claroty公司紧密关系的结果,这不仅促进了工业网络安全研究团队和供应商在漏洞披露方面的合作,也促进了整个工业生态系统的安全。西门子和claroty之间的密切合作包括技术细节、攻击技术和缓解建议的交流,这些都有助于促成西门子及时发布更新补丁。西门子和claroty希望,鉴于此漏洞的关键性质,用户应尽快更新s7-1200、s7-1500cpu,以及其他受影响产品。
一、漏洞简介及受影响产品
2.受影响产品
受影响的设备容易受到内存保护绕过而实施特定的操作。对tcp端口102进行网络访问的远程未经身份验证的攻击者可能会将任意数据和代码写入受保护的内存区域,或读取敏感数据以发动进一步攻击。
5月28日,西门子发布了警告ssa-434534,向用户通报该漏相关信息。西门子还发布了包括s7-1500、s7-1200的各种产品的更新,建议用户更新到***新版本以弥补漏洞。该公司表示,正在为尚未更新的产品准备进一步更新。西门子还提供了用户可用于降低风险的具体缓解措施。
cve-2020-15782之所以受到如此关注,主要是这一漏洞的成功利用,将有可能将工业网络安全研究者对西门子控制器攻击研究提高到新层次,而攻击者实施成功攻击的限制则越少越易,原因就是该漏洞的条件太优越。
在可编程逻辑控制器(plc)等工业控制系统上实现本机代码执行是那些gaoji水平高能力攻击者已经实现的***终目标。因为这些复杂的系统有许多内存保护,攻击者不仅为了能够运行他们选择的代码,而且还要不被发现,因此必须要跨越这些保护措施。
从攻击者的角度来看,plc漏洞利用的***目标就是在plc上实现不受限制和不被检测的代码执行。这意味着,能够将代码隐藏在plc内部深处,而不被操作系统或任何诊断软件检测到。
多年来,鉴于西门子plc在市场上的***地位,已经出现了许多在西门子plc上实现这种能力的尝试。
第二个经典型的plc攻击,是2019年的rogue7的攻击(出自论文rogue7:rogueengineering-station attacks on s7 simaticplcs)。《rogue7》背后的研究人员能够创建一个流氓工程站,它可以伪装成tia(tiaportal是一系列无缝集成的自动化解决方案)通往plc的门户,并注入任何有利于攻击者的信息。通过理解密码信息是如何交换的,他们能够将代码隐藏在用户内存中,而tia工程站是看不见的。西门子部分解决了此问题,并提供了缓解措施,详见ssa-232418。
第三个,同在2019年,德国波鸿鲁尔大学(ruhr universitybochum)安全研究***ali abbasi和tobias scharnowski介绍了他们如何通过物理攻击simatic1200来获得在西门子s7 plc上的代码执行。他们使用uart(通用异步收发传输器(universal asynchronousreceiver/transmitter),通常称作uart。它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,uart通常被集成于其他通讯接口的连结上。)物理连接来转储固件,并发现了一个漏洞链,使他们能够将代码隐藏在系统中更深的地方,并获得不受限制的代码执行。西门子在ssa-686531中解决了这个问题。
西门子plcs本地代码执行攻击发展历程
三、plc沙箱逃逸
为了执行这种攻击,需要对plc进行网络访问。此外,攻击者还需要plc下载权限。自从tia portalv12以来,西门子提供了各种缓解控制,以限制用户网络和对plc的读写访问,特别是口令保护机制。此外,从v17开始,西门子引入了在plc、hmi和tiaportal之间使用个人证书的tls通信,这大大减少了潜在的攻击面。
为了理解claroty的具体攻击,先要概述一个标准plc的通用结构。它的cpu是一个16或32位微处理器,由一个内存芯片和集成电路组成,管理控制逻辑、过程监控和通信。cpu指导plc执行控制指令,与其他设备通信,执行逻辑和算术操作,并执行内部诊断。它还运行内存例程,不断检查plc,以避免编程错误,并确保内存没有损坏。逻辑运行在沙盒环境(有时也被称为“监狱”)中。传输到控制器的逻辑jinxian于供应商提供的特定内存区域和api。
以西门子s7plc为例,它运行在adonis内核和arm或mips处理器上,有许多编程语言可用于配置控制器,包括语句列表(stl)、梯形图(ld)、功能框图(fbd)和结构化控制语言(scl)。
不管何种输入源,plc程序都会编译成mc7/mc7+字节码,这是一种低级别的代码表示。经工程站编译后-西门子tia门户-代码块(mc7/mc7+格式)通过西门子的s7comm/s7comm+协议下载并安装到plc中。然后,plc中的mc7虚拟机将对代码块进行分派,并对字节码进行解释和执行。
plc程序执行过程
由于虚拟机限制了用户程序访问的资源,因此编译后的字节码只能用于访问操作系统允许的资源,而不能直接用于硬件操作。这是为了将用户和运行代码限制在一组被认为是安全且已定义的操作中。例如,操作系统将限制对受保护内存的任何直接访问,但会允许使用siemens提供的标准库中的任何函数(例如add_i- addinteger子例程)。换句话说,操作系统将用户代码“锁定”在一个沙盒/容器中,对资源、内存和功能的访问是有限的,这可能会破坏plc和/或整个进程。
为了逃逸或“越狱”本地simatics7-1200和s7-1500沙箱,claroty利用了其内存保护绕过漏洞。该漏洞使攻击者能够将任意数据和代码写入所谓的受保护的内存区域,或读取敏感数据以发动进一步攻击。
利用cve-2020-15782实现沙箱逃逸
四、防范建议
西门子已经确定了以下具体的解决方案和缓解措施,并强烈建议客户采用它们来降低风险:
s7通信采用口令保护
通过s7-1200或s7-1500cpu的endis_pw指令禁止客户端连接(这将阻塞远程客户端连接,即使客户端可以提供正确的口令)
使用显示配置额外的访问保护s7-1500cpu(这将阻止远程客户端连接,即使客户端可以提供正确的口令)应用“纵深防御”,如工业操作指南第12ff页所述安全措施,特别是:
1.工厂安全:对关键部件的物理防护;
2.网络安全:确保plc系统没有连接到不可信的网络;
3.系统完整性:配置、维护和保护设备应用适用的补偿饱和控制和使用内置的安全能力。
将整个解决方案更新到tia portalv17,并使用plc、hmi和pg/pc之间的个人证书tls通信
5.通用的安全建议
作为一种通用的安全措施,西门子强烈建议使用适当的保护机制对设备网络访问。为了在受保护的it环境中运行设备,西门子建议按照西门子工业安全操作指南进行环境配置(https://www.siemens.com/cert/operational-guidelines-industrial-security)。
五、小结