工控网首页
>

应用设计

>

【多芬诺白皮书系列】解决SCADA/ICS安全补丁问题

【多芬诺白皮书系列】解决SCADA/ICS安全补丁问题

Tofino Security白皮书

版本号:1.1

出版日期:2013年3月27日

解决SCADA/ICS安全补丁问题

 

作者

Eric Byres,专业工程师(P. Eng.),ISA会员

Toifno Security 首席技术官 & 副总裁

eric.byres@belden.com

www.tofinosecurity.com

Tofino Security, Belden品牌

整理

青岛多芬诺信息安全技术有限公司

www.tofinosecurity.com.cn

service@tofinosecurity.com.cn

摘要

自2010年震网(Stuxnet)病毒出现以后,政府关于工业控制系统(ICS)和监控与数据采集系统(SCADA)产品的安全警报呈指数式增长。现在我们清楚地知道,这些系统在设计之初并未考虑安全因素,并且大多包含许多安全相关的漏洞。

如何解决这些漏洞是很重要的问题,尤其对于如今仍在使用的传统控制系统而言。在IT领域,防护漏洞的一种手段是狂打产品补丁。但在IT领域不断打补丁的策略是否适用于ICS领域呢?

本白皮书搜集整理了为控制系统产品如DCS, PLCRTU等的安全漏洞设计和配置补丁所要面临的挑战。我们查看了供应商数据,包括ICS产品的补丁配置率、未来最终用户意愿打补丁和实际打补丁的比例等。

我们最终确定用补偿性控制工具为基础的方案解决自动化和控制领域的安全漏洞问题。此方案是一种联合手段,通过迅速配置补偿性控制工具来配合定期打补丁。依靠这种联合策略,企业能够可靠地保障他们的控制系统安全。

欢迎来到补丁跑步机时代

自上世纪60年代电子工业控制系统(ICS)和监控与数据采集系统(SCADA)产品出现以后,他们就以安全、可靠、有效和便捷使用的设计而著称。但设计时却并没有考虑安全因素。因此,控制产品和他们使用的协议以及他们下层的子系统就都没有安全保障。

这一安全问题在震网(Stuxnet)病毒出现之前一直不被重视。该病毒专门针对西门子PLC和HMI产品,并引起了“安全研究员”和黑客组织对ICS和SCADA领域的关注。为寻找新的温和的攻击目标,人们转移了注意力,从IT产品如Windows® 系统转为从HMI软件,PLC CPU和RTU上寻找安全漏洞。当他们这样做时,他们对那些从未进行过基础安全测试的产品采用了高度复杂的漏洞发现工具和技术手段。不幸的结果是,安全研究员、黑客和政府现在正不断地发现、发布和利用控制系统产品的漏洞。

其中一个后果是政府安全警报呈指数式增长。美国政府工业控制系统-电脑应急反应小组(ICS-CERT)对工业产品中发现的已知安全漏洞进行追踪并发布了安全公告。在震网病毒出现(2010年6月)前的整个十年,ICS-CERT发布了涉及3个供应商的5个安全公告。在2011年公开披露了215个漏洞,104个安全公告,涉及39家供应商。到2012年底,总共公开披露的漏洞总数达569个。

这一令人担忧的发展趋势已由ICS-CERT的KevinHemsley确认;

在2011年ICS-CERT感受到了工业控制系统产品披露的报告漏洞753%的增长。全球的安全研究员们(白色、灰色和黑色领域)增加了对ICS产品领域及其对关键基础设施影响的研究。伴随着控制系统产品漏洞披露的迅速增加,预期之外的和充分披露的漏洞也呈现相同的趋势。ICS漏洞披露的整个进程都以引人注目地速度加快。

表1:2001年至2012年公开的ICS专门漏洞(按季度)。*幻灯片由Critical Intelligence Inc.公司的Sean McBride提供

 

通常来说,这些漏洞的披露早于ICS供应商为受感染的产品提供可用补丁。而且,40%的被披露补丁包含执行攻击代码。想要攻击控制系统的个人可以在并不了解控制系统或对他们的行为后果不清楚的情况下,下载开发工具并向攻击目标运行。而且他们确实下载和攻击了——ICS-CERT报告了2012年下半年20,000余起工业系统非授权的因特网登录。

还值得一提的是安全漏洞不只是在黑客和病毒侵入控制系统时才成为问题。在2006年8月19日,Browns Ferry核电厂的操作员不得不因“高功率,低流量”的潜在危险状况而“紧急停止”反应堆。控制水循环系统的冗余驱动器因控制网络的“超额流量”而瘫痪。这起事件由两方面原因共同导致,一是控制网上不必   要流量的过度;二是在1998年的某ISS安全公告上所指出的软件漏洞。

由于调查者、黑客和安全问题本质上是从IT领域转移出来的,因而从那儿寻求解决方案可能有用。在IT领域(尤其对个人电脑),安全漏洞问题是采取应用安全补丁的方法解决的。不幸的是,这导致了需要在整个产品周期不间断地循环打多种补丁。

举个例子,以Adobe®  Reader 9.0.为例。在2008年2月至2012年12月之间,Adobe发布了该产品的33个重要安全更新。也就是对单个软件应用而言大约每7个周就有一个补丁。加上大多电脑即使没有上百,也有几十个应用程序,因而一般的IT电脑需要至少每周打一次补丁(需要完全重启)。控制系统的操作员基本不可能容许生产中如此频繁的系统停车状况。

一个控制系统究竟需要多少补丁

当然,一个控制系统对补丁的需求可能比一个IT系统少。软件空间也可能更小或是代码质量更高。如果是这样,那么补丁的循环更新可能推迟为一年一次,或者与每年停工维护周期同步。这种情况下,打补丁可能是解决软件漏洞的一个可行方案。

为判定这一方案是否可行,笔者2008年秋天参与了一家美国冶炼厂的过程控制网络(PCN)分析工作。调查发现冶炼厂PCN有85台电脑(工作站和服务器)和类似数目的工业控制器。虽然只有78台电脑有可靠数据,但我们还是确定了有272个明显的进程和/或应用程序在这些控制系统电脑中运行。

在搜索国家漏洞库(NVD)后我们发现,这些进程中有48个含有不止一个严重的安全漏洞。扩展到整个冶炼厂PCN网络的话有5,455个公开已知漏洞,平均每个机器70个。在对Windows运用主动式操作系统补丁程序后,这一数据下降了近50%。不幸的是,由于应用程序没有自动修补功能,该厂仍存在2,284个公开漏洞。

但这只是问题的一部分。对于那些没有在2008年NVD(国家漏洞库)披露的的ICS应用程序呢?最近ICS-CERT数据清楚地表明SCADA和ICS应用程序存在漏洞。然而在2008年这些并没有出现在NVD中,原因是还没有人分析和报告这些产品。这些设施中究竟隐藏了多少这样的潜在漏洞?

为回答这个问题,我们用了一个简单的模型预测软件错误,也叫“缺陷密度”测算。学术研究显示大多商用软件的每一千行代码(KLOC)包含3到10个错误。分析表明这些错误有1%到5%会导致漏洞。

这在现实生活中意味着什么呢?  以Windows XP为例…其大约有四千万行代码(40,000KLOC)。截至2012年10月,国家漏洞数据库NVD列出了Windows XP的大约1106个中度或重度漏洞——漏洞/千行代码比率大约是0.0276。因此Windows XP只存在一些低端漏洞,从安全的角度看来,它还是不错的。

表2:NVD每年发现并记录的Windows XP系统漏洞数量。由于XP系统与在典型控制系统电脑中发现的应用程序有约相同数目的代码行,因而ICS系统的漏洞披露将呈现相似的趋势。

通过扫面各个电脑,我们估计在冶炼厂控制电脑的应用程序软件平均有60,181KLOC(千行代码)并未列示在NVD中。这种软件多数为ICS和SCADA软件,因而它们当时为何没被黑客组织研究就不足为奇了。当然,今天情况就不同了。

接下来,我们假定所有的这些ICS/SCADA应用程序含有高质量软件。以此假定出发,我们用0.03的低千行漏洞比率估计此冶炼厂电脑的潜在风险。结果是平均有1,805个等待发现的漏洞隐藏于每单个控制系统电脑中。这需要大量的补丁!

回顾Windows XP漏洞的历史,我们有理由假定所有这些SCADA/ICS漏洞不会一次性被发现。但我们能够预料到在开始的2到5年内当安全研究员团队刚开始调查工业领域产品期间,会有相对少量的漏洞被披露。这与我们现在所处的阶段很像。那么在5到10年的某个时间,当ICS/SCADA产品广泛暴露于安全详查之下,漏洞就会像雪崩一样出现,从而需要每周安装新的控制系统补丁。

值得注意的是,以上的分析并没有考虑到PLC和DCS控制器中的固件。它们也会有漏洞也需要在运行期间打补丁。控制器固件通常包含1,000KLOC到5,000KLOC, 所以根据以上的相同分析,我们预测每个固件可能含30到150个漏洞。同样的,如果漏洞披露的曲线与我们在IT界看到的类似,那么我们能够预料在近期内补丁数量相对少,而几年后漏洞数将大量增加。

以上分析清楚地表明,解决未来控制器和电脑中ICS/SCADA漏洞的补丁的发布频繁度极有可能超过大多ICS/SCADA操作员对系统停车的容忍度。与IT领域不同的是,大多工业进程需要每周7天24小时运行并要求较高的正常运行时间。每周为打补丁而重启系统对大多数的工业操作并不适用。 

补丁的影响

即使补丁安装过程不需要关闭进程(例如,通过对冗余控制器分阶段打补丁), 整个补丁策略还是存在问题。在某篇具有里程碑意义的关于操作系统软件漏洞发布后补丁的研究文章中,Yin等指出所有补丁中有14.8%到24.4%是错误的,且会对最终用户产生影响。

补丁也不能总按照它们被设计的那样有效解决安全问题。据Hemsley所说,ICS-CERT已经发现补丁在修复控制系统产品已报告漏洞时存在60%的失误率。很明显,错误的补丁可能既无法恰当修复漏洞,还“破坏”了目前控制系统存在的正常功能。

即使好的安全补丁也可能为控制系统操作员带来麻烦。正如我们之前讨论的,大多需要系统停车并重新运行生产进程。此外,他们可能还去掉了之前依靠控制系统发挥的功能。比如,震网(Stuxnet)病毒攻击的一个漏洞就是西门子的WinCC SQL数据库硬编码密码漏洞。当时许多安全分析员指责西门子公司未能尽快发布补丁用以去掉密码,但随后发现这种“治愈措施”甚至比疾病更严重。那些人工修改密码的用户很快发现许多关键的控制功能需要借助密码进入账号来实现。

更糟糕的是,补丁安装过程中通常需要具有特殊技能的员工在场。例如,2003年1月Slammer病毒攻击的漏洞实际上有个2002年发布的补丁(MS02-039)。但不幸的是,当时这补丁并没有帮助到在墨西哥湾一家拥有大量生产平台的石油公司。该公司在2002年夏天开始运行补丁,但补丁安装时的服务器重启需要Windows专家在场。由于极少有专家获得了进入平台的安全认证,因而当Slammer病毒在半年后发动攻击时很多平台都尚未打补丁。

没有补丁时的情况

当然,用补丁来解决漏洞问题的前提是供应商提供了补丁。据McBride所说,这种预期并不是一定的。就像在2012年1月,ICS-CERT记录的364个公开披露的漏洞中有一半是没有可用补丁的。

尽管有些安全专家指责供应商懒散或无动于衷,但确实是有许多因素阻碍了补丁的迅速发布。在2010年,笔者听一个ICS大供应商说内部测试显示出了关键任务产品的安全问题。但不幸的是,这些漏洞是由第三方提供的嵌入式OS中的一部分。该OS供应商不肯解决该漏洞,因而ICS供应商(或其用户)就面临无可用补丁的情况。

2011年的例子涉及到另一家ICS供应商,一个PLC隐秘通道的漏洞被一名独立的安全研究员发现并公开披露。该供应商原本能够设计补丁以去除该通道,但随后发现这些通道被那些为用户提供支持的疑难解决团队所广泛使用。而使事情更为复杂的是,该公司有一套非常繁琐的关于产品变更的质量保证(QA)程序,需要四个月才能完成。因此,即使用户想要牺牲技术支持来保障安全,他们仍要在等待正常的补丁测试完成期间面临4个月的系统空窗期。

ICS/SCADA用户想要打补丁吗

最后一个例子强调了用补丁手段解决控制系统安全的一个关键问题。许多用户不愿意为他们的控制器安装补丁,因为它可能使服务降级并增加停工期。上个例子中那个私下通知笔者的供应商指出对于已发布补丁,他们只有10%下载率。

笔者与ICS安全产品打交道的经验证实了在此领域补丁接受程度较低的事实。在20109月,多芬诺工业安全系统1.6版本发布。这一升级版本解决了在30天免费试用期内用户反映的一大堆安全和性能问题。由于低的初始接受率,所有注册用户均通过多个Email注册再次取得30天的试用期。两个月后,只有30%的多芬诺用户下载了免费的升级版本。而又有多少用户真正安装了还是未知数。

很明显的是,不断安装补丁的IT领域策略不适用于ICSSCADA系统。供应商在试图为公开漏洞“迅速”发布补丁时也面临多种问题,例如安全和QA的要求往往会延迟补丁发布。还有在其他情况下,甚至不存在一个合理安全的补丁。

ICS/SCADA用户面临相似的困难。最明显的是在为关键控制器和服务器打补丁时的停工时间和安全风险。对传统产品的补丁支持也存在困难——许多人预期把一个控制产品安置在典型IT支持窗口之外它就能运行20年。最后,像在Slammer病毒一例中指出的那样,补丁的安全安装需要有关键的人员协助。

通过补偿性工具解决漏洞问题

尽管不断打补丁的方法不适用于工厂车间,但还有其他备选方案。在远程通信领域,补偿性控制工具是一种被广泛接受的配合年度或半年度维修计划而安全地延迟补丁配置的手段。举例来说,骨干远程通信设备的供应商通常建议他们的用户用更改组态的方法阻止已知漏洞被开发,而非选用一个补丁。微软也为用户提供服务——在大多安全通知中有个叫“工作区”的版块,他们是如下定义的:

 “工作区是指那些没有修正潜在漏洞但能帮助在应用更新前阻止已知攻击媒介的设置或组态变更。”

截至今日,只有少数ICSSCADA供应商提供此方法,但补偿性控制工具的可能性是很多的。可能的补偿性工具包括:

  • 产品再组态(例如禁用HTTP端口)
  • 建议的防火墙规则(例如禁用所有的HTTP流量)
  • 建议的IDS规则/签名(例如为使用默认密码登录的安装签名插件)

这些控制方法的理念是在第一时间阻止可能利用已知漏洞攻击设备的任何信息。换句话说,如果你不能直接解决漏洞,那就确保有一个问题无法发生的环境。

用这种方法的用户能够获得几点明显的好处。首先,它很安全。那些最后显示有问题的补丁不能从系统移除。然而移除一个错误的补偿性工具却很平常。第二,补丁能够在控制器或电脑中影响整个操作系统。这通常导致无法预料的无意损失。另一方面,通过使用像关闭易受攻击的服务对象这种补偿性控制手段就很容易了解其对工业进程的影响。运用补偿性控制工具,资产所有者能够掌控他/她的一切。

相对于单一补丁策略,选择使用补偿性控制策略对控制系统供应商也有几点好处。首先,补偿性控制工具能够独立于产品的开发而发布,而且通常只需较少的QA程序。这就意味着能更迅速的响应用户的安全需求。除此之外,既然补偿性控制工具独立于产品固件,他们通常对产品功能影响较小,从而减少了用户使用其的阻力。最后,这种策略也适用于那些年代久远以致无法应用完整固件的传统产品。

当然使用补偿性控制工具也存在局限性。比如说,那些涉及加密会话(如HTTPS)的漏洞就不能用特殊防火墙规则来解决,因为防火墙通常不能解密和检测流量。但对我们看到的庞大数量的PLCDCS漏洞来说,这项技术应用的不错。

成功的条件

对使用在工厂车间的补偿性控制工具而言,有许多关键的必要条件。首先,在设计上他们对进程可靠性和安全性的影响必须要少。任何影响进程可靠性和安全的安全“解决方案”都将会被用户拒绝。

第二,任何补偿性控制工具应该易于配置。引用一名化工公司经理在控制系统安全会议上对ISA-99 委员会的发言:“我们必须使这项(安全)工作可以由车间主任、工程师或高级操作员在空闲时间就能操作,否则它就是失败的。”比如,如果补偿性控制工具包含硬件,那么相关领域的技术人员只需要完成:

1.   将硬件与DIN导轨或面板连接

2.   接上仪器电源

3.   插入网络电缆

4.   离开……

关于“零配置部署”策略的一个很好的例子是由许多安全集成系统(SIS)供应商所提供的“固定配置防火墙”。这些防火墙包括工厂配置协议和专门设计以匹配产品和漏洞需求的签名规则。他们的优点包括易于配置且在运行系统中安装时通常不需要系统停车。而且,他们在设计上易于升级从而能够应对可能出现的新威胁。 

3:一些典型的由自动化供应商提供的固定组态防火墙,用于保障关键任务,如安全系统和管道压缩机操作站的操作运行。

补偿性控制策略能够保护暴露的PLC

一个显示补偿性控制工具快速防御公开披露漏洞的很好的例子是2011年底施耐德电气公司的事例。2011年12月,安全研究员Ruben Santamarta公开披露了施耐德Modicon PLC产品线多处漏洞的细节。在Ruben披露之时,施耐德已经提出了应对两个报告漏洞的解决办法,但其他漏洞的补丁仍在研究开发当中。为在其他补丁尚在开发和测试阶段期间帮助用户保障PLC的安全,施耐德提供了一个名为“使用多芬诺SA产品缓解PLC漏洞问题”的使用指南。

该详细指南说明了如何在有害流量到达PLC之前使用赫斯曼多芬诺(Hirschmann Tofino)工业防火墙将其过滤。如图4所示,这些防火墙是安置在一个或多个PLC 前的。这些防火墙当时是根据为解决各漏洞而制定的规则配置的。

 

图4:施耐德电气公司推荐使用赫斯曼多芬诺(Hirschmann Tofino)防火墙作为补偿性控制工具应对公开披露的漏洞问题

在施耐德电气的例子中,有些缓解措施是很容易创建的。比如,阻止一个调试服务漏洞就很简单。用户唯一需要做的就是安装防火墙。只要他们没有专门添加规则允许调试流量,那么该漏洞问题就可以有效缓解。

其他的缓解措施可能复杂些。

例如,FTP缓冲区溢出漏洞(ICS-ALERT-12-020-03)本可以仅仅通过阻断一切FTP流量来解决。但不幸的是,由于FTP流量对一些进程非常关键,因而这种方法对多数设备并不可行。

为解决这一问题,多芬诺安全公司与施耐德电气公司合作创建了“特殊规则”。这些规则含有那些能够专门查找表明FTP协议正在被利用的行为的演算规则。如果这种行为被发现,那么FTP消息就会立刻被防火墙阻断。   

图5:专门设计用于检测和阻止利用HTTP和FTP缓冲区漏洞行为的两个“特殊规则”。这些规则包含设备定义,这样他们能够将流量自动分配给合适的PLC。

所有的这些缓解措施都可以通过“安全性配置文件”简单地实现。安全性配置文件是防火墙规则、专门规则以及旨在解决特定控制产品漏洞的协议定义的集合。该文件也包括传统防火墙无法完成的复杂检查(例如对尝试使用默认密码的主题搜索)。安全性配置文件与多芬诺防火墙的结合运用使得施耐德可以为他们的用户提供一个立即生效安全屏障,且不需要对自动化设备或网络配置做任何改变。

施耐德用户,ICS和SCADA系统运营者,都可以从这些单一的、易于配置的且不会影响系统的专门定制规则集合中受益。现场工程师也可以证实通过运用多芬诺测试模式,新的规则不会损害他们的操作运营。这些特点使得可以在不真实阻碍流量的情况下测试规则。结果是工业设施能够在不单单依靠PLC、DCS和网络硬件补丁的情况下保障自身免于新威胁的攻击。

不可否认的是ICS和SCADA系统有难度且面临迅速打补丁的风险。只有当补丁在结合使用恰当的更改工具并配合维护周期时才能发挥效用。此外,对所有控制产品而言,补丁策略离不开迅速发布的软件升级,且这些升级需设计合理并经过测试。

由于时下仍有大量传统的SCADA和ICS设备在配置运行中,这很有可能是例外情况而非通常情况。

与此同时,如果ICS-CERT,NVD和软件检测密度模型是可信的,在下个十年就会有许多控制系统漏洞需要补丁。这两个互相冲突的事实使得在IT领域用频繁地打补丁来解决漏洞问题的方案并不能在工业配置中取得成功。

这并不是建议供应商停止开发补丁或是让企业不再应用他们。直接解决产品的漏洞问题是可靠且长久安全的关键。但是正如我们在本文中解释的那样,一个依靠补丁快速开发随后配置的策略是注定要失败的。然而,通过结合使用补偿性控制工具和补丁的话,补丁运行期间就能够更加具有可调控性和安全性。在军事和网络研究中均证实,有效结合不同的安全防御策略能够最有效最可靠地抵御攻击。这同样适用于解决ICS和SCADA系统的安全漏洞问题。如果我们想要成功地阻止黑客、恶意软件和DoS利用漏洞攻击我们的生产或程序系统,我们就需要按时使用补丁,并配合使用迅速配置的补偿性控制工具。只有运用这种方法我们才能可靠地保障我们的控制系统安全。

 

投诉建议

提交

查看更多评论
其他资讯

查看更多

能源领域网络安全框架实施指南(英文版)

【指导手册】有效网络防御的关键控制

【操作指南】SCADA与过程控制网络防火墙配置指南

【指导手册】控制系统安全实践汇编

【操作指南】工业控制系统(ICS)安全指南