CN106462429A - 出于安全的原因对各种软件模块的多个功能等效的变型的动态修补 - Google Patents

出于安全的原因对各种软件模块的多个功能等效的变型的动态修补 Download PDF

Info

Publication number
CN106462429A
CN106462429A CN201580033978.0A CN201580033978A CN106462429A CN 106462429 A CN106462429 A CN 106462429A CN 201580033978 A CN201580033978 A CN 201580033978A CN 106462429 A CN106462429 A CN 106462429A
Authority
CN
China
Prior art keywords
module
software
modification
processor
identifier
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201580033978.0A
Other languages
English (en)
Inventor
N·伊斯兰
R·古普塔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN106462429A publication Critical patent/CN106462429A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44536Selecting among different versions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)

Abstract

用于对在计算设备上执行的基于多样性的软件进行动态修补的方法、设备和非暂时性存储介质。可以从在执行软件时将使用的可用模块变型列表中,选择软件所使用的各种模块的许多变型中的一个变型。一种用于更新软件的实施例方法可以包括:获得或者接收用于指示特定模块变型的通知,所述特定模块变型不应当被用来作为针对软件的模块;以及响应于所述通知,从针对所述模块的可用模块变型列表中移除所述模块变型。在一些实施例中,该通知可以是移动设备从远程服务器接收的,以及进一步地该通知不包括该软件在运行时期间能够用来作为模块的数据。在一些实施例中,该模块变型可以是有缺陷的、过时的以及被识别为被恶意软件利用的之中的一者。

Description

出于安全的原因对各种软件模块的多个功能等效的变型的动 态修补
背景技术
今天的大多数恶意软件是利用特定软件中的已知易损性的根‘家庭’的变体。例如,不同的恶意软件变体可能抓住特定的操作系统版本、固件或者实现方式中的缺陷、结构、特性或编程错误。通常,恶意软件通过与远程源的网络连接(例如,从“应用”商店下载的软件)和/或经由设备到设备通信(例如,短消息服务(SMS)文本消息、电子邮件等等),来传播到计算设备。尽管移动设备在本质上通常是模块化和具有多样性,使用离散软件(例如,即插即用)来支持各种芯片、驱动程序和外围设备,但恶意软件在移动设备行业中是非常普遍的。用于从被感染的设备中移除恶意软件或者使恶意软件无效的传统软件补丁,可能需要几个月(例如,15-20月)或者几年的时间才能推出。例如,代码修复、固件升级和/或模块更新在终端用户设备处被收到之前,需要由各方进行制作、测试、批准和运输。另外,这种修复可能是昂贵的,其需要移动设备通过下载和安装冗余的或者不必要的代码副本而加重它们的资源和连接。
发明内容
各个实施例提供了用于对在移动设备上执行的基于多样性的软件进行动态修补的方法、系统、设备和非暂时性处理器可读存储介质。一种实施例方法可以包括:获得用于指示模块变型的通知,所述模块变型不应当被用来作为针对软件的模块;以及响应于获得所述通知,从针对所述模块的可用模块变型列表中移除所述模块变型,其中,所述可用模块变型列表中的一个可用模块变型在所述软件的运行时被移动设备处理器激活作为所述模块。各种实施例可以利用在软件中使用的任意数量的不同的基于多样性的模块来实现,每个模块都具有多个模块变型以提供多样性。在一些实施例中,所述通知是移动设备从远程服务器接收的。在一些实施例中,该通知可以不包括软件能够用来作为所述模块的数据或者可执行代码。在一些实施例中,模块变型可以是有缺陷的、过时的、以及被识别为被恶意软件利用的之中的一者。在一些实施例中,所述通知可以是移动设备在软件的运行时期间接收的。
在一些实施例中,该方法还可以包括:在所述软件的运行时,从针对所述模块的所述可用模块变型列表中选择第一标识符;以及激活与所选择的第一标识符相关联的可用模块变型,以在软件的运行时期间用来作为所述模块。在一些实施例中,在所述软件的运行时,从针对所述模块的所述可用模块变型列表中选择所述第一标识符,可以包括:使用随机选择算法,从可用模块变型列表中选择第一标识符。在一些实施例中,激活与所选择的第一标识符相关联的可用模块变型,以在软件的运行时期间用来作为所述模块,可以包括:在所述软件的运行时生成所述可用模块变型,或者在所述软件的运行时装载预先生成的所述可用模块变型。
在一些实施例中,所述模块可以是软件在运行时使用的多个模块中的一个模块,一种实施例方法还可以包括:在所述软件的运行时,从与所述多个模块中的其它模块相关联的可用模块变型列表中选择标识符;以及激活针对与所选择的标识符相关联的所述多个模块中的所述其它模块的可用模块变型,以在所述软件的运行时期间用来作为所述其它模块。
另外的实施例包括:配置有处理器可执行指令以执行上面所描述的方法的操作的移动计算设备。另外的实施例包括在其上存储有处理器可执行指令的非暂时性处理器可读介质,其中所述处理器可执行指令被配置为使移动计算设备执行上文所描述的方法的操作。另外的实施例包括具有多个移动计算设备的通信系统,其中所述多个移动计算设备配置有处理器可执行指令以执行上文所描述的方法的操作。
附图说明
被并入本文并且构成本说明书一部分的附图,描绘了本发明的示例性实施例,并且连同上文给出的概括描述以及下文给出的详细描述一起来解释本发明的特征。
图1是适合于在各个实施例中使用的包括多个移动设备的通信系统的组件框图,其中所述多个移动设备被配置为执行与服务器相关联的软件。
图2A是示出适合于在各个实施例中使用的一种示例性移动设备的组件框图,其中该移动设备被配置为使用多个可能的模块变型中的一个可能的模块变型,来实现已安装软件的运行时的模块。
图2B是示出供移动设备使用软件的运行时的模块变型的实施例方法的过程流程图。
图2C是示出供移动设备发送报告消息的实施例方法的过程流程图,其中报告消息用于指示模块变型遇到的问题。
图3A-3B是示出适合于在各个实施例中使用的一种示例性移动设备的组件框图,其中该移动设备被配置为基于接收的受损的模块变型的通知,使用多个可能的模块变型中的一个可能的模块变型来实现软件的运行时的模块。
图4是示出供移动设备接收通知,以界定可以在软件的运行时实现的模块的可能模块变型的实施例方法的过程流程图。
图5是示出供服务器计算设备(或服务器)针对用户移动设备所执行的软件的模块,发送与受损的模块变型有关的通知的实施例方法的过程流程图。
图6是适合于在实施例中使用的移动计算设备的组件框图。
图7是适合于在实施例中使用的服务器计算设备的组件框图。
具体实施方式
现在参照附图来详细地描述各个实施例。在可能的情况下,将贯穿附图来使用相同的附图标记,以指代相同或者类似的部分。对于特定示例和实现方式的引用是出于说明的目的,而不旨在限制本发明或者权利要求的保护范围。
本文所使用的“示例性的”一词意味着“用作例子、例证或说明”。本文中描述为“示例性”的任何实现方式不必被解释为比其它实现方式更优选或更具优势。
本文使用术语“移动计算设备”或“移动设备”指代以下各项中的任何一项或全部:蜂窝电话、智能电话(例如,苹果手机(iPhone))、网络平板(web-pad)、平板计算机、具备互联网能力的蜂窝电话、具备WiFi能力的电子设备、个人数据助理(PDA)、膝上型计算机、个人计算机和类似的装备有至少一个处理器的电子计算设备。在各个实施例中,这样的计算设备可以配置有网络收发机,以建立广域网(WAN)或局域网(LAN)连接(例如,LTE、3G或4G无线广域网收发机、与互联网的有线连接或者WiFi)。
使用术语“服务器”或“服务器计算设备”指代能够作为服务器的任何计算设备,例如,主交换服务器、网络服务器、邮件服务器、应用服务器、文档服务器、以及配置有执行服务器功能的软件的个人或移动计算设备(例如,“轻量服务器”)。服务器可以是专用计算设备或者执行服务器软件的计算设备(例如,运行可以使计算设备操作成服务器的应用)。
本文使用术语“模块”来指代在计算设备上执行的软件的任何模块化、可替换的和/或分立的组件。模块可以与能够被激活、生成、装载、实现和/或以其它方式被配置为在对软件的执行期间使用的特定信息、操作、逻辑、处理器可读/处理器可执行指令、子例程、应用程序设计接口和/或功能相关联。例如,软件模块可以包括:可以由应用访问以支持该应用的操作的软件库(例如,动态链接库等)、例程、对象和/或数据集。在计算设备上执行的各个应用可以使用模块,和/或用于执行各个应用的计算设备的软件平台(例如,操作系统)可以使用模块。在一些实施例中,在计算设备上执行的各种软件可以使用共同(或者“通用”)模块。
通常,现代计算设备的软件(例如,应用和执行应用的操作系统)典型地被构造为高度模块化和面向对象的。例如,诸如Android(安卓)和Linux之类的操作系统使用众多的离散软件组件或者模块来执行计算平台的功能角色。
为了提高采用模块的软件的安全性和性能,可以使用软件多样性技术,以利用计算设备的模块性。由于计算设备可以被配置为使用模块的各种变型,以及计算设备可以在不同的实现方式之间选择性地安装不同的模块变型(module variation),从而减少了特定的受损的模块(compromised module)可能导致移动设备被“非法侵入”的机率,因此,软件多样性可以提高安全性。不同的模块变型执行相同的功能,因此计算设备可以执行模块变型中的任何模块变型并且维持完全的可操作性。例如,计算设备可以可交换地安装一组预先生成的模块变型中的一个模块变型,以便由软件来使用。再举一个例子,计算设备可以被配置为自动地修改(或者自修改)特定的软件模块中的一小部分代码。由于用于计算设备(例如,Android智能电话)的驱动器、外围设备和子系统的明确的、精确的接口(API),软件模块变型的这样的可互换性可以是可能的。
本文使用术语“模块变型”来指代在计算设备上执行的软件所使用的模块的个别的、多样化的实现方式(或者版本)。特定模块的模块变型彼此之间可以进行不同地格式化或者结构化,和/或可以包括不同的信息。例如,第一模块的第一模块变型可以使用第一顺序的指令,以及第一模块的第二模块变型可以使用第二顺序的指令。再举一个例子,第一模块的第一模块变型可以是基于第一源代码来生成的,以及第一模块的第二模块变型可以是基于第二源代码来生成的。同一特定模块的模块变型可以由软件以相同的方式来使用,并实现相同的功能或者运行效果。例如,应用可以调用第一模块的第一模块变型中的函数来接收第一值,以及可以调用第一模块的第二模块变型中的函数来接收相同的第一值。再举一个例子,移动设备可以使用第一模块变型或者第二模块变型来实现WiFi模块。
通过包括类似但不同形式的模块,在不同的设备上对基于多样性的软件进行不同的安装之间,该软件的控制流可以是不同的。这种通过模块变型来实现的不一致性,可以降低软件包括可利用的易损性(vulnerability)的概率,因此使针对于特定的模块变型的恶意软件更难在不同的设备上成功地利用该软件中的相同易损性。软件多样性还可以阻止恶意软件经由各种连接来扩散到其它设备(例如,经由SMS进行拦截攻击),这是由于可以减少能够执行和扩散该恶意软件的受损设备的数量。换言之,利用有目的地不一致的软件,系统性威胁(例如,恶意软件、病毒、编程错误或者缺陷等等)可能仅影响该软件的一些模块变型而不会影响所有的模块变型,因此可以降低恶意代码或不可预见的编程缺陷可能负面地影响执行该软件的计算设备的团体的程度。因此,在运行时随机地选择特定模块变型的应用,在其软件易损性方面可能是不可预测的,从而提供了一层保护来防止非法侵入和利用。
各个实施例利用软件多样性的概念,以通过向计算设备通知不应当再被使用的特定的模块(有效地停用有缺陷或易受攻击的模块),来实现对软件模块的高效和及时更新,从而对新发现的软件缺陷和攻击进行响应。各个实施例提供了可以在计算设备和系统上实现的、并且存储在非暂时性处理器可读存储介质上的用于动态修补在计算设备上执行的基于多样性的软件的方法。可以基于从受信任方接收的通知(例如,从与软件相关联的远程服务器(例如,开发者或原始设备制造商服务器)或者从在计算设备自身上执行的应用或服务(例如,恶意软件保护软件等等)接收的通知),对于在计算设备上执行的软件中的模块的模块变型的运行时间选择进行智能控制。在一些实施例中,计算设备可以从原始设备制造商(OEM)、运营商、受信任的应用开发者、企业实体(例如,拥有消费者所使用的设备的公司)或者安全提供商(例如,病毒保护软件服务等等)接收通知(例如,消息、信号等等),其中通知指示软件的模块的、已知是有缺陷的、过时的或者以其它方式包括编程错误的模块变型的标识符。这样的通知可以是轻量级的通信(例如,模块变型标识符),这避免了对上传具有可执行代码或数据的形式的补丁或者更新的软件,替换模块二进制文件或源代码的需要。响应于接收到通知,计算设备可以配置模块变型选择机制,以避免在后续的运行时间选择中使用所识别的模块变型。用此方式,计算设备可以通过使用忽略了受损的模块变型的软件多样性选择操作,在软件的运行时间,快速地实现(例如,重新装载或者重新计算)更多的安全模块。在一些实施例中,计算设备可以响应于这样的通知,来取消选定可用模块变型列表中的标识符。受损的模块可以被从存储器中删除,或者被保留在存储器中并且简单地在运行时不被选择。
在一些实施例中,通知可以包括能够用于实现软件的模块的未受损的模块变型的标识符。换言之,代替对于应当不被选择的模块进行标识,通知可以对于模块的标识符列表(在运行时可以从其中选择模块)进行更新。例如,代替对通知中的标识符进行忽略,计算设备可以仅选择和执行受信任的远程服务器将其报告成当前有效的模块变型。
随着时间的推移,会出现软件模块的受损,以及可以基于接收的通知来给模块变型划定界限,针对特定模块的可能的模块变型可能变得有限,弱化计算设备内的软件多样性的利益。例如,由于在通知中报告的损害,计算设备可以仅能够从某个模块的原始大量模块变型的少量模块变型中进行选择。为了解决该问题,在一些实施例中,计算设备可以从远程设备(例如,OEM/开发者服务器等等)接收定期补丁或者软件更新,其包括用于存储在存储器中的不包括已知缺陷/编程错误的新的软件模块变型。用此方式,软件可以进行演变,以及可以通过持续地向计算设备提供另外的未受损的模块变型(可以在使用模块的任何软件的运行时间,从其中选择模块),来维持软件多样性的利益。
在一些实施例中,计算设备可以经由小型的受信任的动态装载器(或者选择逻辑),来完成从模块变型之中进行运行时模块选择,其中动态装载器可以对模块或者模块的一部分(例如,库等等)进行安全地激活(例如,生成或者装载/替换)。
在一些实施例中,可以在软件的运行时间期间从其中选择特定的模块的各种模块变型,可以是预先生成的或者预先计算的。例如,计算设备可以对编程人员在产生软件套件或者系统的时间提供的特定模块的多种不同的实现方式之一进行激活。可以将这样的预先生成的模块变型预装载到计算设备上,因此这样的技术可能不是可扩展的。
在一些实施例中,计算设备可以被配置为在运行时期间或者定期地,动态地生成模块变型。例如,在软件的运行时,以及基于选定的模块变型,计算设备可以使用用于自修改代码的已知技术,来生成特定模块的新的实现方式。
在一些实施例中,计算设备可以被配置为基于随机选择策略,从多个模块变型之中选择特定的模块以便在运行时使用。例如,计算设备可以使用随机选择机制来选择WiFi模块的特定实现方式。由于在应用执行时所实现的具体模块可能是不可预测的,因此这样的随机选择机制可能是恶意软件设计者最难考虑到的。在一些实施例中,计算设备可以基于计算设备和/或软件可访问的诸如以下之类的其它信息来选择模块变型:软件已经使用特定模块变型的次数、模块变型的复杂度、特定模块与受损的模块变型的相似度、特定模块与软件的其它模块的已选定模块变型的相似度、以及模块变型的、可能使每个模块变型或多或少地可能有缺陷或者以其它方式受到损害的其它特性。
实施例技术实现修补,所述修补不要求计算设备请求和/或处理软件下载或者其它昂贵的操作来克服受损的软件模块。相反,服务器简单地向计算设备通知有缺陷的模块变型的标识符。随后,在执行实现该模块的软件时,计算设备从排除了所识别的有缺陷的或者以其它方式受损的模块的可用的模块变型中选择特定的模块,以便在运行时进行使用。
一些传统的技术通过在安装时间或者装载时间,随机地安装所选定的模块(例如,通过当在设备上安装应用时,安装第一模块变型并删除其余部分),来实现一种形式的软件多样性。不同于这些传统的技术,实施例技术在运行时,在已被识别为安全的或者没有被识别为不安全的可用模块变型之间进行选择,其中在每一次执行软件时,都进行对特定模块的选择。实施例技术可以使用能够基于来自受信任源的通知来调整的标识符列表。计算设备可以被配置为:基于受损标识符的报告,对针对软件的任何模块的可能模块变型列表进行更新;响应于用于指示模块变型发生了受损的信号,从运行时选择列表中移除相对应的模块变型标识符。用此方式,执行相同软件模块变型的设备的团体,可以容易地移除在被考虑的某些模块变型标识符,以便在使用这样的模块的软件的运行时进行激活。
为了简单起见,下文描述了用于进行动态修补,以实现基于多样性的软件安全的各个实施例技术,如所应用于移动设备的。但是,应当认识到的是,各种实施例技术可以与能够执行模块化软件的任何计算设备(例如,膝上型计算机、服务器、游戏控制台、个人计算机等等)一起来使用。
此外,下文的说明书指示了软件可以使用多个模块,这些模块中的每一模块具有多个模块变型。但是,一些软件(例如,应用)可以不使用多个模块,而是包括单一模块,该单一模块具有多个模块变型。因此,实施例并不旨在只受限于使用多个模块的软件。
图1示出了包括多个移动设备102-106的实施例通信系统100,其中所述多个移动设备102-106被配置为执行与服务器110相关联的软件。移动设备102、104、106可以被配置为分别经由有线或无线连接103、105、107,通过广域网(例如,互联网130)来交换通信或信号。例如,移动设备102-106可以经由到蜂窝网络基站(没有示出)和/或与局域网相关联的Wi-Fi路由器(没有示出)的无线连接,通过互联网130进行通信。这样的通信的例子可以包括短消息服务(SMS)/多媒体消息服务(MMS)文本消息、电子邮件消息、语音呼叫(例如,互联网协议承载语音(VOIP))等等。类似地,服务器110可以被配置为经由有线或无线连接111,通过互联网130来交换数据和/或各种通信。具体而言,移动设备102-106能够经由互联网130,与服务器110进行通信。例如,服务器110可以向移动设备102-106推送自组网信息。再举一个例子,移动设备102-106可以被配置为从服务器110下载代码、文件软件、数据、信息等等。
在一种场景中,服务器110可以被配置为传输包括以下内容的通知:在移动设备102-106上执行的软件的模块的模块变型的标识符。进行接收的移动设备102-106可以使用这样的通知,来控制当移动设备102-106运行软件时(即,在运行时或者运行时期间),由其执行的动态模块选择操作。例如,通知可以包括:软件的第一模块的、由于模块变型的被识别出的缺陷、弱点或者报告利用而导致不应当在执行该软件时使用的该变型的标识符。
在各个实施例中,移动设备102-106可以向与服务器110相关联的软件(例如,操作系统、固件、中间件、应用(application)/应用软件(app)/客户端等等)的更新服务(或者更新实体)进行注册。具体而言,服务器110可以被配置为存储和处理与移动设备102、104、106相关联的信息,以及在每个移动设备上安装的软件。例如,服务器110可以被配置为接收和存储用于描述在移动设备102-106中的任何移动设备上存储的软件的版本的数据、通信能力(例如,蜂窝网络数据计划等等)、以及移动设备102-106上的相应软件安装所支持的模块。再举一个例子,服务器110可以被配置为存储用于描述在移动设备102-106上执行的软件所遇到的故障、损害、错误和其它负面情况的信息。服务器110可以存储和处理与移动设备102-106有关的这样的信息,以便识别、监测和报告发生了不适当地执行(例如,破坏的(breached)、多虫的(buggy)、中断的(broken)等等)软件中的模块。
在一些实施例中,服务器110可以经由有线或无线连接121,从连接到互联网130的第三方服务器120接收通信。这样的通信可以包括恶意软件报告,例如,病毒或“木马”恶意软件定义。例如,第三方服务器120可以与一服务或者实体相关联,其中该服务或实体监测各个设备所遇到的病毒,以及发送由商业病毒保护软件使用的定义。
图2A示出了被配置为使用多个可能的模块变型中的一个可能的模块变型以在所安装的软件的运行时来实现软件模块的示例性移动设备200。如上所述,为了提高安全性,移动设备200可以使用具有存储在该移动设备上的、可用于与实现模块的任何软件应用一起使用的各个软件模块的多个功能等同变型的多样性方案。在各个实施例中,移动设备200的处理器可以执行运行时选择逻辑210,来识别一组205可能的模块变型202-204(在图2A中分别被称作为“模块B变型1”、“模块B变型2”和“模块B变型N”)中的一个,以用于实现由安装和执行的软件220(例如,应用、操作系统例程等等)使用的特定模块(其被称作为“模块B”)。在一些实施例中,运行时选择逻辑210可以是在移动设备200的处理器上执行的例程或者过程。
如图2A中所示,当软件220进入运行时阶段时(例如,在进行安装、装载和以其它方式准备好执行之后,经由移动设备200的处理器来开始执行),移动设备200经由运行时选择逻辑210,可以生成和制造软件220可访问的各种模块。在执行的软件220可以包括:能由运行时选择逻辑210在运行时进行选择和/或进行激活,或者不进行选择和/或不进行激活的第一模块222(其被称作为图2A中的“装载的模块A”)。换言之,软件220可以被配置为使用静态的一部分模块(即,非多样化),以及在运行时从模块变型集合中动态选择的一部分模块(即,多样化的)。
另外,移动设备200经由运行时选择逻辑210,可以对该组205的可能的模块变型202-204进行评估,以及选择一个用作为第二模块224(在图2A中被称作为“运行时激活的模块B”)。对于模块变型202-204中的一个模块变型的这样的运行时选择可以是随机的。例如,模块变型202-204中的每个模块变型可以具有被移动设备200经由运行时选择逻辑210进行随机选择的相同可能性。替代地,移动设备200可以使用各种技术来选择模块变型202-204中的一个模块变型,例如,基于移动设备200所存储的加权方案或者其它预先规定的信息。例如,运行时选择可以是基于移动设备200在先前对软件220的执行时,对于模块变型202-204中的每个模块变型的先前使用次数。再举一个例子,该选择可以是基于模块变型202-204的评级、优先级和/或效率。随后,移动设备200经由运行时选择逻辑210,基于对于模块变型202-204中的一个模块变型的选择,对第二模块224进行激活(例如,生成、插入/装载)。
在另一个实施例中,模块变型202-204中的一个模块变型的运行时选择,可以是基于已经选择的模块和/或它们的模块变型。例如,移动设备200可以基于装载的第一模块222中使用的变型,选择第一模块变型202(其在图2A中被称作为“模块B变型1”),而不是第二模块变型203(其在图2A中被称作为“模块B变型2”)。换言之,当移动设备200选择用于某个模块的模块变型时所使用的加权因子,可能受到其它模块的已经装载的变型的影响,或者以其它方式包括其它模块的已经装载的变型的指示。
在各个实施例中,可以在移动设备200中,将组205表示成存储的、模块变型202-204的标识符列表,例如链表或者数组,所述链表或者数组包括每个用于指示模块变型202-204中的一个模块变型的标识符的节点或者条目。在各个实施例中,使用运行时选择逻辑210的移动设备200,可以使用所选定的模块变型来动态地修改预先规定的模块,以便生成第二模块224。例如,该运行时选择可以是对供移动设备200进行以下操作的特定指令的选择:供移动设备200使用某种算法、代码、应用程序编程接口(API)和/或对模块进行结构化的其它方式,对第二模块224进行修改(或者“自修改”)。
在关于第二模块224执行运行时选择操作之后,使用运行时选择逻辑210的移动设备200,可以继续执行针对其它模块(例如,针对第三模块226(其被称作为“待确定的模块C”))的另外的运行时选择操作。例如,移动设备200可以装载用于第三模块226的预先规定模块,或者基于如针对第二模块224所执行的类似选择,生成新的或者修改的模块。
图2B示出了供移动设备在软件的运行时使用模块的变型的实施例方法250。一旦移动设备安装和装载了软件(例如,应用、操作系统等等)来进行执行,则移动设备可以针对于在执行的软件所使用的多个模块,动态地在可用的模块变型之间进行选择。例如,移动设备可以为第一模块选择第一模块变型,而不是具有类似功能的第二模块变型。移动设备可以执行方法250的操作,使得在每一次执行软件时,都可以对可用的模块变型进行选择和激活。用此方式,移动设备可以实现软件多样性方案,以潜在地移除恶意软件为了攻击在执行的软件所使用的控制路径(或者控制流)。
在方框252中,移动设备的处理器可以获得用于在运行时,对针对移动设备上安装的软件的多个模块中的每个模块的多个模块变型进行激活的机制。该机制可以是使移动设备处理器能够在执行软件的运行时,对模块进行激活(例如,插入或装载在执行软件中)、生成和/或修改的逻辑、例程、软件、预先规定的变量、电路和/或其它功能。例如,机制可以是移动设备能够执行,以程序性地生成能够动态地插入、装载和/或链接到在执行的应用的操作指令的库、代码或者其它信息的算法。此外,可以对机制进行标准化(或者“通用化”),使得包括移动设备的各种计算设备能够使用该机制来生成(或者再制)相同的模块变型。例如,第一移动设备和第二移动设备可以均被配置为使用该机制来生成相同的模块变型,以便在应用中进行使用。在一些实施例中,所获得的机制可以是用于对软件的模块中的代码进行修改的代码、算法、指令、逻辑和/或其它信息。例如,该机制可以包括:由移动设备为了对预先规定的模块的指令的控制流进行改变而执行的指令。在各个实施例中,该机制可以是移动设备从远程源接收的,例如,经由从远程服务器(例如,应用服务器)进行的下载。在其它实施例中,机制可以是移动设备的制造商、用户和/或开发者在该移动设备上预先安装的。在一些实施例中,机制可以使用预先规定的代码来生成模块的变型。例如,移动设备可以使用例程(例如,代码修改的算法),其使用模块变型标识符作为该例程的种子,以不同的方式来生成模块。在一些实施例中,机制可以是如上文参照图2A描述的运行时选择逻辑。
如上所述,在给定的时间,软件的任何模块可以与预先规定的可能的模块变型集合相关联。例如,开发者可能已经编写了程序的设置数量的变型,或者程序的一部分程序的变型,每个变型在被软件使用时能够执行相同的功能。再举一个例子,可以基于在移动设备上存储的一个或许多不同的指令集,由移动设备在对软件的运行时,生成模块的模块变型。这些模块变型中的每个模块变型可以与通用标识符、代码或者其它描述符相关联,使得使用软件的各种移动设备可以以标准化方式来引用相同的模块变型。针对模块变型的统一标识信息可以由远程源(例如,与对软件的支持相关联的服务器)来维护,其中远程源可以与执行软件的各种移动设备共享标识信息。
在可选框254中,对于软件的多个模块中的每个模块来说,移动设备的处理器可以获得多个模块变型的可用模块变型的标识符列表。例如,移动设备可以经由来自与软件相关联的服务器的消息,来接收列表。再举一个例子,移动设备可以基于在安装软件时立即确定的、移动设备能够使用的模块变型,来生成列表。再举一个例子,列表可以是预先装载到移动设备上的标识符列表。列表可以简单地包括:针对每个模块所对应的多个模块变型中的每个模块变型的标识符。但是,在诸如下文所描述的一些实施例中,列表可以是可配置的,使得移动设备可以针对每个模块来更新可用的模块变型。例如,列表可以是能够附加或者移除各种模块变型标识符的队列、链表或者其它数据结构,分别指示这些模块变型是可用的或者不再可用的。在一些实施例中,列表中的每个项可以与表示相关联的模块变型的当前可用性的变量、标记或者其它数据有关。例如,列表中表示的每个模块变型可以与一个比特相关联,其中该比特指示移动设备是否可以选择该模块变型来进行使用。
在移动设备执行方框252-254中的操作之后的某个时间,移动设备的处理器可以在判断框256中,判断是否开始执行软件。换言之,移动设备可以判断软件是否已经被配置为开始其运行时阶段。响应于安装的软件准备好(例如,被装载)用于由移动设备处理器来执行,该软件可以进入其运行时阶段。移动设备可以响应于各种状况来开始执行软件,例如,接收的用户输入(例如,用户点击可执行文件或者与对应用的执行相关联的图标等等),从另一个设备接收到信号(例如,开始来自另一个移动设备的信号等等),和/或检测某种其它预先规定的操作状况的发生(例如,用于指示预先关联的地理围栏中的位置的GPS坐标等等)。例如,移动设备可以响应于检测到触摸屏上的用户选择输入(其对应于用于软件的图形图标),来确定开始执行该软件。再举一个例子,移动设备可以响应于接收到用于指示该软件(例如,软件等等)应当开始其运行时执行的中断、命令或其它信号,来确定其应当开始或者激活该软件的运行时阶段。响应于确定该软件还没有开始执行(即,判断框256=“否”),移动设备可以继续在判断框256中,执行该检查/监测操作。例如,当该软件仍然在装载时,和/或直到接收到用于造成该软件被装载并最终在移动设备处理器上执行的用户输入为止,移动设备可以继续评估该软件是否已经开始执行。
响应于确定该软件已经开始执行(即,判断框256=“是”),在方框258中,移动设备的处理器可以选择该软件的一个或多个模块的下一个模块。例如,对于包括方框258-264的操作的操作循环的第一次迭代而言(即,当移动设备进入其运行时阶段时),移动设备可以选择要动态生成(或者装载)的所有模块的列表中的第一模块,以便由该软件来使用。在方框260中,移动设备的处理器可以从所获得的、针对所选定模块的可用模块变型的标识符列表中,选择标识符。例如,移动设备可以使用随机选择算法,其中该算法随机地选择可用模块变型的标识符之一。该选择可以是基于如上所述的其它因素,例如,在过去的对软件的执行时,如何频繁地使用模块变型,模块变型彼此之间相比的复杂度等等。
在方框262中,移动设备的处理器可以对与所选定的标识符相关联的可用模块变型进行激活,以用于与在执行的软件一起使用。例如,当预先生成与所选定的标识符相对应的可用模块变型时,移动设备可以在软件的运行时装载可用模块变型。再举一个例子,移动设备可以生成由在执行的软件使用的可用模块变型,例如,基于所选定的模块变型标识符,通过使用所获得的机制(例如,例程等等)来生成模块。再举一个例子,移动设备可以使用用于修改与所选定的标识符有关的模块的指令,来修改模块或者生成用于插入在模块中的代码。响应于移动设备在方框262中所执行的操作,与所选定的模块变型相关联的模块可以是可访问的,并且以其它方式能够由软件进行完全地使用。在各个实施例中,生成可用模块变型可以包括:基于可用模块变型的指示,对模块的代码中的控制流进行重新组织。例如,移动设备可以改变操作(例如,跳或者“GOTO”语句等等)和/或针对模块的汇编语言代码块中的操作的顺序。
在判断框264中,移动设备的处理器可以判断是否存在软件的另一个模块,其中移动设备必须在运行时针对其来选择和激活(例如,生成)模块变型。响应于确定存在软件的另一个模块(即,判断框264=“是”),移动设备可以继续下一个模块,并进行方框258中的选择操作。但是,响应于确定不存在软件的另一个模块(即,判断框264=“否”),在方框265中,移动设备的处理器可以执行该软件。在一些实施例中,移动设备的处理器可以继续判断框256中的操作,以便在完成方框265的操作之后,判断后续的运行时阶段是否已经开始。
图2C示出了供移动设备报告在执行软件时所遇到的问题的实施例方法280。可以使用这样的问题(例如,故障或者恶意软件检测)来确定在未来对软件的执行时,可以如何调整针对软件的模块的软件多样性。可以结合本文所描述的方法250、400和/或450,来执行方法280的操作。
一旦软件开始在移动设备的处理器上执行,或者在软件被配置为不再在处理器上活动地执行之后,就可以执行方法280。因此,响应于执行上文参照图2B所描述的方框265中的操作,在判断框266中,移动设备可以判断在软件的运行时期间,是否已经遇到了与模块的问题。例如,移动设备可以检测在执行软件时的故障、突然停止工作(crash)和/或非预期的操作。移动设备可以将这样的检测的信息存储在日志文件或者其它数据中,其中,日志文件或者其它数据可以在完成软件的运行时阶段之后,或者替代地在对软件的执行期间被评估。响应于确定遇到了问题(即,判断框266=“是”),在方框268中,移动设备可以向与软件相关联的服务器(例如,开发者或OEM服务器)发送用于指示当前在使用的被激活的模块变型标识符的报告消息。如下文参照图5所描述的,服务器可以对这样的报告消息进行评估和使用,以识别模块变型的潜在受损。响应于确定没有遇到问题(即,判断框266=“否”),或者执行方框268中的操作,移动设备可以结束方法280。
图3A-B示出了示例性移动设备200,其中,移动设备200被配置为基于所接收的受损的模块变型的通知,在运行时使用多个可能的模块变型中的一个可能的模块变型来实现软件模块。图3B中所示出的场景类似于上文参照图2A所描述的场景,除了在图3B中,移动设备200可以调整对模块变型的选择,以反映由移动设备200接收的数据,其中该数据指示不再适合于用来作为移动设备200的软件的模块的特定变型。例如,代替经由互联网从服务器接收较大的补丁,移动设备200可以响应于接收到仅指示模块变型标识符的简单通知,来对于可以在运行时生成的用于在应用中使用的可能的模块变型进行界定。如上所述,这样的通知可以是远程源(例如,与移动设备200的软件相关联的服务器,和/或在移动设备200上执行的内部应用)所发送的。
如图3A中所示以及上文参照图2A所描述的,移动设备200的处理器可以执行运行时选择逻辑210,所述运行时选择逻辑210可以被配置为识别一组205可能的模块变型202-204中的一个可能的模块变型,以用于实现可以由移动设备200执行的已安装软件进行使用的特定模块(其被称作为“模块B”)。模块变型202-204中的每个模块变型可用于由移动设备200经由运行时选择逻辑210来进行选择。但是,与图2A中不同,图3A中的移动设备200接收用于对各个模块变型202-204的可用性进行调整的通知302。通知302可以包括模块变型202-204的一个标识符或者多个标识符,移动设备200可以经由运行时选择逻辑210来使用这些标识符,以从具有被选定为实现该特定模块(例如,“模块B”)的资格中,移除多个模块变型202-204中的一个或多个模块变型。例如,使用运行时选择逻辑210的移动设备200,可以从可用的模块变形列表中移除在通知302中指示的标识符。
具体而言,通知302可以指示:组205的第二模块变型203不再可被移动设备200经由运行时选择逻辑210进行选择。例如,通知302可以指示:与第二模块变型203相关联的标识符已经与安全漏洞相关联(即,已经被恶意软件损害等等)。
如图3B中所示,响应于通知302,移动设备200经由运行时选择逻辑210,可以对组205进行调整,使得第二模块变型203’(其在图3B中被称作为“模块B变型2”)不再可用于选择和/或实现。当安装的软件220进入运行时阶段时(例如,在进行装载和以其它方式准备之后,经由移动设备200的处理器来开始执行),移动设备200经由运行时选择逻辑210,可以仅选择第一模块变型202(其在图3A中被称作为“模块B变型1”)或者最后模块变型204(其在图3A中被称作为“模块B变型N”),以便实现第二模块352(其在图3A中被称作为“运行时激活的模块B”)。换言之,基于移动设备200经由运行时选择逻辑210进行的选择,第二模块352可以与除了第二模块变型203’之外的所有模块变型相对应。在一些实施例中,移动设备200可以不删除与第二模块变型203’相关联的信息,而是设置标记或者变量来指示第二模块变型203’的无效或不可用状态。例如,当被预先生成时,在接收到通知302之后,第二模块变型203’可以保持存储在移动设备200上。
图4示出了供移动设备接收通知,以界定可以在软件的运行时实现的模块的可能的模块变型的实施例方法400。除了方法400可以响应于指示模块变型已经受到损害的通信(或者通知),而配置移动设备来调整模块的模块变型的可用性之外,方法400类似于上文所描述的方法250。通知(例如,被配置为对移动设备进行更新的、来自于远程服务器计算设备的信号)可以指示:当从可用的模块变型之中进行选择时,移动设备不可以使用的标识符的范围。例如,来自于服务器的消息或者信号可以指示某个模块变型标识符由于病毒或者其它恶意软件而导致受损,因此当移动设备在运行时生成针对软件的相关模块时不应当考虑所述某个模块变型标识符。这样的通知可以最简单地仅包括:已经被标识为被损坏的模块变型的标识符。不管它们的源、结构或者传输技术,通知可以不包括模块变型它们自身和/或为了生成模块变型所需要的数据(例如,源代码或者二进制)。用此方式,通知可以是在不要求移动设备花费大量的资源来调整其软件多样性方案的情况下,向移动设备提供模块的动态修补的廉价有效方式。
上文参照图2B描述了方框252-262的操作。在执行方框252-254的操作之后的某个时间,在判断框402中,移动设备的处理器可以判断是否获得了具有受损的模块变型的标识符的通知。例如,移动设备可以对接收电路进行监测,以判断是否经由网络连接从远程服务器或者另一个移动设备接收到用于指示以下内容的消息:针对最近已发现被恶意软件损害的软件的模块的模块变型的标识符。可以将与通知中所包括的标识符相关联的模块变型识别成由于多种原因(例如,有缺陷的(例如,其包括已知的编程错误等等)、过时的(例如,位于开发者、制造商等等所设置的预先规定的新鲜度门限之外)、和/或已知已经被恶意软件利用)而受损。
该通知可以包括各种信息,例如,与受损的模块变型有关的模块的识别信息、通知的发送者的识别信息和/或认证信息、时间戳信息、版本信息、以及移动设备为了对通知进行验证而使用的其它数据。但是,通知可以不包括:能够在运行时期间被软件用来作为模块的可执行代码或者数据。换言之,通知不是针对于可执行代码、模块或者代码的一部分的递送机制,而仅仅是软件不能使用的模块变型的指示符。
在一些实施例中,通知可以是移动设备本地生成的消息,例如,由在移动设备上执行的安全应用生成的警告或者其它报告。例如,移动设备可以被配置为执行操作,以持续地评估软件中的安全漏洞,以及识别漏洞所影响的模块变型。响应于确定还没有获得受损的模块变型的标识符的通知(即,判断框402=“否”),移动设备可以继续在判断框402中的监测操作。
响应于确定已经获得了受损的模块变型的标识符的通知(即,判断框402=“是”),在方框404中,移动设备的处理器可以根据所获得的通知,从所获得的可用模块变型列表中,移除受损的模块变型的标识符。例如,移动设备可以从存储的可用模块变型标识符列表中,移除对通知中的标识符的引用。再举一个例子,移动设备可以为数据库中的包括以下标识符的条目设置无效标记:移动设备可以关于软件所生成的所有模块变型的标识符。通过移除这些标识符,可以使移动设备禁用选择和激活与标识符相关联的模块变型,因此通过不考虑可能有缺陷或者被恶意软件利用的模块配置来提高安全。响应于执行方框404中的操作,移动设备可以继续监测判断框402中的操作。换言之,移动设备可以在软件的运行时阶段之间,无限期地对进入的通知进行监测。
虽然移动设备可以持续地对进入的通知进行监测,并调整可用模块变型的列表,但是移动设备可以最终被配置为执行软件(即,进入其运行时阶段),在该时间,移动设备可以被配置为从诸如此类的在该时间可用的模块变型之中进行选择。
在执行完判断框402或方框404的操作之后的某个时间,移动设备的处理器可以执行如上文参照图2B所描述的方框256-265的操作。
在一些实施例中,移动设备可以被配置为:一旦软件完成在移动设备处理器上的执行(即,退出运行时阶段),则继续执行判断框402中的操作。例如,当应用已经被关闭、终止或者以其它方式停止进行活动操作时,移动设备可以继续判断框402中的操作。在一些实施例中,移动设备可以在软件的运行时阶段期间,继续方框404-404的操作。另外,在一些实施例中,在执行软件的运行时阶段期间,移动设备可以执行用于判断模块是否遇到了问题以及发送报告消息的操作,如上文参照图2C中的判断框266所描述的。
在一些实施例中,当接收到关于特定的模块变型要被替换的通知,同时使用该模块的软件已经在移动设备的处理器上执行时,移动设备可以被配置为中断或者暂停对软件的执行,以便装载新的模块变型。这样的中断可能需要移动设备重新装载由软件使用的所有模块,或者可能不需要移动设备重新装载由软件使用的所有模块。
图5示出了供服务器计算设备(或者服务器)发送与移动设备执行的软件的模块的受损的模块变型有关的通知的实施例方法500。如上所述,与软件相关联的服务器(例如,专用于支持特定应用或者操作系统的应用服务器、OEM服务器或者开发者服务器)可以被配置为:持续地接收和处理用于指示与软件的问题的信息。作为关于软件的众包安全信息的清除库来进行工作,服务器可以向已经安装了软件并向服务器注册了(或者服务器已知)的移动设备(参见图5被称作为“用户移动设备”)发送通知。例如,服务器可以发送用于向用户移动设备通知以下内容的通告:不再可以实现成与软件一起使用的模块的受损的模块变型。因此,服务器可以实现对使用软件多样性方案的设备进行廉价并动态的修补。
在可选框502中,服务器可以针对在用户移动设备上安装的软件的多个模块中的每个模块,发送用于生成多个模块变型的信息。例如,服务器可以发送用户移动设备能够使用,以便在安装的应用的运行时期间对预先规定的模块进行修改的指令、代码、逻辑、软件和/或其它信息。再举一个例子,服务器可以简单地发送在软件的运行时,可互换地进行激活的软件模块的多个变型。在一些实施例中,服务器可以发送用户移动设备为了在模块的模块变型之间进行选择而使用的规则或者准则。例如,服务器可以将文件传送推送到包括可执行代码(例如,运行时选择逻辑)的用户移动设备中,其中该可执行代码可以使用户移动设备在该软件的运行时,在模块变型之间随机地进行选择。
在可选框504中,服务器可以接收损害和/或恶意软件开发的报告消息。报告消息中的信息可以包括恶意软件定义(例如,病毒名称、标识信息等)、软件的编程错误报告、软件的受影响或者受损的模块或模块变型、以及用于标识进行发送的源的各种数据(例如,诸如介质访问控制(MAC)地址等等之类的移动设备标识符)。这样的报告消息可以是来自于第三方计算设备(例如,病毒监测和/或网络安全服务(如,Norton(诺顿)、Symantec(赛门铁克)、McAfee(迈克菲)等)的服务器),或者是来自于用户移动设备。例如,服务器可以从用户移动设备接收用于指示遇到的错误或者恶意软件以及与所遇到的错误或恶意软件有关的任何诊断信息(例如,已经受损的和/或与软件的故障有关的软件的模块的标识)的故障报告。可选框504中的操作可以是可选的,这是由于这样的报告消息可能不是定期发生的,而是响应于软件的故障或者损害的发生,而被服务器接收的。但是,服务器可以定期地接收(或者下载)一些报告消息(例如,由第三方发送的恶意软件定义)。
在方框506中,服务器可以对针对在用户移动设备上安装的软件的多个模块中的每个模块的多个模块变型的安全性进行评估。具体而言,服务器可以对任何接收的故障或者损害的报告消息(例如,编程错误报告、恶意软件通知等等)进行评估,以识别与软件的各种模块变型的任何相关性。在一些实施例中,服务器可以对恶意软件定义进行处理以识别恶意软件使用的技术(例如,控制路径、安全漏洞等等),以及将这样的识别的技术与模块变型进行比较,以判断模块变型中的任何模块变型是否处于受到来自恶意软件的损害的风险。例如,服务器可以识别特定的病毒使用软件的某个功能(例如,端口、操作循环、插件程序、编程语言、认证逻辑等等),以及分析软件的模块变型,以判断它们是否被构造为包括或者以其它方式使用某种功能。在一些实施例中,服务器可以基于从用户移动设备接收的报告的数量,来计算恶意软件已经对特定的模块变型发生损害的可能性,其中报告指示发生了与模块变型有关的错误或者故障(例如,报告消息包括模块变型标识符,报告消息来自于服务器已知的已经实现了相同模块变型的用户移动设备等等)。
在判断框508中,服务器可以基于方框506的评估,判断针对软件的多个模块中的任何模块的多个模块变型中的任何模块变型是否受损(或者潜在地受损)。基于方框506的评估,可以由于诸如以下的多种原因,将模块变型识别成受损的:有缺陷的(例如,其包括已知的编程错误等等)、过时的(例如,位于开发者、制造商等等所设置的预先规定的新鲜度门限之外)、和/或已知被恶意软件利用。例如,服务器可以基于从用户移动设备接收到用于指示与模块变型相匹配的标识符已经失效(fail)的报告消息,来确定第一模块变型受到损害。再举一个例子,服务器可以基于对已知的恶意软件实现方式利用第二模块变型的功能的可能性的计算,来确定第二模块变型受到损害。响应于确定没有软件的模块变型受到损害(即,判断框508=“否”),服务器可以继续可选框504中的操作以接收后续的报告消息。
响应于确定软件的模块变型已经受到损害(即,判断框508=“是”),在方框510中,服务器可以向用户移动设备发送用于指示软件的多个模块的受损的模块变型的标识符的通知消息。如上文参照图4A-4B所描述的,这样的通知可以包括受损的模块变型的标识符和/或可能使用户移动设备无效、变得不可用或者以其它方式终止对受损的模块变型的使用的其它信息。例如,通知可以包括用于使接收方用户移动设备将与模块变型相关联的标记设置为“非活动”或“不可用”的代码或者命令。用此方式,服务器可以动态并高效地向用户移动设备分发类似补丁的信息,在无需实际发生软件模块、代码库或者发生其它资源密集型传输的情况下,提高了它们的软件多样性。
在各个实施例中,服务器可以另外地被配置为向用户移动设备发送常规的软件更新、修复和其它有用数据。为了做到这一点,在可选框512中,服务器可以获得针对软件的所有模块的软件更新。例如,经由来自软件开发者的上传或者来自另一计算设备或服务器的文件传输,服务器可以接收软件和其各个模块的新版本的源代码或者编译后的可执行文件。为了保护对软件的改进免遭识别出的对模块变型的损害,在可选框514中,服务器可以发送更新消息,其中该更新消息包括针对软件的模块的所有未受损的模块变型的软件更新。换言之,服务器可以跟踪受损的模块变型的标识符,以及从后续的补丁中移除任何有关的更新,使得用户移动设备不用花费不必要的资源来接收和处理在软件的运行时从未被选择来使用的模块变型。服务器可以继续可选框504中的操作以接收另外的报告消息。
可以使用各种形式的移动计算设备来实现各种实施例。这样的移动计算设备典型地包括图6中所示出的部件,图6示出了示例性智能电话类型移动计算设备600。在各个实施例中,移动计算设备600可以包括耦合到触摸屏控制器604和内部存储器602的处理器601。处理器601可以是被指定用于通用或特定处理任务的一个或多个多核IC。内部存储器602可以是易失性存储器或非易失性存储器,还可以是安全和/或加密存储器,或者非安全和/或非加密存储器、或者其任意组合。触摸屏控制器604和处理器601还可以耦合到触摸屏面板612,例如,电阻式感应触摸屏、电容感应触摸屏、红外线感测触摸屏等等。移动计算设备600可以具有用于进行发送和接收的一个或多个无线电信号收发机808(例如,PeanutBluetoothZigbeeWi-Fi、RF无线单元)和天线610,它们彼此之间相耦合和/或耦合到处理器601。收发机608和天线610可以与上文所提及的电路一起来使用,以实现各种无线传输协议栈和接口。移动计算设备600可以包括蜂窝网络无线调制解调器芯片616,所述蜂窝网络无线调制解调器芯片616经由蜂窝网络来实现通信并耦合到处理器。移动计算设备600可以包括耦合到处理器601的外围设备连接接口618。外围设备连接接口618可以被单独地配置为接受一种类型的连接,或者被多重地配置为接受多种类型的物理和通信连接、共同或专有连接(例如,USB、火线、Thunderbolt(霹雳)或PCIe)。外围设备连接接口618还可以耦合到类似配置的外围设备连接端口(没有示出)。移动计算设备600还可以包括用于提供音频输出的扬声器614。移动计算设备600还可以包括使用塑料、金属、或材料的组合所构成的壳体620,以包含本文所讨论的所有部件或者一些部件。移动计算设备600可以包括耦合到处理器601的电源622,例如一次性的或可充电的电池。可充电的电池还可以耦合到外围设备连接端口,以便从在移动计算设备600外部的源接收充电电流。
各个实施例可以实现在各种各样的商业可用的服务器设备中的任何服务器设备中,例如,如图7中所示的服务器计算设备700。这样的服务器计算设备700可以典型地包括耦合到易失性存储器702和大容量非易失性存储器(例如,磁盘驱动器703)的处理器701。服务器计算设备700还可以包括耦合到处理器701的软盘驱动器、压缩光盘(CD)或DVD光盘驱动器706。服务器计算设备700还可以包括耦合到处理器701的网络接入端口704,以便与网络705(例如,耦合到其它系统计算机和服务器的局域网)建立数据连接。
处理器601和701可以是能通过软件指令(应用)进行配置,以执行多种功能(其包括上文所描述的各种实施例的功能)的任何可编程的微处理器、微计算机或多个处理器芯片或多个芯片。在各个设备中,可以提供多个处理器,例如,一个处理器专用于无线通信功能,一个处理器专用于运行其它应用。典型地,在访问软件应用并将它们装载到处理器601和701之前,可以将这些软件应用存储在内部存储器602和702中。处理器601和701可以包括足够用于存储应用软件指令的内部存储器。在很多设备中,内部存储器可以是易失性或者非易失性存储器(例如,闪存)或者二者的混合。出于本说明书的目的,对于存储器的通常引用,指代处理器601和701可访问的存储器,其包括被插入到各种设备中的内部存储器或者可移动存储器,以及处理器601和701内的存储器。
前述方法描述和处理流程图仅仅是用作为说明性例子,而不是旨在要求或者隐含着必须以所给出的顺序来执行各个实施例的步骤。如本领域技术人员将认识到的,可以以任何顺序来执行前述实施例中的步骤顺序。诸如“其后”、“然后”、“接下来”等等之类的词语,并不旨在限制步骤的顺序;这些词语仅仅只是用于引导读者遍历方法的描述。此外,任何对权利要求元素的单数引用(例如,使用冠词“一(a)”、“一个(an)”或者“所述(the)”),不应被解释为将该元素限制为单数形式。
结合本文所公开的实施例描述的各种示例性的逻辑框、模块、电路和算法步骤均可以实现成电子硬件、计算机软件或二者的组合。为了清楚地表示硬件和软件之间的这种可交换性,上文已经对各种示例性的部件、框、模块、电路和步骤围绕其功能进行了总体描述。至于这种功能是实现成硬件还是实现成软件,取决于特定的应用和对整个系统所施加的设计约束。熟练的技术人员可以针对每个特定应用,以变通的方式实现所描述的功能,但是这种实现决策不应解释为背离本发明的保护范围。
利用被设计为执行本文所述功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件部件或者其任意组合,可以实现或执行结合本文所公开的实施例描述的用于实现各种示例性的逻辑、逻辑框、模块和电路的硬件。通用处理器可以是微处理器,或者该处理器可以是任何常规的处理器、控制器、微控制器或者状态机。处理器也可以实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器与DSP内核的结合,或者任何其它此种结构。替代地,一些步骤或方法可以由特定于给定的功能的电路来执行。
在一些示例性实施例中,所描述的功能可以用硬件、软件、固件或其任意组合来实现。当在软件中实现时,可以将功能存储成非暂时性处理器可读介质、计算机可读介质或者服务器可读介质或者非暂时性处理器可读存储介质上的指令或代码,或者通过其进行发送。本文所公开的方法或算法的步骤,可以体现在处理器可执行软件模块或者处理器可执行软件指令中,所述指令可以位于非暂时性计算机可读存储介质、非暂时性服务器可读存储介质和/或非暂时性处理器可读存储介质上。在各种实施例中,这样的指令可以是存储的处理器可执行指令或者存储的处理器可执行软件指令。有形的、非暂时性计算机可读存储介质可以是计算机能够存取的任何可用介质。举例而言,但非做出限制,这种非暂时性计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储器、磁盘存储器或其它磁存储设备、或者能够用于存储具有指令或数据结构形式的期望的程序代码并能够由计算机进行存取的任何其它介质。如本文所使用的,磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘则用激光来光学地复制数据。上述的组合也应当包括在非暂时性计算机可读介质的范围之内。另外,方法或算法的操作可以作为一个代码和/或指令集或者其任意组合,位于有形的、非暂时性处理器可读存储介质和/或计算机可读介质上,其中该有形的、非暂时性处理器可读存储介质和/或计算机可读介质可以并入到计算机程序产品中。
为使本领域任何技术人员都能够实现或者使用本发明,提供了所公开的实施例的前述描述。对于本领域技术人员来说,对这些实施例的各种修改是显而易见的,并且本文定义的总体原理也可以在不脱离本发明的精神或保护范围的情况下来应用于其它实施例。因此,本发明并不限于本文所示出的实施例,而是要符合与所附权利要求书和本文公开的原理和新颖性特征相一致的最广范围。

Claims (30)

1.一种用于对在移动设备上执行的基于多样性的软件进行动态修补的方法,包括:
由所述移动设备获得用于指示模块变型的通知,所述模块变型不应当被用来作为针对在所述移动设备上执行的软件的模块;以及
响应于获得所述通知,由所述移动设备的处理器从针对所述模块的可用模块变型列表中移除所述模块变型,其中,所述可用模块变型列表中的一个可用模块变型在所述软件的运行时被所述处理器激活作为所述模块。
2.根据权利要求1所述的方法,其中,所述通知是所述移动设备从远程服务器接收的。
3.根据权利要求2所述的方法,其中,所述通知不包括能够被所述软件用来作为所述模块的数据或者可执行代码。
4.根据权利要求1所述的方法,其中,所述模块变型是有缺陷的、过时的以及被识别为被恶意软件利用的之中的一者。
5.根据权利要求1所述的方法,还包括:
在所述软件的运行时,由所述处理器从针对所述模块的所述可用模块变型列表中选择第一标识符;以及
由所述处理器激活与所选择的第一标识符相关联的可用模块变型,以在所述软件的运行时期间用来作为所述模块。
6.根据权利要求5所述的方法,其中,在所述软件的运行时,由所述处理器从针对所述模块的所述可用模块变型列表中选择所述第一标识符,包括:
由所述处理器使用随机选择算法,从所述可用模块变型列表中选择所述第一标识符。
7.根据权利要求5所述的方法,其中,由所述处理器激活与所选择的第一标识符相关联的所述可用模块变型,以在所述软件的运行时期间用来作为所述模块,包括以下各项中的一项:
由所述处理器在所述软件的运行时生成所述可用模块变型;以及
由所述处理器在所述软件的运行时装载预先生成的所述可用模块变型。
8.根据权利要求5所述的方法,其中,所述模块是所述软件在运行时使用的多个模块中的一个模块,所述方法还包括:
由所述处理器在所述软件的运行时,从与所述多个模块中的其它模块相关联的可用模块变型列表中选择标识符;以及
由所述处理器激活针对与所选择的标识符相关联的所述多个模块中的所述其它模块的可用模块变型,以在所述软件的运行时期间用来作为所述其它模块。
9.根据权利要求1所述的方法,其中,所述通知是所述移动设备在所述软件的运行时期间接收的。
10.一种包括处理器的计算设备,其中,所述处理器配置有处理器可执行指令以执行包括以下各项的操作:
获得用于指示模块变型的通知,所述模块变型不应当被用来作为针对在所述计算设备上执行的软件的模块;以及
响应于获得所述通知,从针对所述模块的可用模块变型列表中移除所述模块变型,其中,所述可用模块变型列表中的一个可用模块变型在所述软件的运行时被所述处理器激活作为所述模块。
11.根据权利要求10所述的计算设备,其中,所述通知是所述计算设备从远程服务器接收的。
12.根据权利要求11所述的计算设备,其中,所述通知不包括能够被所述软件用来作为所述模块的数据或者可执行代码。
13.根据权利要求10所述的计算设备,其中,所述模块变型是有缺陷的、过时的以及被识别为被恶意软件利用的之中的一者。
14.根据权利要求10所述的计算设备,其中,所述处理器配置有处理器可执行指令以执行还包括以下各项的操作:
在所述软件的运行时,从针对所述模块的所述可用模块变型列表中选择第一标识符;以及
激活与所选择的第一标识符相关联的可用模块变型,以在所述软件的运行时期间用来作为所述模块。
15.根据权利要求14所述的计算设备,其中,所述处理器配置有处理器可执行指令以执行操作,使得在所述软件的运行时,从针对所述模块的所述可用模块变型列表中选择所述第一标识符,包括:
使用随机选择算法,从所述可用模块变型列表中选择所述第一标识符。
16.根据权利要求14所述的计算设备,其中,所述处理器配置有处理器可执行指令以执行操作,使得激活与所选择的第一标识符相关联的所述可用模块变型,以在所述软件的运行时期间用来作为所述模块,包括以下各项中的一项:
在所述软件的运行时生成所述可用模块变型;以及
在所述软件的运行时装载预先生成的所述可用模块变型。
17.根据权利要求14所述的计算设备,其中,所述模块是所述软件在运行时使用的多个模块中的一个模块,并且所述处理器配置有处理器可执行指令以执行还包括以下各项的操作:
在所述软件的运行时,从与所述多个模块中的其它模块相关联的可用模块变型列表中选择标识符;以及
激活针对与所选择的标识符相关联的所述多个模块中的所述其它模块的可用模块变型,以在所述软件的运行时期间用来作为所述其它模块。
18.根据权利要求10所述的计算设备,其中,所述通知是所述计算设备在所述软件的运行时期间接收的。
19.一种计算设备,包括:
用于获得用于指示模块变型的通知的单元,所述模块变型不应当被用来作为针对在所述计算设备上执行的软件的模块;以及
用于响应于获得所述通知,从针对所述模块的可用模块变型列表中移除所述模块变型的单元,其中,所述可用模块变型列表中的一个可用模块变型在所述软件的运行时被激活作为所述模块。
20.根据权利要求19所述的计算设备,其中,所述通知是所述计算设备从远程服务器接收的。
21.根据权利要求20所述的计算设备,其中,所述通知不包括能够被所述软件用来作为所述模块的数据或者可执行代码。
22.根据权利要求19所述的计算设备,其中,所述模块变型是有缺陷的、过时的以及被识别为被恶意软件利用的之中的一者。
23.根据权利要求19所述的计算设备,还包括:
用于在所述软件的运行时,从针对所述模块的所述可用模块变型列表中选择第一标识符的单元;以及
用于激活与所选择的第一标识符相关联的可用模块变型,以在所述软件的运行时期间用来作为所述模块的单元。
24.根据权利要求23所述的计算设备,其中,用于在所述软件的运行时,从针对所述模块的所述可用模块变型列表中选择所述第一标识符的单元,包括:
用于使用随机选择算法,从所述可用模块变型列表中选择所述第一标识符的单元。
25.根据权利要求23所述的计算设备,其中,用于激活与所选择的第一标识符相关联的所述可用模块变型,以在所述软件的运行时期间用来作为所述模块的单元,包括以下各项中的一项:
用于在所述软件的运行时生成所述可用模块变型的单元;以及
用于在所述软件的运行时装载预先生成的所述可用模块变型的单元。
26.根据权利要求23所述的计算设备,其中,所述模块是所述软件在运行时使用的多个模块中的一个模块,所述计算设备还包括:
用于在所述软件的运行时,从与所述多个模块中的其它模块相关联的可用模块变型列表中选择标识符的单元;以及
用于激活针对与所选择的标识符相关联的所述多个模块中的所述其它模块的可用模块变型,以在所述软件的运行时期间用来作为所述其它模块的单元。
27.根据权利要求19所述的计算设备,其中,所述通知是所述计算设备在所述软件的运行时期间接收的。
28.一种其上存储有处理器可执行指令的非暂时性处理器可读存储介质,其中所述处理器可执行指令被配置为使计算设备的处理器执行包括以下各项的操作:
获得用于指示模块变型的通知,所述模块变型不应当被用来作为针对在所述计算设备上执行的软件的模块;以及
响应于获得所述通知,从针对所述模块的可用模块变型列表中移除所述模块变型,其中,所述可用模块变型列表中的一个可用模块变型在所述软件的运行时被激活作为所述模块。
29.根据权利要求28所述的非暂时性处理器可读存储介质,其中,所存储的处理器可执行指令被配置为使所述计算设备的所述处理器执行还包括以下各项的操作:
在所述软件的运行时,从针对所述模块的所述可用模块变型列表中选择第一标识符;以及
激活与所选择的第一标识符相关联的可用模块变型,以在所述软件的运行时期间用来作为所述模块。
30.根据权利要求29所述的非暂时性处理器可读存储介质,其中,所存储的处理器可执行指令被配置为使所述计算设备的所述处理器执行操作,使得激活与所选择的第一标识符相关联的所述可用模块变型,以在所述软件的运行时期间用来作为所述模块,包括以下各项中的一项:
在所述软件的运行时生成所述可用模块变型;以及
在所述软件的运行时装载预先生成的所述可用模块变型。
CN201580033978.0A 2014-06-27 2015-06-16 出于安全的原因对各种软件模块的多个功能等效的变型的动态修补 Pending CN106462429A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/316,961 US10019569B2 (en) 2014-06-27 2014-06-27 Dynamic patching for diversity-based software security
US14/316,961 2014-06-27
PCT/US2015/036014 WO2015200046A1 (en) 2014-06-27 2015-06-16 Dynamic patching of multiple, functionally equivalent variations of various software modules for security reasons

Publications (1)

Publication Number Publication Date
CN106462429A true CN106462429A (zh) 2017-02-22

Family

ID=53496961

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580033978.0A Pending CN106462429A (zh) 2014-06-27 2015-06-16 出于安全的原因对各种软件模块的多个功能等效的变型的动态修补

Country Status (5)

Country Link
US (1) US10019569B2 (zh)
EP (1) EP3161624A1 (zh)
JP (1) JP6513716B2 (zh)
CN (1) CN106462429A (zh)
WO (1) WO2015200046A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8510596B1 (en) 2006-02-09 2013-08-13 Virsec Systems, Inc. System and methods for run time detection and correction of memory corruption
WO2015038944A1 (en) 2013-09-12 2015-03-19 Virsec Systems, Inc. Automated runtime detection of malware
CA2953793C (en) 2014-06-24 2021-10-19 Virsec Systems, Inc. System and methods for automated detection of input and output validation and resource management vulnerability
EP2963891A1 (en) * 2014-07-04 2016-01-06 Doro AB Improved remote assistance for a mobile communications terminal
US9772837B2 (en) * 2015-06-29 2017-09-26 Verizon Patent And Licensing Inc. Dynamic delivery of code and fixes
EP3472746B1 (en) * 2016-06-16 2020-05-13 Virsec Systems, Inc. Systems and methods for remediating memory corruption in a computer application
CN109074458B (zh) * 2016-07-28 2022-04-15 惠普发展公司,有限责任合伙企业 用于传送代码包变体的系统和方法
GB2563618B (en) * 2017-06-20 2020-09-16 Arm Ip Ltd Electronic system vulnerability assessment
JP6759169B2 (ja) * 2017-09-11 2020-09-23 株式会社東芝 情報処理装置、情報処理方法、および情報処理プログラム
US10671513B2 (en) * 2018-06-11 2020-06-02 Walgreen Co. System and method of capturing system configuration data to resolve an application malfunction
US11520900B2 (en) 2018-08-22 2022-12-06 Arizona Board Of Regents On Behalf Of Arizona State University Systems and methods for a text mining approach for predicting exploitation of vulnerabilities
EP3722981A1 (en) 2019-04-12 2020-10-14 Nxp B.V. System and method for applying patches to executable codes
CN111338942B (zh) * 2020-02-21 2022-09-09 郑州昂视信息科技有限公司 一种软件多样性的评估方法及系统
US20230367883A1 (en) * 2022-05-16 2023-11-16 Microsoft Technology Licensing, Llc Systems and processes for tailoring risk mitigation of threat events associated with software bill of materials

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130014275A1 (en) * 2010-03-31 2013-01-10 Irdeto Canada Corporation Method For Linking and Loading to Protect Applications
US20130219498A1 (en) * 2012-02-16 2013-08-22 Electronics And Telecommunications Research Institute Mobile terminal having security diagnosis functionality and method of making diagnosis on security of mobile terminal
CN103809996A (zh) * 2012-11-08 2014-05-21 辉达公司 对移动计算设备传播经更新驱动程序的方法和其传播系统

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060185018A1 (en) * 2005-02-17 2006-08-17 Microsoft Corporation Systems and methods for shielding an identified vulnerability
WO2008008401A2 (en) 2006-07-12 2008-01-17 Global Info Tek, Inc. A diversity-based security system and method
US9128741B2 (en) * 2007-10-05 2015-09-08 Mcafee, Inc. System, method, and computer program product for conditionally preventing use of hardware virtualization
US9058483B2 (en) * 2008-05-08 2015-06-16 Google Inc. Method for validating an untrusted native code module
US8706745B1 (en) * 2008-05-30 2014-04-22 Symantec Corporation Systems and methods for determining a file set
US8321949B1 (en) * 2008-08-29 2012-11-27 Adobe Systems Incorporated Managing software run in a computing system
EP2828745B1 (en) * 2012-03-22 2020-01-08 Irdeto B.V. Updating software components
US9210044B2 (en) 2012-07-27 2015-12-08 Dell Products L.P. Automated remediation with an appliance
CN104662547A (zh) * 2012-10-19 2015-05-27 迈克菲股份有限公司 移动应用管理
US9189619B2 (en) * 2012-11-13 2015-11-17 International Business Machines Corporation Runtime based application security and regulatory compliance in cloud environment
US20140259168A1 (en) * 2013-03-11 2014-09-11 Alcatel-Lucent Usa Inc. Malware identification using a hybrid host and network based approach

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130014275A1 (en) * 2010-03-31 2013-01-10 Irdeto Canada Corporation Method For Linking and Loading to Protect Applications
US20130219498A1 (en) * 2012-02-16 2013-08-22 Electronics And Telecommunications Research Institute Mobile terminal having security diagnosis functionality and method of making diagnosis on security of mobile terminal
CN103809996A (zh) * 2012-11-08 2014-05-21 辉达公司 对移动计算设备传播经更新驱动程序的方法和其传播系统

Also Published As

Publication number Publication date
WO2015200046A1 (en) 2015-12-30
JP6513716B2 (ja) 2019-05-15
EP3161624A1 (en) 2017-05-03
US20150379262A1 (en) 2015-12-31
US10019569B2 (en) 2018-07-10
JP2017523511A (ja) 2017-08-17

Similar Documents

Publication Publication Date Title
CN106462429A (zh) 出于安全的原因对各种软件模块的多个功能等效的变型的动态修补
US11019114B2 (en) Method and system for application security evaluation
US11741281B2 (en) Using line-of-code behavior and relation models to anticipate impact of hardware changes
CN103530563B (zh) 用于更新经授权软件的系统和方法
US9357397B2 (en) Methods and systems for detecting malware and attacks that target behavioral security mechanisms of a mobile device
US11625728B2 (en) Systems and methods for provisioning embedded internet of things universal IDS (IoT UIDs) in brownfield devices
KR101143999B1 (ko) Api 기반 어플리케이션 분석 장치 및 방법
US20130097660A1 (en) System and method for whitelisting applications in a mobile network environment
CN103577750A (zh) 隐私权限管理方法和装置
US20200177444A1 (en) Systems and Methods of Remotely Updating a Multitude of IP Connected Devices
EP2769324A1 (en) System and method for whitelisting applications in a mobile network environment
CN104036194B (zh) 一种应用程序中泄露隐私数据的漏洞检测方法及装置
JP2015092374A5 (zh)
CN104376266A (zh) 应用软件安全级别的确定方法及装置
CN104809397A (zh) 一种基于动态监控的Android恶意软件的检测方法及系统
US20220239648A1 (en) Systems and methods for an internet of things device registry display
US11503066B2 (en) Holistic computer system cybersecurity evaluation and scoring
CN110995825A (zh) 一种智能合约的发布方法、智能节点设备及存储介质
CN102868699A (zh) 一种提供数据交互服务的服务器的漏洞检测方法及工具
CN104036193B (zh) 一种应用程序的本地跨域漏洞检测方法及装置
CN103885798A (zh) 一种数据处理方法及电子设备
CN109740351A (zh) 一种嵌入式固件的漏洞检测方法、装置及设备
Newman et al. Making the internet of things sustainable: an evidence based practical approach in finding solutions for yet to be discussed challenges in the internet of things
US10554629B2 (en) Push based encryption
CN112560035B (zh) 应用检测方法、装置、设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20170222