【专家博客】DNP3漏洞(二)——为何DPI防火墙会是工业(安全)唯一的希望?
DNP3漏洞(二)——为何DPI防火墙会是工业(安全)唯一的希望?
Eric Byres,发表于 2013年11月12日
在上周的实用SCADA安全博客中,我讨论了在DNP3 SCADA主设备中发现的新漏洞是如何让NERC的电子安全边界(ESP)理念出现纰漏的。Dale Peterson在他的博客“为何Crain/Sistrunk(译者注:DNP3漏洞发现者)漏洞如此重大?”中首次提到了这一问题。随即Darren Highfill发表了一篇博客称该漏洞甚至无需攻击者越过防护屏障。DNP3的串行线路连接着上百万个物理上不安全的垫式或杆式安装设备。只要登录进其中的一个这样的设备就会使系统面临大范围的攻击。由于根本无法将每个这种设备都囊括进安全边界中,因此NERC的电子安全安全理念是存在致命缺陷的。
这种潜在的后门是否也存在于电网中呢?图片来源:美国劳工部
请勿将婴儿和洗澡水一同倒掉
Darren是业内翘楚,博文中他通过细致的分析说明了攻击者是如何运用远程的杆式或垫式安装设备进入系统的。但如我在上周提到的,我认为Darren在他的博文中犯了一个技术错误。
在我注意到这一点后,我试图在Darren的页面上写评论,但他已关闭了博客的评论功能。因此我打算通过我们的博客表达这一看法。以下是我对Darren的评论:
你好,Darren
这是一篇很棒的文章。你提到的这些情境确实存在严重的安全隐患,而且亟待行业解决。在我看来,关键的问题不是DNP3客户端存在的安全问题,而是这类攻击揭示出所有ICS协议都存在问题。
我不同意你的以下说法“你尽可以对其进行全面的深度包检测——但你不会发现任何签名”。根据我的经验,在这些情境下深度包检测(DPI)仍是有效的防御手段——事实上也许是唯一的。
签名无关紧要。
DPI防火墙是不需要签名的。类似于Snort的入侵检测系统(IDS)也许需要,但任何好的DPI防火墙都采用消息包合理性分析,以此确定消息包格式是否存在任何错误。在多芬诺安全公司我们称之为对消息包传输的“合规性检查”。
例如,当DNP3消息的起始值大于对应的结束值时,Adam Crain的漏洞之一便会出现。这就会破坏应用程序,因为它违反了一个通用的隐含假设,即客户端至少需要一个测量值。而这就会导致负计数循环。
现在一个正确的DNP3实施策略能够确保任何消息的结束值都大于起始值,并将那些格式错误的消息过滤掉。但如同Crain指出的那样,现实中还有一些错误的DNP3实施策略。所以我们就需要补丁或补偿性控制来辅助。
在等待补丁的过程中
其中一个解决方案是运用正确的DNP3 DPI 防火墙*。只要设计合理,它就能够确保结束值大于起始值。如果不这么做,那么防火墙会阻断消息包,而不管数据内容是什么。这样不论攻击者在他/她的有效载荷上加上什么内容,也不管他/她如何用像NOP slide这样的技术混淆传输信息,防火墙检查技术都可以检测出来并阻挡攻击。若攻击者在消息包中使用的是一对有效的数值,则漏洞开发工具就无法奏效,因为漏洞需要结束值小于起始值才能导致负计数问题。
当然DPI防火墙也不是解决所有问题的万能钥匙。例如,在DPI实施策略不进行检查的无效领域里,若存在一些未知漏洞策略,是建立在不起眼的组合基础上的,那么攻击也许会成功。但前提是整个漏洞大类都未引起怀疑。若DPI防火墙的设计者能联想到某个可能出现的漏洞,那么他们就可以设计出检查整体攻击大类的方法。他们完全不必像传统IDS那样设计专门的语句或开发签名——那种做法已被证实是浪费时间的。
最后我想说,你做的情境分析真的很棒。但当你说技术手段能或不能解决这些问题时,应慎重些。
Regards,
Eric
好的测试工具能让ICS系统更加安全
在本篇博客的结尾,我想指出以上内容说明了为何像Adam使用的发现工具如此有用。若Adam能够找到发现消息包的方法,那DPI防火墙的设计者们就能想办法检测和阻挡那些消息包,不论漏洞是否被发现。这种安全理念的重点在于漏洞预防而不是开发检测。
因此事实是,除非我们想要切断客户端与RTU的通信,否则DPI防火墙就可能是如今工业领域唯一的选择。若不这么做,那最终用户们只能等到他们的SCADA产品中的每个可能的漏洞被Adam这样的研究员发现然后由供应商来解决。鉴于我们目前的进展,我对第二个选择不抱希望。
多芬诺安全公司尚未开发出专为DNP3协议设计的DPI防火墙,但我们正在研发当中。
更多精彩资讯与海量信息,请关注我们的官方网站与新浪微博:青岛多芬诺。
提交
能源领域网络安全框架实施指南(英文版)
【指导手册】有效网络防御的关键控制
【操作指南】SCADA与过程控制网络防火墙配置指南
【指导手册】控制系统安全实践汇编
【操作指南】工业控制系统(ICS)安全指南