CN115413342A - 用于识别嵌入式设备固件中的软件漏洞的系统和方法 - Google Patents
用于识别嵌入式设备固件中的软件漏洞的系统和方法 Download PDFInfo
- Publication number
- CN115413342A CN115413342A CN202180027570.8A CN202180027570A CN115413342A CN 115413342 A CN115413342 A CN 115413342A CN 202180027570 A CN202180027570 A CN 202180027570A CN 115413342 A CN115413342 A CN 115413342A
- Authority
- CN
- China
- Prior art keywords
- library
- firmware image
- internet
- computer
- true
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/572—Secure firmware programming, e.g. of basic input output system [BIOS]
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16Y—INFORMATION AND COMMUNICATION TECHNOLOGY SPECIALLY ADAPTED FOR THE INTERNET OF THINGS [IoT]
- G16Y30/00—IoT infrastructure
- G16Y30/10—Security thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种用于识别嵌入式设备固件中的软件漏洞的计算机实现的方法,该方法可以包括:(i)收集物联网设备的固件图像,(ii)从该物联网设备的该固件图像提取库依赖性,(iii)通过检查基准真值数据库来识别在该固件图像中指定的库的真值版本,该基准真值数据库记录先前遇到的库的真值版本的确认值,以及(iv)基于识别在该固件图像中指定的该库的该真值版本来执行安全操作,以保护用户免受安全风险。本发明还公开了各种其他方法、系统和计算机可读介质。
Description
交叉引用
本申请要求2020年5月8日提交的美国非临时申请号16/870,895的优先权,其名称为“用于识别嵌入式设备固件中的软件漏洞的系统和方法”。
背景技术
嵌入式系统可以与静态链接库和动态链接库捆绑。这些库可以任选地是开源。库还可以含有漏洞。易受攻击的库可以被恶意行为者利用以控制终端用户系统。例如,物联网僵尸网络可以利用影响物联网设备固件的多个不同漏洞以利用并接管设备。因此,对于这些僵尸网络中的许多僵尸网络,是否选择利用特定设备仅取决于是否存在影响该设备的漏洞。
随着消费者的现用物联网设备的兴起,识别易受攻击的链接库甚至变得更加至关重要,因为附带这些设备的固件的实例通常共享许多库以执行不同的任务。这些任务可以任选地包括web应用程序、图像处理、内核驱动程序等。在制造商跨多种设备类型重新使用相同固件图像(其中也许仅在应用层处做出微小改变)的趋势下,以及在走开发捷径的趋势下,一旦这些库中的一个库被认为是易受攻击的,就可能影响大量的设备类型和品牌。因此,本公开识别并解决了对用于识别嵌入式设备固件中的软件漏洞的系统和方法的需求。
发明内容
如将在下文更详细地描述的,本公开描述了用于识别嵌入式设备固件中的软件漏洞的各种系统和方法。在一个示例中,用于保护用户的计算机实现的方法可以包括:(i)收集物联网设备的固件图像,(ii)从物联网设备的固件图像提取库依赖性,(iii)通过检查基准真值数据库来识别在固件图像中指定的库的真值版本,该基准真值数据库记录先前遇到的库的真值版本的确认值,以及(iv)基于识别在固件图像中指定的库的真值版本来执行安全操作,以保护用户免受安全风险。
在一个实施方案中,从供应商网站收集物联网设备的固件图像。在一个实施方案中,使用屏幕抓取部件从供应商网站收集物联网设备的固件图像。在一个实施方案中,使用屏幕抓取部件由网络爬虫从供应商网站收集物联网设备的固件图像。
在一些示例中,从物联网设备的固件图像提取库依赖性可以包括从程序文件标头内的条目提取库依赖性。在一个实施方案中,程序文件标头内的条目识别由对应的程序文件所请求的库。在一个实施方案中,至少部分地通过从公共储存库收集用真值版本标记的库的二进制版本来生成基准真值数据库。在一个实施方案中,至少部分地通过收集源代码版本来生成基准真值数据库。
在一些示例中,通过检查基准真值数据库来识别在固件图像中指定的库的真值版本可以包括:(i)提取在固件图像中指定的库的一组导出符号;(ii)根据基准真值数据库,针对先前遇到的库产生的多组符号的列表来分别检查所提取的该组导出符号,以及(iii)识别固件图像中指定的库的该组导出符号与先前遇到的库产生的多组符号的列表中的条目之间的匹配。在一个实施方案中,安全操作可以包括将固件图像的发布日期与固件图像中指定的库的真值版本的发布日期进行比较,以给出对物联网设备的维护程度的指示。
在一个实施方案中,一种用于实现上述方法的系统可以包括:(i)收集模块,该收集模块存储在存储器中,该收集模块收集物联网设备的固件图像,(ii)提取模块,该提取模块存储在存储器中,该提取模块从物联网设备的固件图像提取库依赖性,(iii)识别模块,该识别模块存储在存储器中,该识别模块通过检查基准真值数据库来识别在固件图像中指定的库的真值版本,该基准真值数据库记录先前遇到的库的真值版本的确认值,(iv)执行模块,该执行模块存储在存储器中,该执行模块基于识别在固件图像中指定的库的真值版本来执行安全操作,以保护用户免受安全风险,以及(v)至少一个物理处理器,该至少一个物理处理器被配置为执行收集模块、提取模块、识别模块和执行模块。
在一些示例中,可将上述方法编码为非暂态计算机可读介质上的计算机可读指令。例如,计算机可读介质可以包含一个或多个计算机可执行指令,当由计算设备的至少一个处理器执行时,该一个或多个计算机可执行指令可以使计算设备(i)收集物联网设备的固件图像,(ii)从物联网设备的固件图像提取库依赖性,(iii)通过检查基准真值数据库来识别在固件图像中指定的库的真值版本,该基准真值数据库记录先前遇到的库的真值版本的确认值,并且(iv)基于识别在固件图像中指定的库的真值版本来执行安全操作,以保护用户免受安全风险。
来自本文所述的实施方案中的任何一者的特征可根据本文所述的一般原理彼此结合使用。通过结合附图和权利要求阅读下面的详细描述,将会更充分地理解这些和其他实施方案、特征和优点。
附图说明
附图示出了多个示例性实施方案并且作为说明书的一部分。这些附图连同下面的描述展示并且说明本公开的各种原理。
图1是用于识别嵌入式设备固件中的软件漏洞的示例性系统的框图。
图2是用于识别嵌入式设备固件中的软件漏洞的另外示例性系统的框图。
图3是用于识别嵌入式设备固件中的软件漏洞的示例性方法的流程图。
图4是示例性数据库的框图。
图5是能够实现本文描述和/或示出的实施方案中的一个或多个实施方案的示例性计算系统的框图。
图6是能够实现本文描述和/或示出的实施方案中的一个或多个实施方案的示例性计算网络的框图。
在全部附图中,相同引用字符和描述指示类似但未必相同的元件。虽然本文所述的示例性实施方案易受各种修改和替代形式的影响,但在附图中以举例的方式示出了特定实施方案并且将在本文详细描述。然而,本文所述的示例性实施方案并非旨在限于所公开的特定形式。相反,本公开涵盖落在所附权利要求范围内的所有修改形式、等同形式和替代形式。
具体实施方式
本公开整体涉及用于识别嵌入式设备固件中的软件漏洞的系统和方法。一般来讲,所公开的主题可以通过改善物联网设备和对应固件内对应库的版本号的识别准确度或效率来改善相关系统。准确且有效地识别版本号可以使对应的安全系统保护用户免受与这些库的特定版本相关联的漏洞的影响。准确且有效地识别版本号还可以使安全系统能够从安全角度估计或测量物联网设备的维护程度。
下面将参考图1至图2提供用于识别嵌入式设备固件中的软件漏洞的示例性系统的详细描述。也将结合图3至图4提供对相应计算机实现的方法的详细描述。另外,将分别结合图5和图6提供能够实现本文描述的实施方案中的一个或多个实施方案的示例性计算系统和网络架构的详细描述。
图1是用于保护用户的示例性系统100的框图。如该图所示,示例性系统100可以包括用于执行一个或多个任务的一个或多个模块102。例如,并且如将在下文更详细地解释,示例性系统100可以包括收集模块104,该收集模块收集物联网设备的固件图像,诸如固件图像122。示例性系统100可以附加包括提取模块106,该提取模块从物联网设备的固件图像提取库依赖性。示例性系统100还可以包括识别模块108,该识别模块通过检查基准真值数据库来识别在固件图像中指定的库的真值版本,诸如真值版本124,该基准真值数据库记录先前遇到的库的真值版本的确认值。示例性系统100可以附加包括执行模块110,该执行模块基于识别在固件图像中指定的库的真值版本来执行安全操作,以保护用户免受安全风险。尽管被示为独立元件,但图1中的模块102中的一个或多个模块可以表示单个模块或应用程序的一部分。
在某些实施方案中,图1中的模块102中的一个或多个模块可以表示一个或多个软件应用程序或程序,该一个或多个软件应用程序或程序在被计算设备执行时,可使计算设备执行一个或多个任务。例如,并且如将在下文更详细描述的,模块102中的一个或多个模块可表示存储在一个或多个计算设备上并被配置为在该一个或多个计算设备上运行的模块,该一个或多个计算设备诸如图2中示出的设备(例如,计算设备202和/或服务器206)。图1中的模块102中的一个或多个模块还可以表示被配置为执行一个或多个任务的一台或多台专用计算机的全部或部分。
如图1所示,示例性系统100还可以包括一个或多个存储器设备,诸如存储器140。存储器140通常表示能够存储数据和/或计算机可读指令的任何类型或形式的易失性或非易失性存储设备或介质。在一个示例中,存储器140可以存储、加载和/或维护模块102中的一个或多个模块。存储器140的示例包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、闪存存储器、硬盘驱动器(HDD)、固态驱动器(SSD)、光盘驱动器、高速缓存、以上各项中的一个或多个的变型或组合、和/或任何其他合适的存储存储器。
如图1所示,示例性系统100还可以包括一个或多个物理处理器,诸如物理处理器130。物理处理器130通常表示能够解译和/或执行计算机可读指令的任何类型或形式的硬件实现的处理单元。在一个示例中,物理处理器130可以访问和/或修改存储在存储器140中的模块102中的一个或多个模块。除此之外或另选地,物理处理器130可执行模块102中的一个或多个模块以促进识别嵌入式设备固件中的软件漏洞。物理处理器130的示例包括但不限于微处理器、微控制器、中央处理单元(CPU)、实现软核处理器的现场可编程门阵列(FPGA)、专用集成电路(ASIC)、以上各项中的一个或多个的各部分、以上各项中的一个或多个的变型或组合、和/或任何其他合适的物理处理器。
图1中的示例性系统100可以用多种方式来实现。例如,示例性系统100的全部或一部分可以表示图2中的示例性系统200的部分。如图2所示,系统200可包括经由网络204与服务器206通信的计算设备202。在一个示例中,模块102的功能的全部或一部分功能可以由计算设备202、服务器206和/或任何其他合适的计算系统执行。
计算设备202通常表示能够读取计算机可执行指令的任何类型或形式的计算设备。在一些示例中,计算设备202可以对应于可以成功地执行图3的方法300以保护用户的任何计算设备。计算设备202的附加示例包括但不限于膝上型计算机、平板电脑、台式计算机、服务器、蜂窝电话、个人数字助理(PDA)、多媒体播放器、嵌入式系统、可穿戴设备(例如,智能手表、智能眼镜等)、智能车辆、智能包装(例如,主动或智能包装)、游戏控制台、所谓的物联网设备(例如,智能设备等)、以上各项中的一个或多个的变型或组合、和/或任何其他合适的计算设备。
服务器206通常表示能够与计算设备202协调促进执行方法300的任何类型或形式的计算设备。服务器206的附加示例包括但不限于,被配置为运行某些软件应用程序和/或提供各种安全、web、存储和/或数据库服务的安全服务器、应用服务器、web服务器、存储服务器和/或数据库服务器。尽管在图2中示出为单个实体,但服务器206可以包括和/或表示彼此协同工作和/或操作的多个服务器。
网络204通常表示能够促进通信或数据传输的任何介质或架构。在一个实施方案中,网络204可促进计算设备202与服务器206之间的通信。在该示例中,网络204可以使用无线和/或有线连接来促进通信或数据传输。网络204的示例包括但不限于:内联网、广域网(WAN)、局域网(LAN)、个域网(PAN)、互联网、电力线通信(PLC)、蜂窝网络(例如,全球移动通信系统(GSM)网络)、以上各项中的一个或多个的各部分、以上各项中的一个或多个的变型或组合、和/或任何其他合适的网络。
图3是用于识别嵌入式设备固件中的软件漏洞的示例性计算机实现的方法300的流程图。图3中所示的步骤可以由任何合适的计算机可执行代码和/或计算系统执行,该计算系统包括图1中的系统100、图2中的系统200、和/或以上各项中的一个或多个的变型或组合。在一个示例中,图3中所示的步骤中的每一个都可以表示算法,其结构包括多个子步骤和/或由多个子步骤表示,该多个子步骤的示例将在下面更详细地提供。
如图3所示,在步骤302处,本文所述的系统中的一个或多个系统可以收集物联网设备的固件图像。例如,收集模块104可以作为图2中的计算设备202的一部分,收集物联网设备210的固件图像122。
收集模块104可以以多种方式收集物联网设备的固件图像。在一些示例中,收集模块104可以收集物联网设备的固件图像,作为用于收集多个不同的相应物联网设备的多个固件图像的间歇过程的一部分。
在一个实施方案中,从供应商网站收集物联网设备的固件图像。在其他示例中,收集模块104可以使用屏幕抓取部件从供应商网站收集物联网设备的固件图像。除此之外或另选地,收集模块104可以作为网络爬虫的一部分或与网络爬虫协调,至少部分地通过爬行到供应商网站来从供应商网站收集物联网设备的固件图像。此类屏幕抓取部件的一个例示性示例可以包括SCRAPY。
在一些示例中,当使用屏幕抓取部件时,收集模块104还可以任选地应用一个或多个供应商特定的插件。供应商特定的插件可以使收集模块104能够解析并且成功地提取物联网设备的固件图像。例如,供应商特定的插件可以向收集模块104提供信息,该信息指示收集模块104如何从对应的供应商网站成功地读取并且下载固件图像。
在一些示例中,由收集模块104收集的固件图像的集合可以包括原始固件图像和/或附加的元数据。附加的元数据可以任选地指定信息(诸如发布日期和/或诸如版本号)的值。
收集模块104还可以任选地相对于物联网设备的固件图像参与预处理阶段。收集模块104可以至少部分地通过由提取一个或多个二进制文件来解包固件图像来执行预处理阶段。解包程序可以基于软件工具,该软件工具使人们能够搜索嵌入式文件和/或可执行代码的给定二进制图像。此类软件工具的一个例示性示例可以包括使人们能够从二进制图像成功读取、浏览、解析和/或提取信息的BINWALK。除应用软件工具(诸如BINWALK)之外,收集模块104还可以任选地应用一个或多个附加补丁,这可以改善总体成功率。
作为预处理阶段的结尾部分,收集模块104可以任选地识别解包的固件图像中的一个或多个二进制文件。收集模块104可以通过针对ELF签名(可执行和可链接格式签名)检查对应的幻数中的一个或多个幻数来识别二进制文件。
在步骤304处,本文所述的系统中的一个或多个系统可以从物联网设备的固件图像提取库依赖性。例如,提取模块106可以作为图2中的计算设备202的一部分,从物联网设备210的固件图像122提取库依赖性。
提取模块106可以多种方式执行步骤304。例如,提取模块106可以通过从程序文件标头内的条目提取库依赖性,来任选地从物联网设备的固件图像提取库依赖性。
任选地,提取模块106可以在已经识别出一个或多个二进制文件之后,提取静态库依赖性和/或动态链接库依赖性。提取模块106可以从标头信息提取这些依赖性。例如,在动态链接库的上下文中,标头内的对应条目可以包括DT_NEEDED条目。此类条目可以指定请求或需要一个或多个库文件以成功地编译或执行对应的程序文件。
在一些示例中,由收集模块104和/或提取模块106执行的解包程序可能无法恢复确切的文件系统结构。例如,收集模块104可以解包固件图像并且由于丢失的安装信息而无法恢复确切的文件系统结构。为了克服该缺陷或以其他方式补偿该缺陷,提取模块106可以任选地识别在标头条目(诸如DT_NEEDED条目)内指定的名称。提取模块106还可以任选地针对在标头条目内指定的这些名称的一个或多个所检测的实例对整个解包固件包进行搜索。类似地,在库识别期间可能已经遇到的任何符号链接可以由提取模块106以与上文关于标头条目所述的平行方式来解决。
在步骤306处,本文所述的系统中的一个或多个系统可以通过检查基准真值数据库来识别在固件图像中指定的库的真值版本,该基准真值数据库记录先前遇到的库的真值版本的确认值。例如,识别模块108可以作为图2中的计算设备202的一部分,通过检查基准真值数据库250来识别在固件图像122中指定的库的真值版本124,该基准真值数据库记录先前遇到的库的真值版本的确认值。
识别模块108可以以多种方式识别固件图像中指定的库的版本的真实值。具体地,为了查明在固件图像中识别的库的真值版本,识别模块108可以首先获得或访问基准真值数据库。在一些示例中,识别模块108可以至少部分地通过生成基准真值数据库来获得或访问基准真值数据库。
一般来讲,识别模块108可以任选地利用基准真值数据库以建立、访问或参考符号数据库。在一些示例中,基准真值数据库可以包括符号数据库。符号数据库可以任选地列出先前遇到的并记录在对应数据库内的每个库版本的该组符号。当识别新遇到的库或未知库的真值版本时,可以以平行方式提取新遇到的库的一组导出符号。因此,识别模块108可以比较未知库的版本的新提取的该组导出符号,然后将新提取的该组导出符号与符号数据库进行比较,以尝试探知并识别匹配。
在一些示例中,识别模块108可以通过计算Jaccard相似度(诸如Jaccard系数或Jaccard距离)的测量值来检测匹配。在这些示例中,识别模块108可以任选地针对对应阈值来比较相似度的测量值,该对应阈值指定一个相似度水平,超过该相似度水平时,新遇到的库被认为与记录在对应数据库内的先前遇到的库中的一个库相匹配。
在一个实施方案中,至少部分地通过从公共储存库收集用真值版本标记的库的二进制版本来生成基准真值数据库。除此之外或另选地,至少部分地通过收集源代码版本来生成基准真值数据库。在其他示例中,识别模块108可以任选地生成基准真值数据库(包括任选地符号数据库)的部分或全部。
更一般地,识别模块108可以通过相对于基准真值数据库执行一连串步骤来识别在固件图像中指定的库的真值版本。首先,识别模块108可以任选地提取在固件图像中指定的库的一组导出符号。其次,根据基准真值数据库,识别模块108可以任选地针对先前遇到的库产生的多组符号的列表来分别检查所提取的该组导出符号。最后,识别模块108还可以任选地识别在固件图像中指定的库的该组导出符号与先前遇到的库产生的多组符号的列表中的条目之间的匹配。
图4示出了基准真值数据库250和对应于方法300的步骤306的工作流的例示性示例。如该图中进一步所示,识别模块108可以识别组402与组406之间的匹配410。组402可以对应于由新遇到的库生成的一组导出符号,作为固件图像122的一部分。换句话讲,模块102可能已经遇到由物联网设备的固件所请求的新的库实例。为了帮助查明库的特定和准确版本号,识别模块108可以任选地生成新遇到的库产生的导出符号的列表。
如本文所用,术语“符号”通常可以指唯一地识别可通过对应库来进行访问的功能的字母数字串或其他字符串。一般来讲,由对应库产生的符号的列表可以在一对一映射中映射,其中每个功能和全部功能可通过库来进行访问。换句话讲,每个符号可以唯一地识别对应的功能。在一些示例中,每个符号可以对应于或包括库和可执行文件的上下文中的有序值。
相比之下,基准真值数据库250可以包含识别先前遇到的库版本的数据,该数据包括指示每个库的身份或名称的信息、每个库的每个实例的版本的值(例如,确认或验证的版本值)和/或由记录在基准真值数据库内的库的每个相应版本产生的对应的一组导出符号(例如,对于每个库-版本对,存在对应的一组导出符号)。在图4的示例中,基准真值数据库250包括三个单独的组:组404、组406和组408,其对应于先前遇到的并且记录在基准真值数据库250内的三个单独的库-版本对。此外,如该图所示,识别模块108可以识别组402与组406之间的匹配,从而进一步指示在步骤306处的新遇到的库与先前遇到的并且记录在基准真值数据库250内的组406相对应的库相匹配。因此,识别模块108可以首先检测组402与组406之间的该匹配。识别模块108随后可以探知组406的所验证的版本值。然后,识别模块108可以将组406的所验证的版本值应用于或传播到以上结合步骤306讨论的新遇到的库中的组402。相比之下,组402与组404或组408不匹配(即,因为组404不包括符号S2并且因为组408包括符号S4而不是符号S2)。
在步骤308处,本文所述的系统中的一个或多个系统可以基于识别在固件图像中指定的库的真值版本来执行安全操作,以保护用户免受安全风险。例如,执行模块110可以作为图2中的计算设备202的一部分,基于识别在固件图像中指定的库的真值版本来执行安全操作,以保护用户免受安全风险。
执行模块110可以以多种方式执行安全操作。在一些示例中,安全操作可以包括将固件图像的发布日期与固件图像中指定的库的真值版本的发布日期进行比较,以给出对物联网设备的维护程度的指示。在这些示例中,执行模块110可以由此获得对应产品的维护程度的测量值。因此,执行模块110还可以任选地通知用户或管理员(诸如图2所示的用户260)关于所测量的维护程度,从而帮助通知用户或管理员关于可能与从安全角度来看维护程度低的产品相关联的潜在安全风险。
除此之外或另选地,执行模块110还可以任选地通过针对一个或多个漏洞数据库检查库的真值版本来至少部分地执行安全操作。此类漏洞数据库可以指定库的对应版本的已知漏洞。因此,执行模块110可以检查并且确认库的真值版本具有至少一个已知的漏洞,该漏洞先前被记录在对应的漏洞数据库内。以这种方式,可以通知与物联网设备相关联的用户或管理员关于安全风险,并且可能执行一个或多个补救操作以保护他/她免受该风险。
以上讨论提供了在图3所示的方法300的上下文中的所公开的系统和方法的总体概述。除此之外或另选地,以下讨论提供了所公开的主题的具体实施方案的详细概述。
物联网设备通常可以与含有漏洞的库(包括开源库)捆绑。大多数物联网僵尸网络均与漏洞利用一起包装。将僵尸网络与漏洞利用一起包装可以生成多个漏洞。当发现新漏洞时,也可以更新僵尸网络。该更新程序可以提供主要的物联网设备感染机制,该感染机制如今构成安全威胁。
在一些示例中,易受攻击的库可以跨多种设备重新使用。此类一系列设备可以包括开源库、软件开发套件、白标品牌等。跨多种设备重新使用易受攻击的库可以增加这些漏洞和对应的漏洞利用的影响。
解决相关问题的一种方法是基于动态分析。在该方法中,执行真实物联网设备/固件仿真。除此之外,还执行了值的模糊化。遗憾的是,该方法通常涉及或需要执行或操作对应的物联网设备。
解决相关问题的第二方法是基于静态分析。在该方法中,对正在评估的候选代码执行静态分析和/或符号执行。重要的是,该第二方法冗长,易于出现假阳性,并且还可能涉及或需要访问对应的源代码。
类似地,在第二方法内,安全分析师可以通过执行二进制DIFF操作来搜索固件图像内部的易受攻击的代码。遗憾的是,由于将涉及的手动工作的量,第二方法的该变体可能限于一个或两个库。具体地,在该方面中的第二方法可以涉及用所有可能的编译参数等来编译库。
为了改善此类方法,本申请公开了可以提取静态库和/或动态链接库的系统和方法。本申请的主题还可以识别这些库的真值版本。本申请的主题可以使用基于符号的版本识别程序,如上文进一步讨论的。使用基于符号的版本识别可以避免昂贵的二进制DIFF操作,其可以优选地保留为最后手段。使用基于符号的版本识别也可以提高准确度,并使得能够扩大到数百个库。使用基于符号的版本识别也可以每个库版本仅涉及一个二进制文件。该方法还可以使安全供应商能够聚焦在实际上与真实物联网设备固件一起使用的库上。
本申请内公开的一种方法可以开始于固件收集和解包。在该示例中,可以使用屏幕抓取部件由程序(诸如网络爬虫)来抓取物联网设备供应商网站。因此,该程序可以提取注释的固件图像,该固件图像可以任选地指定元数据,包括产品、版本、发布日期等。该方法可以继续进行基于BINWALK的解包的增强版本。在一些示例中,用于识别库的版本的该经改善的方法可以集中于基于LINUX的固件。
成功收集固件图像后,本申请的主题可以提取固件图像内的库。可以通过对应的标头条目(诸如DT-ENTRIES)来识别动态链接库。所公开的系统和方法可以利用这些标头条目以识别和/或下载对应的库二进制文件。
除此之外或另选地,可以使用基于启发式的用户代码或库边界识别来提取通过静态链接识别的库。换句话讲,所公开的主题可以搜索静态链接的二进制文件中已知库的实例,并由此成功地推断对应的边界。
随后,所公开的主题可以识别新遇到的库的真值版本。为了将其准备好,所公开的主题可以收集库的二进制版本或源代码。在这些示例中,每个版本的一个二进制文件可能足以成功地识别新遇到的库的真值版本。从该所收集的数据中,所公开的主题可以生成由每个库(例如,由每个库-版本实例)导出的符号的基准真值数据库。具体地,所公开的主题可以计算固件图像中的库与基准真值数据库之间的Jaccard距离,并且所公开的主题可以评估完美或足够的匹配,如上文进一步讨论的。
最后,作为用于保护对应用户、管理员或顾客的安全操作,所公开的主题可以将所提取的库与先前遇到的库版本实例中已知漏洞的数据库相关联。除此之外或另选地,所公开的主题可以使用户或安全分析师能够成功地研究物联网设备供应商的开发/维护实践,其中较慢或较少的安全维护可能引起潜在用户或顾客的注意,以保护他们免受对应的安全风险。
图5是能够实现本文描述和/或示出的实施方案中的一个或多个实施方案的示例性计算系统510的框图。例如,计算系统510的全部或一部分可单独地或与其他元件结合来执行本文所述的步骤中的一个或多个步骤(诸如图3中所示的步骤中的一个或多个步骤)和/或作为用于执行其的装置。计算系统510的全部或一部分也可执行本文描述和/或示出的任何其他步骤、方法或过程和/或作为用于执行这些步骤、方法或过程的装置。
计算系统510广义地表示能够执行计算机可读指令的任何单处理器或多处理器计算设备或系统。计算系统510的示例包括但不限于:工作站、膝上型计算机、客户端终端、服务器、分布式计算系统、手持设备或任何其他计算系统或设备。在其最基本的配置中,计算系统510可包括至少一个处理器514和系统存储器516。
处理器514通常表示能够处理数据或解译和执行指令的任何类型或形式的物理处理单元(例如,硬件实现的中央处理单元)。在某些实施方案中,处理器514可接收来自软件应用程序或模块的指令。这些指令可使处理器514执行本文描述和/或示出的示例性实施方案中的一个或多个示例性实施方案的功能。
系统存储器516通常表示能够存储数据和/或其他计算机可读指令的任何类型或形式的易失性或非易失性存储设备或介质。系统存储器516的示例包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、闪存存储器或任何其他合适的存储器设备。虽然并不是必需的,但在某些实施方案中,计算系统510可包括易失性存储器单元(诸如例如系统存储器516)和非易失性存储设备(诸如例如主存储设备532,如下文详细地描述的)两者。在一个示例中,图1的模块102中的一个或多个模块可被加载到系统存储器516中。
在一些示例中,系统存储器516可存储和/或加载操作系统540以供处理器514执行。在一个示例中,操作系统540可包括和/或表示管理计算机硬件和软件资源和/或向计算系统510上的计算机程序和/或应用程序提供公共服务的软件。操作系统540的示例包括但不限于LINUX、JUNOS、MICROSOFT WINDOWS、WINDOWS MOBILE、MAC OS、APPLE’S IOS、UNIX、GOOGLE CHROME OS、GOOGLE’S ANDROID、SOLARIS,以上各项中的一个或多个的变型,和/或任何其他合适的操作系统。
在某些实施方案中,除了处理器514和系统存储器516之外,示例性计算系统510还可包括一个或多个部件或元件。例如,如图5所示,计算系统510可包括存储器控制器518、输入/输出(I/O)控制器520和通信接口522,其中的每一者都可经由通信基础结构512互连。通信基础结构512通常表示能够促进计算设备的一个或多个部件之间的通信的任何类型或形式的基础结构。通信基础结构512的示例包括但不限于通信总线(诸如工业标准体系结构(ISA)、外围组件互连(PCI)、PCI Express(PCIe)或类似的总线)和网络。
存储器控制器518通常表示能够处理存储器或数据或控制计算系统510的一个或多个部件之间的通信的任何类型或形式的设备。例如,在某些实施方案中,存储器控制器518可经由通信基础结构512来控制处理器514、系统存储器516和I/O控制器520之间的通信。
I/O控制器520通常表示能够协调和/或控制计算设备的输入和输出功能的任何类型或形式的模块。例如,在某些实施方案中,I/O控制器520可控制或促进计算系统510的一个或多个元件之间的数据传输,这些元件为诸如处理器514、系统存储器516、通信接口522、显示适配器526、输入接口530和存储接口534。
如图5所示,计算系统510也可以包括至少一个显示设备524,该显示设备经由显示适配器526联接到I/O控制器520。显示设备524通常表示能够以可视的方式显示由显示适配器526转发的信息的任何类型或形式的设备。类似地,显示适配器526通常表示被配置为转发来自通信基础结构512(或来自帧缓冲器,如本领域中已知的)的图形、文本和其他数据以在显示设备524上显示的任何类型或形式的设备。
如图5所示,示例性计算系统510还可包括经由输入接口530联接到I/O控制器520的至少一个输入设备528。输入设备528通常表示能够向示例性计算系统510提供输入(由计算机或人生成的输入)的任何类型或形式的输入设备。输入设备528的示例包括但不限于:键盘、指向设备、语音识别设备、以上各项中的一者或多者的变型或组合、和/或任何其他输入设备。
除此之外或另选地,示例性计算系统510可包括附加I/O设备。例如,示例性计算系统510可以包括I/O设备536。在该示例中,I/O设备536可包括和/或表示促进与计算系统510的人机交互的用户界面。I/O设备536的示例包括但不限于:计算机鼠标、键盘、监视器、打印机、调制解调器、相机、扫描仪、麦克风、触摸屏设备、以上各项中的一者或多者的变型或组合、和/或任何其他I/O设备。
通信接口522广义地表示能够促进示例性计算系统510与一个或多个附加设备之间的通信的任何类型或形式的通信设备或适配器。例如,在某些实施方案中,通信接口522可以促进计算系统510与包括附加计算系统的专用或公共网络之间的通信。通信接口522的示例包括但不限于:有线网络接口(诸如网络接口卡)、无线网络接口(诸如无线网络接口卡)、调制解调器和任何其他合适的接口。在至少一个实施方案中,通信接口522可经由与网络诸如互联网的直接链路来提供与远程服务器的直接连接。通信接口522也可通过例如局域网(诸如以太网网络)、个人区域网、电话或电缆网络、蜂窝电话连接、卫星数据连接或任何其他合适的连接来间接地提供此类连接。
在某些实施方案中,通信接口522还可表示主机适配器,该主机适配器被配置为经由外部总线或通信信道来促进计算系统510与一个或多个附加网络或存储设备之间的通信。主机适配器的示例包括但不限于:小型计算机系统接口(SCSI)主机适配器、通用串行总线(USB)主机适配器、电气与电子工程师协会(IEEE)1394主机适配器、高级技术附件(ATA)、并行ATA(PATA)、串行ATA(SATA)和外部SATA(eSATA)主机适配器、光纤通道接口适配器、以太网适配器等。通信接口522还可允许计算系统510参与分布式或远程计算。例如,通信接口522可接收来自远程设备的指令或将指令发送到远程设备以供执行。
在一些示例中,系统存储器516可存储和/或加载网络通信程序538以供处理器514执行。在一个示例中,网络通信程序538可包括和/或表示使计算系统510能够与另一计算系统(图5中未示出)建立网络连接542和/或通过通信接口522与其他计算系统通信的软件。在该示例中,网络通信程序538可引导经由网络连接542发送到另一个计算系统的输出流量的流。除此之外或另选地,网络通信程序538可结合处理器514引导对经由网络连接542从另一个计算系统所接收的输入流量的处理。
尽管未在图5中以这种方式示出,但网络通信程序538可另选地存储和/或加载在通信接口522中。例如,网络通信程序538可包括和/或表示由结合在通信接口522中的处理器和/或专用集成电路(ASIC)执行的软件和/或固件的至少一部分。
如图5所示,示例性计算系统510还可包括经由存储接口534联接到通信基础结构512的主存储设备532和备份存储设备533。存储设备532和533通常表示能够存储数据和/或其他计算机可读指令的任何类型或形式的存储设备或介质。例如,存储设备532和533可为磁盘驱动器(例如,所谓的硬盘驱动器)、固态驱动器、软盘驱动器、磁带驱动器、光盘驱动器、闪存驱动器等。存储接口534通常表示用于在存储设备532和533与计算系统510的其他部件之间传输数据的任何类型或形式的接口或设备。
在某些实施方案中,存储设备532和533可被配置为对被配置为存储计算机软件、数据或其他计算机可读信息的可移除存储单元执行读取和/或写入。合适的可移除存储单元的示例包括但不限于:软盘、磁带、光盘、闪存存储器设备等。存储设备532和533还可包括允许将计算机软件、数据或其他计算机可读指令加载到计算系统510内的其他类似的结构或设备。例如,存储设备532和533可被配置为读取和写入软件、数据或其他计算机可读信息。存储设备532和533还可以是计算系统510的一部分,或者可以是通过其他接口系统进行访问的单独的设备。
可将多个其他设备或子系统连接到计算系统510。相反地,无需图5中示出的所有部件和设备都存在,也可以实践本文描述和/或示出的实施方案。上文提及的设备和子系统也可以通过不同于图5所示的方式进行互连。计算系统510也可以采用任何数量的软件、固件和/或硬件配置。例如,本文所公开的示例性实施方案中的一个或多个实施方案可被编码为计算机可读介质上的计算机程序(也称为计算机软件、软件应用程序、计算机可读指令或计算机控制逻辑)。如本文所用,术语“计算机可读介质”通常指能够存储或携带计算机可读指令的任何形式的设备、载体或介质。计算机可读介质的示例包括而不限于:传输型介质(诸如载波)和非暂态型介质(诸如磁存储介质,例如,硬盘驱动器、带驱动器和软盘)、光存储介质(例如,光盘(CD)、数字视频盘(DVD)和蓝光光盘)、电子存储介质(例如,固态驱动器和闪存介质)和其他分配系统。
可以将包含计算机程序的计算机可读介质加载到计算系统510中。然后,可以将存储在计算机可读介质上的计算机程序的全部或一部分存储在系统存储器516和/或存储设备532和533的各个部分中。当由处理器514执行时,加载到计算系统510中的计算机程序可以使处理器514执行本文描述和/或示出的示例性实施方案中的一个或多个实施方案的功能和/或作为用于执行其的装置。除此之外或另选地,可在固件和/或硬件中实现本文描述和/或示出的示例性实施方案中的一个或多个实施方案。例如,计算系统510可被配置为适于实现本文所公开的示例性实施方案中的一个或多个实施方案的专用集成电路(ASIC)。
图6为示例性网络架构600的框图,其中客户端系统610、620和630以及服务器640和645可以联接到网络650。如上详述,网络架构600的全部或一部分可以单独地或与其他元件结合地来执行本文所公开的步骤中的一个或多个步骤(诸如图3中所示的步骤中的一个或多个步骤)和/或作为用于执行其的装置。网络架构600的全部或一部分还可以用于执行本公开中阐述的其他步骤和特征和/或作为用于执行其的装置。
客户端系统610、620和630通常表示任何类型或形式的计算设备或系统,诸如图5中的示例性计算系统510。类似地,服务器640和645通常表示被配置为提供各种数据库服务和/或运行某些软件应用程序的计算设备或系统,诸如应用服务器或数据库服务器。网络650通常表示任何电信或计算机网络,包括例如内联网、WAN、LAN、PAN或互连网。在一个示例中,客户端系统610、620和/或630以及/或者服务器640和/或645可包括图1的系统100的全部或一部分。
如图6所示,一个或多个存储设备660(1)至660(N)可直接附接到服务器640。类似地,一个或多个存储设备670(1)至670(N)可直接附接到服务器645。存储设备660(1)至660(N)和存储设备670(1)至670(N)通常表示能够存储数据和/或其他计算机可读指令的任何类型或形式的存储设备或介质。在某些实施方案中,存储设备660(1)至660(N)和存储设备670(1)至670(N)可表示被配置为使用各种协议(诸如网络文件系统(NFS)、服务器消息块(SMB)或通用互联网文件系统(CIFS))与服务器640和645进行通信的网络连接存储(NAS)设备。
服务器640和645也可连接到存储区域网络(SAN)构架680。SAN构架680通常表示能够促进多个存储设备之间的通信的任何类型或形式的计算机网络或架构。SAN构架680可促进服务器640和645与多个存储设备690(1)至690(N)和/或智能存储阵列695之间的通信。SAN构架680还可经由网络650以及服务器640和645以此类方式促进客户端系统610、620和630与存储设备690(1)至690(N)和/或智能存储阵列695之间的通信:设备690(1)至690(N)和阵列695呈现为客户端系统610、620和630的本地附接设备。与存储设备660(1)至660(N)和存储设备670(1)至670(N)相同,存储设备690(1)至690(N)和智能存储阵列695通常表示能够存储数据和/或其他计算机可读指令的任何类型或形式的存储设备或介质。
在某些实施方案中,并且参考图5的示例性计算系统510,通信接口(诸如图5中的通信接口522)可以用于在每个客户端系统610、620和630与网络650之间提供连通性。客户端系统610、620和630能够使用例如web浏览器或其他客户端软件来访问服务器640或645上的信息。此类软件可允许客户端系统610、620和630访问由服务器640、服务器645、存储设备660(1)至660(N)、存储设备670(1)至670(N)、存储设备690(1)至690(N)或智能存储阵列695托管的数据。尽管图6示出使用网络(诸如互联网)来交换数据,但本文描述和/或示出的实施方案不仅限于互联网或任何特定的基于网络的环境。
在至少一个实施方案中,本文所公开的示例性实施方案中的一个或多个示例性实施方案的全部或一部分可被编码为计算机程序并加载到服务器640、服务器645、存储设备660(1)至660(N)、存储设备670(1)至670(N)、存储设备690(1)至690(N)、智能存储阵列695或它们的任何组合上并被其执行。本文所公开的示例性实施方案中的一个或多个示例性实施方案的全部或一部分也可被编码为计算机程序,存储在服务器640中,由服务器645运行,以及通过网络650分发到客户端系统610、620和630。
如上详述,计算系统510和/或网络架构600的一个或多个部件可以单独地或与其他元件结合地来执行用于识别嵌入式设备固件中的软件漏洞的示例性方法的一个或多个步骤和/或作为用于执行其的装置。
虽然上述公开内容使用特定框图、流程图和示例阐述了各种实施方案,但每个框图部件、流程图步骤、操作和/或本文描述和/或例示的部件可使用多种硬件、软件或固件(或其任何组合)配置单独和/或共同地实现。此外,包含在其他部件内的部件的任何公开内容应当被视为在本质上是示例性的,因为可实施许多其他架构来实现相同功能。
在一些示例中,图1中的示例性系统100的全部或一部分可表示云计算环境或基于网络的环境的部分。云计算环境可经由互联网提供各种服务和应用程序。这些基于云的服务(例如,软件即服务、平台即服务、基础结构即服务等)可通过web浏览器或其他远程接口进行访问。本文所述的各种功能可通过远程桌面环境或任何其他基于云的计算环境提供。
在各种实施方案中,图1中的示例性系统100的全部或一部分可促进基于云的计算环境内的多租户应用。换句话讲,本文所述的软件模块可配置计算系统(例如,服务器)以促进本文所述功能中的一个或多个的多租户应用。例如,本文所述软件模块中的一个或多个软件模块可对服务器进行编程以允许两个或更多个客户端(例如,顾客)共享正在服务器上运行的应用程序。以这种方式编程的服务器可在多个顾客(即,租户)之间共享应用程序、操作系统、处理系统和/或存储系统。本文所述模块中的一个或多个模块还可为每个顾客分割多租户应用程序的数据和/或配置信息使得一个顾客不能访问另一个顾客的数据和/或配置信息。
根据各种实施方案,图1中的示例性系统100的全部或一部分可在虚拟环境内实现。例如,本文所述的模块和/或数据可在虚拟机内驻留和/或执行。如本文所用,术语“虚拟机”通常指由虚拟机管理器(例如,虚拟机监控程序)从计算硬件中抽象出来的任何操作系统环境。除此之外或另选地,本文所述的模块和/或数据可在虚拟化层内驻留和/或执行。如本文所用,术语“虚拟化层”通常指覆盖操作系统环境和/或从操作系统环境中抽象出来的任何数据层和/或应用层。虚拟化层可由软件虚拟化解决方案(例如,文件系统过滤器)管理,软件虚拟化解决方案将虚拟化层呈现为就好像它是底层基本操作系统的一部分。例如,软件虚拟化解决方案可将最初定向至基本文件系统和/或注册表内的位置的调用重定向至虚拟化层内的位置。
在一些示例中,图1中的示例性系统100的全部或一部分可表示移动计算环境的部分。移动计算环境可由多种移动计算设备来实现,这些设备包括移动电话、平板电脑、电子书阅读器、个人数字助理、可穿戴计算设备(例如,具有头戴式显示器的计算设备、智能手表等),等等。在一些示例中,移动计算环境可具有一个或多个区别特征,包括例如对电池供电的依赖、在任何给定时间只呈现一个前台应用程序、远程管理特征、触摸屏特征、位置和移动数据(例如,由全球定位系统、陀螺仪、加速度计等提供的)、限制对系统级配置的修改和/或限制第三方软件检查其他应用程序的行为的能力的受限平台、限制应用程序的安装的控制装置(例如,仅安装来源于经批准的应用程序商店的应用程序)等等。本文所述的各种功能可被提供用于移动计算环境和/或可与移动计算环境交互。
此外,图1中的示例性系统100的全部或一部分可表示一个或多个信息管理系统的部分,与一个或多个信息管理系统交互,使用由一个或多个信息管理系统产生的数据和/或产生被一个或多个信息管理系统使用的数据。如本文所用,术语“信息管理”可指数据的保护、组织和/或存储。信息管理系统的示例可包括但不限于:存储系统、备份系统、存档系统、复制系统、高可用性系统、数据搜索系统、虚拟化系统等。
在一些实施方案中,图1中的示例性系统100的全部或一部分可表示一个或多个信息安全系统的部分,产生受一个或多个信息安全系统保护的数据和/或与一个或多个信息安全系统通信。如本文所用,术语“信息安全”可指对受保护数据的访问的控制。信息安全系统的示例可包括而不限于:提供受管理的安全服务的系统、数据丢失防护系统、身份认证系统、访问控制系统、加密系统、策略遵循系统、入侵检测与防护系统、电子发现系统等等。
根据一些示例,图1中的示例性系统100的全部或一部分可表示一个或多个端点安全系统的部分、与一个或多个端点安全系统通信和/或受一个或多个端点安全系统保护。如本文所用,术语“端点安全”可指保护端点系统免遭未经授权以及/或者非法使用、访问和/或控制。端点保护系统的示例可包括而不限于:反恶意软件系统、用户认证系统、加密系统、保密系统、垃圾邮件过滤服务,等等。
本文描述和/或例示的过程参数和步骤序列仅通过举例的方式给出并且可根据需要改变。例如,虽然本文示出和/或描述的步骤可以特定顺序示出或讨论,但这些步骤不一定需要按例示或讨论的顺序来执行。本文描述和/或示出的各种示例性方法也可省略本文描述或示出的步骤中的一个或多个步骤,或者除了所公开的那些步骤之外还包括附加步骤。
虽然本文已经在全功能计算系统的上下文中描述和/或示出了各种实施方案,但这些示例性实施方案中的一个或多个实施方案可作为各种形式的程序产品来分配,而不考虑用于实际进行分配的计算机可读介质的特定类型。本文所公开的实施方案也可使用执行某些任务的软件模块来实现。这些软件模块可包括脚本、批文件或可存储在计算机可读存储介质上或计算系统中的其他可执行文件。在一些实施方案中,这些软件模块可将计算系统配置为执行本文所公开的示例性实施方案中的一个或多个实施方案。
此外,本文所述的模块中的一个或多个模块可将数据、物理设备和/或物理设备的表示从一种形式转换为另一种形式。除此之外或另选地,本文所述模块中的一个或多个模块可以通过在计算设备上执行、在计算设备上存储数据和/或以其他方式与计算设备交互,来将处理器、易失性存储器、非易失性存储器、和/或物理计算设备的任何其他部分从一种形式转换为另一种形式。
提供前面描述的目的是使本领域的其他技术人员能够最好地利用本文所公开的示例性实施方案的各种方面。该示例性描述并非旨在是详尽的或局限于所公开的任何精确形式。在不脱离本公开实质和范围的前提下,可进行许多修改和变化。本文所公开的实施方案在所有方面均应被视为示例性的而非限制性的。应当参考所附权利要求书及其等同形式来确定本公开的范围。
除非另有说明,否则在本说明书和权利要求中使用的术语“连接到”和“联接到”(以及其衍生形式)应该理解为允许直接和间接(即,经由其他元件或部件)连接。此外,在本说明书和权利要求中使用的术语“一”或“一个”应当理解为表示“......中的至少一者”。最后,为了易于使用,在本说明书和权利要求中使用的术语“包括”和“具有”(以及其衍生形式)与词语“包含”可互换并且与词语“包含”具有相同含义。
Claims (15)
1.一种用于识别嵌入式设备固件中的软件漏洞的计算机实现的方法,所述方法的至少一部分由包括至少一个处理器的计算设备来执行,所述方法包括:
收集物联网设备的固件图像;
从所述物联网设备的所述固件图像提取库依赖性;
通过检查基准真值数据库来识别在所述固件图像中指定的库的真值版本,所述基准真值数据库记录先前遇到的库的真值版本的确认值;并且
基于识别在所述固件图像中指定的所述库的所述真值版本来执行安全操作,以保护用户免受安全风险。
2.根据权利要求1所述的计算机实现的方法,其中从供应商网站收集所述物联网设备的所述固件图像。
3.根据权利要求2所述的计算机实现的方法,其中使用屏幕抓取部件从所述供应商网站收集所述物联网设备的所述固件图像。
4.根据权利要求3所述的计算机实现的方法,其中使用所述屏幕抓取部件由网络爬虫从所述供应商网站收集所述物联网设备的所述固件图像。
5.根据权利要求1所述的计算机实现的方法,其中从所述物联网设备的所述固件图像提取所述库依赖性包括从程序文件标头内的条目提取所述库依赖性。
6.根据权利要求5所述的计算机实现的方法,其中所述程序文件标头内的所述条目识别由对应的程序文件所请求的库。
7.根据权利要求1所述的计算机实现的方法,其中至少部分地通过从公共储存库收集用真值版本标记的库的二进制版本来生成所述基准真值数据库。
8.根据权利要求1所述的计算机实现的方法,其中至少部分地通过收集源代码版本来生成所述基准真值数据库。
9.根据权利要求1所述的计算机实现的方法,其中通过检查所述基准真值数据库来识别在所述固件图像中指定的所述库的所述真值版本包括:
提取在所述固件图像中指定的所述库的一组导出符号;
根据所述基准真值数据库,针对所述先前遇到的库产生的多组符号的列表来分别检查所提取的所述一组导出符号;并且
识别在所述固件图像中指定的所述库的所述一组导出符号与所述先前遇到的库产生的多组符号的所述列表中的条目之间的匹配。
10.根据权利要求1所述的计算机实现的方法,其中所述安全操作包括将所述固件图像的发布日期与所述固件图像中指定的所述库的所述真值版本的发布日期进行比较,以给出对所述物联网设备的维护程度的指示。
11.一种用于保护用户的系统,所述系统包括:
收集模块,所述收集模块存储在存储器中,所述收集模块收集物联网设备的固件图像;
提取模块,所述提取模块存储在存储器中,所述提取模块从所述物联网设备的所述固件图像提取库依赖性;
识别模块,所述识别模块存储在存储器中,所述识别模块通过检查基准真值数据库来识别在所述固件图像中指定的库的真值版本,所述基准真值数据库记录先前遇到的库的真值版本的确认值;
执行模块,所述执行模块存储在存储器中,所述执行模块基于识别在所述固件图像中指定的所述库的所述真值版本来执行安全操作,以保护用户免受安全风险;以及
至少一个物理处理器,所述至少一个物理处理器被配置为执行所述收集模块、所述提取模块、所述识别模块和所述执行模块。
12.根据权利要求11所述的系统,其中从供应商网站收集所述物联网设备的所述固件图像。
13.根据权利要求12所述的系统,其中所述收集模块被配置为使用屏幕抓取部件从所述供应商网站收集所述物联网设备的所述固件图像。
14.根据权利要求13所述的系统,其中作为网络爬虫的一部分,所述收集模块被配置为使用所述屏幕抓取部件从所述供应商网站收集所述物联网设备的所述固件图像。
15.一种非暂态计算机可读介质,包括一个或多个计算机可读指令,所述计算机可读指令在由计算设备的至少一个处理器执行时,使所述计算设备:
收集物联网设备的固件图像;
从所述物联网设备的所述固件图像提取库依赖性;
通过检查基准真值数据库来识别在所述固件图像中指定的库的真值版本,所述基准真值数据库记录先前遇到的库的真值版本的确认值;并且
基于识别在所述固件图像中指定的所述库的所述真值版本来执行安全操作,以保护用户免受安全风险。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/870,895 US20210350006A1 (en) | 2020-05-08 | 2020-05-08 | Systems and methods for identifying software vulnerabilities in embedded device firmware |
US16/870895 | 2020-05-08 | ||
PCT/US2021/030525 WO2021225991A1 (en) | 2020-05-08 | 2021-05-03 | Systems and methods for identifying software vulnerabilities in embedded device firmware |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115413342A true CN115413342A (zh) | 2022-11-29 |
Family
ID=76076507
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180027570.8A Pending CN115413342A (zh) | 2020-05-08 | 2021-05-03 | 用于识别嵌入式设备固件中的软件漏洞的系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20210350006A1 (zh) |
EP (1) | EP4147149A1 (zh) |
JP (1) | JP2023523162A (zh) |
CN (1) | CN115413342A (zh) |
WO (1) | WO2021225991A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115037526B (zh) * | 2022-05-19 | 2024-04-19 | 咪咕文化科技有限公司 | 反爬虫方法、装置、设备以及计算机存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5113699B2 (ja) * | 2008-09-24 | 2013-01-09 | 株式会社日立ソリューションズ | ファームウェア更新システム、及び更新イメージ生成・配布サーバ装置 |
JP5952218B2 (ja) * | 2013-05-16 | 2016-07-13 | 日本電信電話株式会社 | 情報処理装置および情報処理方法 |
JP2017173893A (ja) * | 2016-03-18 | 2017-09-28 | 株式会社リコー | 情報処理システム、更新方法、情報機器およびプログラム |
US9998484B1 (en) * | 2016-03-28 | 2018-06-12 | EMC IP Holding Company LLC | Classifying potentially malicious and benign software modules through similarity analysis |
US10943015B2 (en) * | 2018-03-22 | 2021-03-09 | ReFirm Labs, Inc. | Continuous monitoring for detecting firmware threats |
WO2020026228A1 (en) * | 2018-08-01 | 2020-02-06 | Vdoo Connected Trust Ltd. | Firmware verification |
US11657101B2 (en) * | 2020-01-13 | 2023-05-23 | Goldman Sachs & Co. LLC | Document information extraction system using sequenced comparators |
-
2020
- 2020-05-08 US US16/870,895 patent/US20210350006A1/en not_active Abandoned
-
2021
- 2021-05-03 CN CN202180027570.8A patent/CN115413342A/zh active Pending
- 2021-05-03 JP JP2022561103A patent/JP2023523162A/ja active Pending
- 2021-05-03 WO PCT/US2021/030525 patent/WO2021225991A1/en unknown
- 2021-05-03 EP EP21727710.2A patent/EP4147149A1/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
WO2021225991A1 (en) | 2021-11-11 |
JP2023523162A (ja) | 2023-06-02 |
EP4147149A1 (en) | 2023-03-15 |
US20210350006A1 (en) | 2021-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108351946B (zh) | 用于匿名化日志条目的系统和方法 | |
US9336384B2 (en) | Systems and methods for replacing application methods at runtime | |
US9330258B1 (en) | Systems and methods for identifying uniform resource locators that link to potentially malicious resources | |
US9571509B1 (en) | Systems and methods for identifying variants of samples based on similarity analysis | |
US10133865B1 (en) | Systems and methods for detecting malware | |
CN109074452B (zh) | 用于生成绊网文件的系统和方法 | |
US9043922B1 (en) | Systems and methods for determining malicious-attack exposure levels based on field-data analysis | |
EP3652668B1 (en) | Systems and methods for detecting vulnerabilities on servers | |
JP6122555B2 (ja) | 危殆化されている秘密鍵を識別するためのシステム及び方法 | |
US9178904B1 (en) | Systems and methods for detecting malicious browser-based scripts | |
US9973525B1 (en) | Systems and methods for determining the risk of information leaks from cloud-based services | |
US8621625B1 (en) | Methods and systems for detecting infected files | |
CN111356985A (zh) | 用于阻止恶意应用程序利用应用程序服务的系统和方法 | |
US9444829B1 (en) | Systems and methods for protecting computing resources based on logical data models | |
US10489587B1 (en) | Systems and methods for classifying files as specific types of malware | |
US10242201B1 (en) | Systems and methods for predicting security incidents triggered by security software | |
US11023580B1 (en) | Systems and methods for cross-product malware categorization | |
US10678917B1 (en) | Systems and methods for evaluating unfamiliar executables | |
US11095666B1 (en) | Systems and methods for detecting covert channels structured in internet protocol transactions | |
US9646157B1 (en) | Systems and methods for identifying repackaged files | |
US10339308B1 (en) | Systems and methods for remediating computer reliability issues | |
US9208314B1 (en) | Systems and methods for distinguishing code of a program obfuscated within a packed program | |
US10255435B1 (en) | Systems and methods for establishing a reputation for related program files | |
CN115413342A (zh) | 用于识别嵌入式设备固件中的软件漏洞的系统和方法 | |
US9501649B2 (en) | Systems and methods for determining potential impacts of applications on the security of computing systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: Arizona Applicant after: Keane Digital Co. Address before: Arizona Applicant before: Norton Weaver krypton |
|
CB02 | Change of applicant information |