检查自动化系统项目安全漏洞的系统和方法与流程

文档序号:20608242发布日期:2020-05-01 22:18阅读:301来源:国知局
检查自动化系统项目安全漏洞的系统和方法与流程

相关申请的交叉引用

本申请要求于2017年9月14日提交的美国临时申请序列号62/558,540的权益,其全部内容通过引用合并于此。

本公开总体上涉及与检查用于自动化系统设计的项目安全漏洞相关的方法、系统和装置。所公开的技术可以被应用于例如图形项目设计工具,诸如西门子全集成自动化(tia)门户。

关于联邦政府赞助的研究或开发的政府权利声明

本发明是在政府支持下完成的,奖励号为:n00173-17-2-c005。政府对本发明享有一定的权利。



背景技术:

工业控制系统(ics)是用于自动化系统内工业过程控制的控制系统和相关联手段。由于它们控制的物理系统的重要价值,因此ics容易受到网络攻击,包括web服务器攻击、传感器篡改、恶意代码注入和其它方法。stuxnet是针对自动化系统的网络攻击的显著示例。这些攻击可导致重大故障、中断、甚至对财产和人员造成破坏。

传统ics具有已知的安全漏洞。术语“安全漏洞”指的是可被某个动作利用以在自动化系统或任何相关联的计算机系统内执行未授权动作的应用程序的硬件/软件(hw/sw)配置或源代码的任何弱点。如本文所使用的,安全漏洞可包含安全问题、漏洞和利用。

一些可公开获得的资源记录了可能影响ics的安全漏洞。例如,国土安全部(dhs)的ics网络紧急响应小组(ics-cert)数据库在关键基础结构网络上发出警报。西门子s7-1500plc漏洞的一个示例如图1a和1b中所示。图1a示出了关于cpu拒绝服务攻击的建议,而图1b提供了西门子产品的其它漏洞的示例列表。

尽管有诸如ics-cert数据库的资源,但就网络安全意识而言,普遍缺乏对自动化工程师的支持。例如,自动化工程师通常不具有信息技术(it)安全背景。相反,it安全专家通常不能将标准it安全方法应用于ics。

此外,由于自动化系统的复杂性,很难手动验证系统安全性。现有的ics安全标准要求持久的手动过程。现有的ics安全标准(诸如国际电工委员会(iec)62443)是方法,而不是软件工具。该过程很耗时,并且从开始到完成需要几天到几周的时间。此外,不会自动处理公共安全数据库(例如cert)中的信息。还应该指出的是,现有的ics安全标准仅是高级指南。因此,结果不够详细,自动化工程师无法改善其控制逻辑,诸如结构化控制语言(scl)代码。



技术实现要素:

本发明的实施方式通过提供与检查用于自动化系统设计的项目安全漏洞相关的方法、系统和装置,解决并克服了上述短处和缺点中的一个或多个。

根据一些实施方式,一种用于检查用于自动化系统设计的项目安全漏洞的系统包括安全数据库、互联网爬虫应用程序以及安全服务应用程序。安全数据库存储与自动化系统相关的已知软件漏洞的描述。互联网爬虫应用程序被配置为系统地浏览互联网,以查找与自动化系统相关的新软件漏洞,并将新软件漏洞加到安全数据库的索引中。安全服务应用程序从安全数据库中检索与自动化系统的硬件/软件配置相关的潜在软件漏洞。安全服务应用程序还识别与潜在漏洞相关的策略。每个策略都描述潜在漏洞以及响应于检测到潜在漏洞而待执行的动作。安全服务将策略应用于硬件/软件配置和与自动化应用程序相对应的软件代码,以识别一个或多个实际漏洞。然后,安全服务应用程序向用户显示实际漏洞。

根据其它实施方式,用于检查用于自动化系统设计的项目安全漏洞的计算机实现的方法包括:从ide接收自动化系统的硬件/软件配置以及与自动化应用程序相对应的软件代码的描述。从安全数据库中检索与硬件/软件配置相关的一个或多个潜在软件漏洞。识别与潜在漏洞相关的一个或多个策略。每个策略都描述潜在漏洞以及可以执行以缓解潜在漏洞的一个或多个动作。将该策略应用于硬件/软件配置和软件代码,以识别一个或多个实际漏洞。然后,这些实际漏洞可在ide中显示。

根据其它实施方式,集成开发环境(ide)系统包括ide和客户端应用程序。ide包括第一图形用户界面(gui)组件,其允许指定自动化系统的硬件/软件配置。ide还包括第二gui组件,其允许输入与自动化应用程序相对应的软件代码。客户端应用程序与ide集成。该应用程序被配置为将硬件/软件配置和软件代码传输到远程安全服务应用程序。客户端应用程序从远程安全服务应用程序接收软件代码中存在的一个或多个漏洞的识别。这些漏洞然后可在ide中显示。

根据下面参考附图进行的说明性实施方式的详细描述,本发明的其它特征和优点将变得显而易见。

附图说明

当结合附图阅读时,根据以下详细描述可以最好地理解本发明的前述和其它方面。为了说明本发明,在附图中示出了当前优选的实施方式,然而,应当理解,本发明不限于所公开的特定手段。附图中包括以下附图:

图1a示出了关于cpu拒绝服务攻击的建议;

图1b提供了西门子产品的其它漏洞的示例列表;

图2示出了根据一些实施方式的用于检查用于自动化系统设计的项目安全漏洞的系统;

图3示出了从ics-cert网站检索的示例网页;

图4示出了ide如何显示与安全漏洞相关的信息的示例;以及

图5示出了可以在其内执行工程安全漏洞识别服务的示例性计算环境。

具体实施方式

在此描述的系统、方法和装置总体上涉及检查用于自动化系统设计的项目安全漏洞。简而言之,本文描述的技术使用与集成开发环境(ide)集成或与ide结合操作的安全漏洞客户端应用程序。安全漏洞客户端应用程序与远程安全漏洞识别服务通信,以识别程序员输入的hw/sw配置和/或源代码内的安全漏洞。一旦识别出这些安全漏洞,便将它们传递回客户端应用程序以向用户显示。如下所述,在一些实施方式中,远程安全漏洞识别服务还可以提供用于解决所识别的安全漏洞的一种或多种缓解技术的列表。

图2示出了根据一些实施方式的用于检查用于自动化系统设计的项目安全漏洞的系统。工程安全漏洞爬虫220是互联网爬虫应用程序,该互联网爬虫应用程序被配置为系统地浏览互联网上的安全漏洞资源225,以查找与自动化系统相关的新软件漏洞。一旦工程安全漏洞爬虫220识别新的软件漏洞,该漏洞就被存储在安全漏洞数据库210中。除了该自动处理之外,在一些实施方式中,用户可以在漏洞被识别时手动填充安全漏洞数据库210。

安全漏洞资源225是包括一个或多个网页的网站,该网页识别与自动化系统相关的软件漏洞。例如,在一个实施方式中,安全漏洞资源225可以包括官方资源,诸如来自dhs的ics-cert数据库。安全漏洞资源225还可以包括讨论或描述安全漏洞的在线论坛和已知的“黑客”站点。在一些实施方式中,工程安全漏洞爬虫220(如下所述)可以使用针对特定自动化系统(例如,产品名称、版本等)的关键字来执行整个互联网的搜索,以识别应当被包括在安全漏洞资源225中的网站。

可以使用本领域中通常已知的各种数据库系统来实现安全漏洞数据库210。例如,在一些实施方式中,可以使用基于sql的数据库。在其它实施方式中,已知软件漏洞的描述可以存储在具有表等效结构的no-sql数据库中。如本领域中所理解的,术语“no-sql”用于定义在其设计中不相关的一类数据存储。no-sql数据库有多种类型,通常可以根据其基础数据模型进行分组。这些分组可以包括使用基于列的数据模型(例如,cassandra)、基于文档的数据模型(例如,mongodb)、基于密钥值的数据模型(例如,redis)和/或基于图表的数据模型(例如allego)的数据库。可以使用任何类型的no-sql数据库来实现本文所述的各种实施方式。例如,在一个实施方式中,mongodb软件被用来提供由本文描述的系统使用的数据库的基础功能。

工程安全漏洞爬虫220包括机器学习模型220a,该机器学习模型处理从安全漏洞资源225收集的网页和其它信息,以提取存储在安全漏洞数据库210中的相关信息。在一些实施方式中,机器学习模型220a是自然语言处理(nlp)组件。nlp组件分析以自然语言描述的从安全漏洞资源225收集的网页和其它信息,并对它们进行处理,以便使该信息对于工程安全漏洞识别服务205(如下所述)是可理解的。nlp组件可以包括例如自然语言解析器,并且命名实体链接器构成主处理渠道。

工程安全漏洞爬虫220可以连续扫描互联网上的漏洞,并且仅在机器学习模型220a识别了某些术语时才触发信息的存储。例如,在一个实施方式中,训练机器学习模型220a以识别一个或多个字段:特定产品的名称;产品的版本号;漏洞类型;漏洞名称或其它标识符;以及命名实体提取和实体链接单元。用于训练和使用机器学习模型的技术通常是本领域技术人员所知晓的。因此,本文不对这些技术进行详细描述。图3示出从ics-cert网站检索的示例网页。框305、310突出显示了机器学习模型220a可以从网页中提取的信息。

继续参考图2,工程安全漏洞识别服务205是例如在基于私有或公共云的计算系统中执行的软件应用程序。简而言之,工程安全漏洞识别服务205接收用户经由ide215提供的hw/sw配置和软件代码。解析器205b应用nlp模型将源代码和hw/sw配置解析为自然语言文本的组成部分,其有助于与软件漏洞相关的下一识别步骤。工程安全漏洞识别服务205从安全漏洞数据库210中检索与hw/sw配置相关的潜在安全漏洞。然后,对源代码进行分析,以确定代码中是否存在任何漏洞。

策略管理器205a管理指示在代码中检测到安全漏洞时采取什么动作的策略。这样,“策略”可以理解为将安全漏洞与动作联系起来的规则。例如,该动作可以是为用户显示警报或建议缓解代码中漏洞的方法。对于后一种情况,可以使用修复顾问205e组件针对在给定的hw/sw配置或源代码中发现的特定安全漏洞建议一种可能的缓解技术。例如,该策略可以指示可以通过安装库的更新版本或链接到更新版本来缓解与使用特定库的过时版本相关的特定漏洞。在一些情况下,可以在从安全漏洞资源225检索到的信息中提供缓解动作;在其它情况下,策略管理器205a可以记录用户如何缓解安全漏洞并使用该知识来生成策略。策略检查器205c使用存储在策略管理器205a中的信息来识别由解析器205b处理后的源代码和/或sw/hw配置中的安全漏洞。

代码覆盖率205d组件度量由策略检查器205c对软件块代码测试的程度。例如,这可以通过根据一些度量来量化代码的大小并且然后一直跟踪所检查的代码来执行。作为简单的示例,考虑具有1000行代码的应用程序。在处理了100行源代码之后,代码覆盖率205d组件将指示对代码进行了10%的检查,在处理了200行代码之后,将指示对代码进行了20%的检查,等等。

历史记录205f记录与软件安全漏洞识别过程相关的趋势和历史数据,这可能有助于快速解决类似的未来事件。例如,如果用户在找到最优缓解策略之前尝试了用于解决安全漏洞的几种不同的缓解技术,则当向用户呈现缓解选项时,修复顾问205e可以记录并使用该信息,以优先考虑图中的最优缓解策略。

问题报告器205g报告在执行给定项目硬件/软件配置的服务时发现的任何问题。从概念上讲,问题报告器205g可以理解为用于输出因工程安全漏洞识别服务205的操作而发生的任何错误的装置。在一些实施方式中,问题报告器205g将问题本地存储在数据文件中,可以在工程安全漏洞识别服务205的维护期间对该数据文件进行审查。在其它实施方式中,问题发生时,问题可以被传送到工程安全漏洞识别客户端215a(如下所述)。

ide215是允许计算机程序员开发自动化应用程序的软件应用程序。ide215可以包括例如源代码编辑器和调试工具。另外,ide215可以包括向ide215添加特定特征的一个或多个扩展(或“插件”)。图2的示例示出了一个扩展:工程安全漏洞识别客户端215a。工程安全漏洞识别客户端215a是通过网络连接(例如,经由互联网)将ide215与工程安全漏洞识别服务205集成的软件组件。因此,当用户输入硬件/软件配置时,该信息将传递到工程安全漏洞识别服务205。这进而触发了如上所述的策略管理器205a。类似地,当用户在215的源代码编辑器中输入代码时,该信息由工程安全漏洞识别客户端215a传递给工程安全漏洞识别服务205。在一些实施方式中,响应于用户采用工程安全漏洞识别客户端215a执行的一些动作(例如,单击按钮),整个源代码将传递到工程安全漏洞识别服务205。在其它实施方式中,工程安全漏洞识别客户端215a在输入时将源代码发送到工程安全漏洞识别服务205。例如,工程安全漏洞识别客户端215a可以执行循环,该循环周期地(例如1秒)检查源代码编辑器中的更改,并且如果存在更改,则将这些更改发送到工程安全漏洞识别服务205。

当漏洞由工程安全漏洞识别服务205识别时,它们被发送到工程安全漏洞识别客户端215a以在ide215中显示。可以使用本领域已知的任何技术在工程安全漏洞识别服务205与工程安全漏洞识别客户端215a之间传输数据。例如,在一些实施方式中,可以使用诸如可扩展标记语言(xml)或javascript对象符号(json)的文本格式。

图4示出了ide215如何显示信息的示例。在该示例中,ide215是西门子全集成自动化(tia)portaltm;然而,应当理解,图4中呈现的一般概念可应用于提供类似功能的任何ide。图4中所示的ide是多面板应用程序。最左边的面板示出硬件配置信息。中间面板示出源代码编辑器,在该示例中,该源代码编辑器显示功能输入和结构化控制语言(scl)源代码。最右边的面板显示从工程安全漏洞识别客户端215a接收到的与漏洞相关的信息。

图4中最右边的面板的顶部示出漏洞警报。如图所示,单击警报可使得浏览器打开相关网页(例如,dhsics-cert网页)。在其它实施方式中,可以使用其它技术来显示与漏洞相关的信息。例如,在一个实施方式中,单击警报可以使得显现描述漏洞的模式文本框。最右边面板的底部示出了与用于快速导航(例如,当源代码长达几页时)的应用程序相关联的所有漏洞。最右边的面板也可示出用于解决漏洞的建议的缓解技术。单击单个缓解技术使缓解技术立即显示。例如,模式文本框可显示缓解技术。可替代地,在一些实施方式中,工程安全漏洞识别客户端215a被深度地集成到源代码编辑器中,使得工程安全漏洞识别客户端215a可以在编辑器本身中突出显示存在问题的代码,并提供解决该漏洞的建议的代码编辑。然后,用户可以选择接受或拒绝更改。可以类似地识别出由于硬件配置引起的任何问题,并通过ide215将其呈现给用户。这些问题可以由用户进行审查,并且在修复或标记为已审查后,它们将从列表中消失。

图5示出了其内可以执行工程安全漏洞识别服务205的示例性计算环境500。计算环境500包括计算机系统510,该计算机系统是可以在其上实现本发明的实施方式的计算系统的一个示例。诸如计算机系统510和计算环境500的计算机和计算环境是本领域技术人员已知的,并且因此在此简要描述。

如图5中所示,计算机系统510可以包括诸如系统总线521的通信机制或用于在计算机系统510内传递信息的其它通信机制。计算机系统510还包括与系统总线521联接的一个或多个处理器520,用于处理信息。处理器520可以包括一个或多个中央处理单元(cpu)、图形处理单元(gpu)或本领域中已知的任何其它处理器。

计算机系统510还包括联接到总线521的系统存储器530,用于存储将由处理器520执行的信息和指令。系统存储器530可以包括以易失性和/或非易失性存储器(诸如只读存储器(rom)531和/或随机存取存储器(ram)532)形式的计算机可读存储介质。系统存储器ram532可以包括其它动态存储设备(例如,动态ram、静态ram和同步dram)。系统存储器rom531可以包括其它静态存储设备(例如,可编程rom、可擦除prom和电可擦除prom)。另外,系统存储器530可以用于在处理器520执行指令期间存储临时变量或其它中间信息。基本输入/输出系统(bios)533包含可在rom531中存储的基本例程,该基本例程有助于在计算机系统510内的元素之间(诸如在启动期间)传输信息。ram532可以包含数据和/或程序模块,该数据和/或程序模块可以被处理器520立即访问和/或当前由处理器520操作。系统存储器530可以附加地包括例如操作系统534、应用程序535、其它程序模块536和程序数据537。应用程序535可以包括例如与工程安全漏洞识别服务205相对应的一个或多个可执行应用程序。

计算机系统510还包括联接到系统总线521的磁盘控制器540,以控制用于存储信息和指令的一个或多个存储设备,诸如硬盘541和可移动介质驱动器542(例如,光盘驱动器、固态硬盘等)。可以使用适当的设备接口(例如,小型计算机系统接口(scsi)、集成设备电子器件、通用串行总线(usb)或firewire)将存储设备添加到计算机系统510。

计算机系统510还可以包括联接到总线521的显示控制器565,以控制诸如液晶显示器(lcd)的显示器566,以向负责编程或维护工程安全漏洞识别服务205的计算机用户显示信息。计算机系统包括输入接口560和一个或多个输入设备,诸如键盘562和指向设备561,用于与计算机用户进行交互并将信息提供给处理器520。指向设备561可以例如是鼠标或指向杆,用于将方向信息和命令选择传送给处理器520并用于控制显示器566上的光标移动。显示器566可提供触摸屏界面,该界面允许输入以补充或替换指向设备561对方向信息和命令选择的通信。

计算机系统510可以响应于处理器520执行包含在诸如系统存储器530的存储器中的一个或多个指令的一个或多个序列,来执行本发明实施方式的部分或全部处理步骤。此类指令可以从诸如硬盘541或可移动介质驱动器542的另一计算机可读介质读入系统存储器530。硬盘541可以包含本发明的实施方式使用的一个或多个数据存储和数据文件。数据存储内容和数据文件可以加密以提高安全性。处理器520还可以在多处理装置中采用以执行系统存储器530中包含的一个或多个指令序列。在替代实施方式中,可以使用硬连线电路代替软件指令或与软件指令结合。因此,实施方式不限于硬件电路和软件的任何特定组合。

如上所述,计算机系统510可以包括至少一个计算机可读介质或存储器,用于保存根据本发明的实施方式编程的指令并且用于包含本文描述的数据结构、表、记录或其它数据。如本文所使用的术语“计算机可读介质”是指参与向处理器520提供指令以供执行的任何介质。计算机可读介质可以采用许多形式,包括但不限于非易失性介质、易失性介质和传输介质。非易失性介质的非限制性示例包括光盘、固态驱动器、磁盘和磁光盘,诸如硬盘541或可移动介质驱动器542。易失性介质的非限制性示例包括动态存储器,诸如系统存储器530。传输介质的非限制性示例包括同轴电缆、铜线和光纤,包括构成总线521的线。传输介质还可以采用声波或光波的形式,诸如在无线电波和红外数据通信期间生成的那些声波或光波。

当在联网环境中使用时,计算机系统510可以包括调制解调器572,用于通过网络571与执行工程安全漏洞识别客户端215a的开发者计算机580建立通信。调制解调器572可以经由用户网络接口570或经由另一适当的机制连接至总线521。应当注意,尽管在图5中呈现的示例中,开发者计算机580被示为通过网络571连接到计算机系统510,但是在本发明的其它实施方式中,计算机系统510可以直接连接到开发者计算机580。例如,在一个实施方式中,计算机系统510和开发者计算机580共同位于同一房间或相邻房间,并且使用本领域中通常已知的任何传输介质连接设备。

网络571可以是本领域中通常已知的任何网络或系统,包括互联网、企业内部网、局域网(lan)、广域网(wan)、城域网(man)、直接网络连接或一系列连接、蜂窝电话网络或能够促进计算机系统510与其它计算机(例如,开发者计算机580)之间的通信的任何其它网络或介质。网络571可以是有线的、无线的或其组合。可以使用以太网、通用串行总线(usb)、rj-11或本领域中通常已知的任何其它有线连接来实现有线连接。可以使用wi-fi、wimax和蓝牙、红外、蜂窝网络、卫星或本领域通常已知的任何其它无线连接方法来实现无线连接。另外,几个网络可以单独工作或彼此通信以促进网络571中的通信。

可以用硬件和软件的任何组合来实现本公开的实施方式。另外,本公开的实施方式可以被包括在具有例如计算机可读的非暂态介质的制品(例如,一个或多个计算机程序产品)中。介质在其中实施了例如用于提供和促进本公开的实施方式的机制的计算机可读程序代码。制品可以作为计算机系统的一部分包含在内,也可以单独出售。

尽管本文已经公开了各个方面和实施方式,但是其它方面和实施方式对于本领域技术人员将是显而易见的。本文所公开的各个方面和实施方式是出于说明的目的,而不是旨在进行限制,真实的范围和精神由所附权利要求书指示。

除非另有说明,从以下讨论中显而易见,否则应理解,诸如“应用”、“生成”、“识别”、“确定”、“处理”、“计算”、“选择”等可以指代计算机系统或类似的电子计算设备的动作和过程,该计算机系统或类似的电子计算设备将表示为计算机系统的寄存器和存储器内的物理(例如,电子)数量的数据操纵和转换为类似地表示为计算机系统存储器或寄存器或其它此类信息存储、传输或显示设备内的物理量的其它数据。可以使用计算机软件来实现本文描述的方法的实施方式。如果以符合公认标准的编程语言编写,则可以编译旨在实现该方法的指令序列,以在各种硬件平台上执行以及与各种操作系统进行接口。另外,没有参考任何特定的编程语言来描述本发明的实施方式。应当理解,可以使用各种编程语言来实现本发明的实施方式。

如本文中所使用,可执行应用程序包括代码或机器可读指令,用于使处理器调节以例如响应于用户命令或输入,以实现预定功能,诸如操作系统、上下文数据采集系统或其它信息处理系统的功能。可执行过程是一段代码或机器可读指令、子例程或代码的其它不同部分,或者是可执行应用程序的一部分,用于执行一个或多个特定过程。这些过程可以包括:接收输入数据和/或参数;对接收到的输入数据执行操作和/或响应于接收到的输入参数执行功能;以及提供结果输出数据和/或参数。

如本文所使用的“图形用户界面”(gui)包括一个或多个显示图像,该显示图像由显示处理器生成并且使用户能够与处理器或其它设备以及相关联的数据采集和处理功能进行交互。gui还包括可执行过程或可执行应用程序。可执行过程或可执行应用程序调节显示处理器以生成表示gui显示图像的信号。这些信号被提供给显示设备,该显示设备显示图像以供用户观看。处理器在可执行过程或可执行应用程序的控制下,响应于从输入设备接收到的信号来操纵gui显示图像。这样,用户可以使用输入设备与显示图像进行交互,从而使用户能够与处理器或其它设备进行交互。

本文的功能和过程步骤可以响应于用户命令而自动地或全部地或部分地执行。自动执行的活动(包括步骤)响应于一个或多个可执行指令或设备操作而执行,而无需用户直接启动活动。

附图的系统和过程不是唯一的。可以根据本发明的原理导出其它系统、过程和菜单,以实现相同的目的。尽管已经参考特定实施方式描述了本发明,但是应当理解,本文示出和描述的实施方式和变型仅用于说明目的。在不脱离本发明的范围的情况下,本领域技术人员可以对当前设计进行修改。如本文所述,可以使用硬件组件、软件组件和/或其组合来实现各种系统、子系统、代理、管理器和过程。本文的任何权利要求元素均不根据35u.s.c.112(f)的规定解释,使用短语“用于……的装置”明确地叙述该元素。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1