两年之前,我们曾经评估了20款用于配合工业控制系统(简称ICS)软件与硬件的移动应用程序。当时,移动技术已经得到相当程度的普及,但物联网(简称IoT)热潮则刚刚起步。我们的研究结论是,SCADA系统与移动应用的组合很可能带来非常可怕的潜在风险。在介绍论文内容时,我们提到“便捷性获得的重视往往高于安全性。现在,您可以利用全新Android设备监控(甚至控制)自己的工业控制系统。”
时至今日,人们对于工业物联网技术的出现已经不再陌生,而将日志、监控甚至是督导/控制功能放在云端实现也不再是遥不可及的梦想。如果大家关注目前的移动应用产品,就会发现与两年之前相比,与工业控制系统相关的应用数量开始大幅增加。另外,我们还曾经作出预测,认为“快速增长的移动开发环境”将弥补SCADA(即监测控制与数据采集)系统以往存在的诸多空白。
我们此次研究的目标在于了解工业物联网这个全新的时代,探讨其未来前景将如何演变,同时评估SCADA系统与移动应用的安全状况。
SCADA与移动应用程序工业控制系统基础设施在本质上处于异构形式。其中囊括多个层级,且各个层级都专门用于某些特定任务。图一所示即为一套典型的工业控制系统结构。
图一:包含移动应用的现代工业控制系统基础设施
移动应用程序驻留在工业控制系统的多个层面当中,且可分为两大基本类别:本地(控制室)与远程。
本地应用程序:本地应用程序被安装在与现场工业控制系统设备直接对接的设备或者处理层当中(通过Wi-Fi、蓝牙或者串行接口接入)。
远程应用程序:远程应用程序允许工程师们利用远程通道接入工业控制系统服务器,具体包括互联网、VPN以及私有单元网络等。一般来讲,其仅允许监控工业流程; 不过也有部分应用程序允许用户对该流程加以控制/监督。此类应用程序具体包括远程SCADA客户端、MES客户端以及远程警报应用程序等。
与隶属于控制室分组的本地应用程序(通常运行在隔离环境当中)相比,远程应用程序通过安装在接入互联网的智能手机、甚至是配备有BYOD策略的企业内个人设备当中。换句话来说,远程应用程序的暴露程度更高,因此面临的威胁也更为严峻。
典型威胁与攻击
在本节当中,我们将探讨这类异构应用所面临的典型威胁与攻击实施方式。我们还将把这些威胁同应用类型映射起来。
目前存在三种主要的潜在威胁类型:
• 以物理方式指向设备或以“虚拟”方式指向设备数据的未经授权访问活动
• 通信通道入侵(简称 )
• 应用程序入侵
表一对上述威胁类型进行了汇总。
表一:CADA移动客户端威胁清单
根据以上列出的威胁因素,针对移动SCADA应用程序的攻击可分以为下两组。
直接/间接影响工业流程或工业网络基础设施:此类攻击活动可通过将数据发送至现场特定设备的方式实现。攻击者可利用多种方式实施此类攻击,具体包括绕过ACL/权限检查、访问需要特定权限的凭证或者绕过数据验证等。
入侵SCADA操作人员,使其在无意中执行对系统有害的操作:攻击者的核心思路在于建立一个可能导致SCADA操作员犯错的陷阱,并借此触发警报或令系统陷入停机状况。
测试方案
与我们两年前进行的研究类似,此次我们的分析与测试方法同样基于OWASP Mobile Top 10 2016。我们在对每款应用进行测试时,皆遵循以下步骤:
• 执行分析并填写测试清单
• 对客户端与后端执行模糊测试
• 如果必要,利用逆向工程方法执行深层分析
自此项研究的最后一次迭代以来,我们一直没有变更模糊测试的具体方法。我们曾在之前的白皮书当中对此作出过深入讨论,因此为了简洁起见,这里略去相关说明内容。
我们对此次评估中的测试清单进行了改进,其中包括:
• 应用程序目的、类型、类别以及基本信息
• 权限
• 密码保护
• 应用程序意图、导出提供方、广播服务等
• 原生代码
• 代码混淆
• 是否存在基于Web的组件
• 用于同后端进行通信的身份验证方法
• 会话、cookies以及令牌的操作正确性
• SSL/TLS连接配置
• XML 解析器配置
• 后端API
• 敏感数据处理方式
• HMI项目数据处理
• 安全存储
• 其它问题
已审查的供应商
在此次研究当中,我们分析了34家供应商,相关应用则随机抽取自谷歌Play Store当中的SCADA类应用。不过我们更倾向于选择可访问后端硬件或软件的应用程序,因为这能够帮助我们对更为广泛的攻击面加以测试。
除此之外,我们还排除了最后一次更新发生在2015年6月之前的应用程序,因为其可能已经被涵盖在我们的上一轮研究当中。只有在接下来的两年当中进行过更新的应用程序,才会被重新纳入我们的测试范围之内。
发现
我们在各应用程序及其后端当中发现了147项安全问题。根据OWASP Top 10 Mobile风险对这些问题进行了分类,同时为后端软件bug增加了一个新的类别。
表四所示为此次调查结果在各个类别当中的分布情况。“问题数量”一列指出了每个类别之下的问题数量,而“应用程序百分比”一列则表明有多少应用程序至少拥有一项归属于这一类别当中的漏洞。
表二:安全漏洞统计结果
在白皮书中,我们对每个类别作出了深入分析,同时确定了各高危漏洞的对应实例。大家可在文末查看白皮书以了解关于各项OWASP类别的深入分析结论。
整治与最佳实践
除了OWSP Top 10与OWASP Mobile Top 10 2016当中提到的众所周知的建议之外,移动SCADA客户端开发人员还可采取其它措施以进一步保护其应用程序与系统。
在以下清单当中,我们整理出了开发移动SCADA应用程序时最值得认真考量的核心条目:
• 请始终牢记,您的应用程序正是您工业控制系统的门户所在。这一前提将影响到您的所有设计决策,包括应如何处理您从应用程序当中接受输入内容——从更普遍的角度来讲,即您面向工业控制系统发送及接收到的一切内容。
• 避免一切可能导致SCADA操作人员受到蒙蔽或者接收到误导性信息的可能性,包括应用程序悄然崩溃到整个HMI项目陷入瘫痪。
• 遵循最佳实践。考虑OWASP Top 10、OWASP Mobile Top 10 2016以及软件安全24宗罪中所提出的各项原则性方针。
• 不要忘记对您的应用程序及后端服务器执行单元与功能测试,且至少需要保证涵盖各项基本安全功能——例如身份验证与授权要求。
• 采用密码/PIN码验证以防范此前提到的威胁。另外,避免使用非安全机制在设备上保存任何凭证(例如采取明文形式),同时充分利用Android平台自身提供的稳健且安全的存储机制。
• 绝对不要在未采用ACL的前提下将任何敏感数据存储在SD卡或者其它类似的载体当中。此类存储介质无法保护您的敏感数据。
• 为全部HMI项目数据提供保密性与完整性保障。您可以使用经过认证的加密方案并将加密凭证存储在安全的Android存储资源当中,或者使用密钥衍生函数(简称KDF)立足应用程序密码衍生出安全的密钥。
• 利用强协议加密全部通信内容,例如使用TLS 1.2配合椭圆曲线密钥交换与签名,以及AEAD加密方案。遵循最佳实践,并随着最佳实践的发展而不断更新您的应用程序。攻击手段一直在不断升级,您的应用程序自然也应如此。
• 认真检查产处理异常状况。如果某项错误无法恢复,请确保应用程序会通知用户并正常退出。在记录异常时,确保日志文件中不包含任何敏感信息。
• 如果您在应用程序当中使用Web组件,请考虑防止客户端注入活动(例如加密所有通信内容、验证用户输入内容等)。
• 将您应用程序内所需要的权限控制在最低限度。
• 在应用程序当中采用混淆与防篡改保护机制。
总结
我们上一轮研究已经过去了两年,而如今时代的脚步仍在不断向前。遗憾的是,时光的流转并没有带来更强大的安全性保障,反而带来了前所未有的高风险阶段。2015年,我们在分析的20款应用程序当中总计发现50个问题; 到2017年,我们在选定的34款应用程序当中发现了令人意外的147个问题。这意味着每款应用程序的平均漏洞增量达到1.6个。
我们因此得出结论:在”万物互联”的物联网时代之下,新技术的发展并没有提升移动SCADA应用程序的安全性水平。根据我们的研究结果,超过20%的已发现问题允许攻击者直接误导操作人员并/或直接/间接影响工业流程。
在2015年,我们曾在研究报告中写道:
SCADA与工业控制系统最近相继投入移动世界的怀抱,但旧有处理方法及缺陷仍然存在。希望随着移动软件的快速发展,这些问题能够很快得到解决。
现在我们必须承认,以往的观点实在是过于乐观,我们也承认以往的猜想并不正确。
过去几年以来,SCADA系统遭遇的安全事故正不断增加,而此类系统在攻击者眼中也变得越来越具有吸引力。此外,物联网/工业物联网的广泛普及也使得越来越多的移动设备开始接入工业控制系统网络。
因此,业界有理由高度关注SCADA移动应用的安全态势,否则必将追悔莫及。
完整报告下载:https://ioactive.com/pdfs/SCADA-and-Mobile-Security-in-the-IoT-Era-Embedi-FINALab%20(1).pdf
声明:本文来自安全内参,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。